@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
@@ -0,0 +1,627 @@
1
+ //#region presets/showcase.ts
2
+ /** Repository-relative root of the showcase project, used to build canonical source paths. */
3
+ const SHOWCASE_ROOT = "examples/email-showcase";
4
+ const showcaseProjects = [
5
+ {
6
+ id: "data-sharing-review",
7
+ entryPath: "emails/data-sharing-review.tsx",
8
+ files: [
9
+ "emails/data-sharing-review.css",
10
+ "emails/assets/data-sharing-review-connection.png",
11
+ "emails/assets/data-sharing-review-wordmark.png"
12
+ ],
13
+ provenance: { kind: "owned" },
14
+ category: "transactional",
15
+ gallerySlug: "data-sharing-review",
16
+ recordedAt: "2026-09-08T00:00:00.000Z"
17
+ },
18
+ {
19
+ id: "editorial-newsletter",
20
+ entryPath: "emails/editorial-newsletter.tsx",
21
+ files: [
22
+ "emails/editorial-newsletter.css",
23
+ "emails/assets/editorial-newsletter-author.png",
24
+ "emails/assets/editorial-newsletter-hero.png",
25
+ "emails/assets/editorial-newsletter-sponsor.png",
26
+ "emails/assets/editorial-newsletter-wordmark.png"
27
+ ],
28
+ provenance: { kind: "owned" },
29
+ category: "digest",
30
+ gallerySlug: "editorial-newsletter",
31
+ recordedAt: "2026-09-08T00:00:00.000Z"
32
+ },
33
+ {
34
+ id: "email-verification",
35
+ entryPath: "emails/email-verification.tsx",
36
+ files: [
37
+ "emails/email-verification.css",
38
+ "emails/assets/email-verification-badge.png",
39
+ "emails/assets/email-verification-wordmark.png"
40
+ ],
41
+ provenance: { kind: "owned" },
42
+ category: "transactional",
43
+ gallerySlug: "email-verification",
44
+ recordedAt: "2026-09-08T00:00:00.000Z"
45
+ },
46
+ {
47
+ id: "events-roundup",
48
+ entryPath: "emails/events-roundup.tsx",
49
+ files: [
50
+ "emails/events-roundup.css",
51
+ "emails/assets/events-roundup-spotlight.png",
52
+ "emails/assets/events-roundup-tile-five.png",
53
+ "emails/assets/events-roundup-tile-four.png",
54
+ "emails/assets/events-roundup-tile-one.png",
55
+ "emails/assets/events-roundup-tile-six.png",
56
+ "emails/assets/events-roundup-tile-three.png",
57
+ "emails/assets/events-roundup-tile-two.png",
58
+ "emails/assets/events-roundup-wordmark.png"
59
+ ],
60
+ provenance: { kind: "owned" },
61
+ category: "digest",
62
+ gallerySlug: "events-roundup",
63
+ recordedAt: "2026-09-08T00:00:00.000Z"
64
+ },
65
+ {
66
+ id: "feature-release-roundup",
67
+ entryPath: "emails/feature-release-roundup.tsx",
68
+ files: [
69
+ "emails/feature-release-roundup.css",
70
+ "emails/assets/feature-release-roundup-release-activity.png",
71
+ "emails/assets/feature-release-roundup-release-branching.png",
72
+ "emails/assets/feature-release-roundup-release-keys.png",
73
+ "emails/assets/feature-release-roundup-release-nodes.png",
74
+ "emails/assets/feature-release-roundup-release-regions.png",
75
+ "emails/assets/feature-release-roundup-wordmark.png"
76
+ ],
77
+ provenance: { kind: "owned" },
78
+ category: "marketing",
79
+ gallerySlug: "feature-release-roundup",
80
+ recordedAt: "2026-09-08T00:00:00.000Z"
81
+ },
82
+ {
83
+ id: "feedback-request",
84
+ entryPath: "emails/feedback-request.tsx",
85
+ files: [
86
+ "emails/feedback-request.css",
87
+ "emails/assets/feedback-request-avatar.png",
88
+ "emails/assets/feedback-request-wordmark.png"
89
+ ],
90
+ provenance: { kind: "owned" },
91
+ category: "lifecycle",
92
+ gallerySlug: "feedback-request",
93
+ recordedAt: "2026-09-08T00:00:00.000Z"
94
+ },
95
+ {
96
+ id: "flash-getaway-offer",
97
+ entryPath: "emails/flash-getaway-offer.tsx",
98
+ files: [
99
+ "emails/flash-getaway-offer.css",
100
+ "emails/assets/flash-getaway-offer-banner.png",
101
+ "emails/assets/flash-getaway-offer-city-harbour.png",
102
+ "emails/assets/flash-getaway-offer-desert-canyon.png",
103
+ "emails/assets/flash-getaway-offer-reef-bay.png",
104
+ "emails/assets/flash-getaway-offer-snow-ridge.png",
105
+ "emails/assets/flash-getaway-offer-wordmark.png"
106
+ ],
107
+ provenance: { kind: "owned" },
108
+ category: "marketing",
109
+ gallerySlug: "flash-getaway-offer",
110
+ recordedAt: "2026-09-08T00:00:00.000Z"
111
+ },
112
+ {
113
+ id: "industry-news-digest",
114
+ entryPath: "emails/industry-news-digest.tsx",
115
+ files: [
116
+ "emails/industry-news-digest.css",
117
+ "emails/assets/industry-news-digest-lead.png",
118
+ "emails/assets/industry-news-digest-sponsor.png",
119
+ "emails/assets/industry-news-digest-wordmark.png"
120
+ ],
121
+ provenance: { kind: "owned" },
122
+ category: "digest",
123
+ gallerySlug: "industry-news-digest",
124
+ recordedAt: "2026-09-08T00:00:00.000Z"
125
+ },
126
+ {
127
+ id: "rewards-milestone",
128
+ entryPath: "emails/rewards-milestone.tsx",
129
+ files: [
130
+ "emails/assets/rewards-milestone-banner.png",
131
+ "emails/assets/rewards-milestone-tier-amber.png",
132
+ "emails/assets/rewards-milestone-tier-brass.png",
133
+ "emails/assets/rewards-milestone-tier-copper.png",
134
+ "emails/assets/rewards-milestone-tier-slate.png",
135
+ "emails/assets/rewards-milestone-wordmark.png",
136
+ "emails/rewards-milestone.css"
137
+ ],
138
+ provenance: { kind: "owned" },
139
+ category: "marketing",
140
+ gallerySlug: "rewards-milestone",
141
+ recordedAt: "2026-09-08T00:00:00.000Z"
142
+ },
143
+ {
144
+ id: "member-referral-offer",
145
+ entryPath: "emails/member-referral-offer.tsx",
146
+ files: [
147
+ "emails/assets/member-referral-offer-hero.png",
148
+ "emails/assets/member-referral-offer-step-earn.png",
149
+ "emails/assets/member-referral-offer-step-join.png",
150
+ "emails/assets/member-referral-offer-step-share.png",
151
+ "emails/assets/member-referral-offer-wordmark.png",
152
+ "emails/member-referral-offer.css"
153
+ ],
154
+ provenance: { kind: "owned" },
155
+ category: "marketing",
156
+ gallerySlug: "member-referral-offer",
157
+ recordedAt: "2026-09-08T00:00:00.000Z"
158
+ },
159
+ {
160
+ id: "catalog-sale-newsletter",
161
+ entryPath: "emails/catalog-sale-newsletter.tsx",
162
+ files: [
163
+ "emails/assets/catalog-sale-newsletter-banner.png",
164
+ "emails/assets/catalog-sale-newsletter-item-blanket.png",
165
+ "emails/assets/catalog-sale-newsletter-item-crate.png",
166
+ "emails/assets/catalog-sale-newsletter-item-kettle.png",
167
+ "emails/assets/catalog-sale-newsletter-item-lantern.png",
168
+ "emails/assets/catalog-sale-newsletter-wordmark.png",
169
+ "emails/catalog-sale-newsletter.css"
170
+ ],
171
+ provenance: { kind: "owned" },
172
+ category: "marketing",
173
+ gallerySlug: "catalog-sale-newsletter",
174
+ recordedAt: "2026-09-08T00:00:00.000Z"
175
+ },
176
+ {
177
+ id: "event-invite",
178
+ entryPath: "emails/event-invite.tsx",
179
+ files: [
180
+ "emails/assets/event-invite-hero.png",
181
+ "emails/assets/event-invite-wordmark.png",
182
+ "emails/event-invite.css"
183
+ ],
184
+ provenance: { kind: "owned" },
185
+ category: "marketing",
186
+ gallerySlug: "event-invite",
187
+ recordedAt: "2026-09-08T00:00:00.000Z"
188
+ },
189
+ {
190
+ id: "limited-time-savings",
191
+ entryPath: "emails/limited-time-savings.tsx",
192
+ files: [
193
+ "emails/assets/limited-time-savings-banner.png",
194
+ "emails/assets/limited-time-savings-wordmark.png",
195
+ "emails/limited-time-savings.css"
196
+ ],
197
+ provenance: { kind: "owned" },
198
+ category: "marketing",
199
+ gallerySlug: "limited-time-savings",
200
+ recordedAt: "2026-09-08T00:00:00.000Z"
201
+ },
202
+ {
203
+ id: "membership-promo",
204
+ entryPath: "emails/membership-promo.tsx",
205
+ files: [
206
+ "emails/assets/membership-promo-hero.png",
207
+ "emails/assets/membership-promo-tier-cellar.png",
208
+ "emails/assets/membership-promo-tier-market.png",
209
+ "emails/assets/membership-promo-tier-pantry.png",
210
+ "emails/assets/membership-promo-wordmark.png",
211
+ "emails/membership-promo.css"
212
+ ],
213
+ provenance: { kind: "owned" },
214
+ category: "marketing",
215
+ gallerySlug: "membership-promotion",
216
+ recordedAt: "2026-09-08T00:00:00.000Z"
217
+ },
218
+ {
219
+ id: "announcement",
220
+ entryPath: "emails/announcement.tsx",
221
+ files: [
222
+ "emails/announcement.css",
223
+ "emails/assets/announcement-hero.png",
224
+ "emails/assets/announcement-wordmark.png"
225
+ ],
226
+ provenance: { kind: "owned" },
227
+ category: "marketing",
228
+ gallerySlug: "feature-announcement",
229
+ recordedAt: "2026-09-08T00:00:00.000Z"
230
+ },
231
+ {
232
+ id: "linear-login-code",
233
+ entryPath: "emails/linear-login-code.tsx",
234
+ files: [
235
+ "emails/linear-login-code.css",
236
+ "README.md",
237
+ "emails/assets/linear-logo.png"
238
+ ],
239
+ provenance: {
240
+ kind: "brand-recreation",
241
+ brand: "Linear",
242
+ subject: "login code",
243
+ reviewedNote: "Reviewed recreation of Linear's login code email, its canonical project assets, and its brand attribution."
244
+ },
245
+ category: "transactional",
246
+ gallerySlug: "linear-login-code",
247
+ recordedAt: "2026-09-08T00:00:00.000Z"
248
+ },
249
+ {
250
+ id: "membership-benefits-promo",
251
+ entryPath: "emails/membership-benefits-promo.tsx",
252
+ files: [
253
+ "emails/membership-benefits-promo.css",
254
+ "emails/assets/membership-benefits-promo-icon-concierge.png",
255
+ "emails/assets/membership-benefits-promo-icon-lounge.png",
256
+ "emails/assets/membership-benefits-promo-icon-shield.png",
257
+ "emails/assets/membership-benefits-promo-icon-suitcase.png",
258
+ "emails/assets/membership-benefits-promo-icon-table.png",
259
+ "emails/assets/membership-benefits-promo-icon-ticket.png",
260
+ "emails/assets/membership-benefits-promo-panel.png",
261
+ "emails/assets/membership-benefits-promo-wordmark.png"
262
+ ],
263
+ provenance: { kind: "owned" },
264
+ category: "marketing",
265
+ gallerySlug: "membership-benefits-promo",
266
+ recordedAt: "2026-09-08T00:00:00.000Z"
267
+ },
268
+ {
269
+ id: "notification",
270
+ entryPath: "emails/notification.tsx",
271
+ files: [
272
+ "emails/notification.css",
273
+ "emails/assets/notification-avatar-one.png",
274
+ "emails/assets/notification-avatar-three.png",
275
+ "emails/assets/notification-avatar-two.png",
276
+ "emails/assets/notification-wordmark.png"
277
+ ],
278
+ provenance: { kind: "owned" },
279
+ category: "transactional",
280
+ gallerySlug: "activity-notification",
281
+ recordedAt: "2026-09-08T00:00:00.000Z"
282
+ },
283
+ {
284
+ id: "onboarding-step",
285
+ entryPath: "emails/onboarding-step.tsx",
286
+ files: [
287
+ "emails/onboarding-step.css",
288
+ "emails/assets/onboarding-step-illustration.png",
289
+ "emails/assets/onboarding-step-wordmark.png"
290
+ ],
291
+ provenance: { kind: "owned" },
292
+ category: "lifecycle",
293
+ gallerySlug: "onboarding-step",
294
+ recordedAt: "2026-09-08T00:00:00.000Z"
295
+ },
296
+ {
297
+ id: "order-receipt",
298
+ entryPath: "emails/order-receipt.tsx",
299
+ files: [
300
+ "emails/order-receipt.css",
301
+ "emails/assets/order-receipt-candles.png",
302
+ "emails/assets/order-receipt-mug.png",
303
+ "emails/assets/order-receipt-napkins.png",
304
+ "emails/assets/order-receipt-throw.png",
305
+ "emails/assets/order-receipt-wordmark.png"
306
+ ],
307
+ provenance: { kind: "owned" },
308
+ category: "transactional",
309
+ gallerySlug: "order-receipt",
310
+ recordedAt: "2026-09-08T00:00:00.000Z"
311
+ },
312
+ {
313
+ id: "otp",
314
+ entryPath: "emails/otp.tsx",
315
+ files: ["emails/otp.css", "emails/assets/otp-wordmark.png"],
316
+ provenance: { kind: "owned" },
317
+ category: "transactional",
318
+ gallerySlug: "one-time-passcode",
319
+ recordedAt: "2026-09-08T00:00:00.000Z"
320
+ },
321
+ {
322
+ id: "password-reset",
323
+ entryPath: "emails/password-reset.tsx",
324
+ files: [
325
+ "emails/password-reset.css",
326
+ "emails/assets/password-reset-lock.png",
327
+ "emails/assets/password-reset-wordmark.png"
328
+ ],
329
+ provenance: { kind: "owned" },
330
+ category: "transactional",
331
+ gallerySlug: "password-reset",
332
+ recordedAt: "2026-09-08T00:00:00.000Z"
333
+ },
334
+ {
335
+ id: "payment-failed",
336
+ entryPath: "emails/payment-failed.tsx",
337
+ files: [
338
+ "emails/payment-failed.css",
339
+ "emails/assets/payment-failed-bowls.png",
340
+ "emails/assets/payment-failed-kettle.png",
341
+ "emails/assets/payment-failed-tray.png",
342
+ "emails/assets/payment-failed-wordmark.png"
343
+ ],
344
+ provenance: { kind: "owned" },
345
+ category: "transactional",
346
+ gallerySlug: "payment-failed",
347
+ recordedAt: "2026-09-08T00:00:00.000Z"
348
+ },
349
+ {
350
+ id: "product-digest",
351
+ entryPath: "emails/product-digest.tsx",
352
+ files: [
353
+ "emails/product-digest.css",
354
+ "emails/assets/product-digest-podcast.png",
355
+ "emails/assets/product-digest-wordmark.png"
356
+ ],
357
+ provenance: { kind: "owned" },
358
+ category: "digest",
359
+ gallerySlug: "product-digest",
360
+ recordedAt: "2026-09-08T00:00:00.000Z"
361
+ },
362
+ {
363
+ id: "product-launch-promo",
364
+ entryPath: "emails/product-launch-promo.tsx",
365
+ files: [
366
+ "emails/product-launch-promo.css",
367
+ "emails/assets/oakline-hero.png",
368
+ "emails/assets/oakline-wordmark.png",
369
+ "emails/assets/product-chair.png",
370
+ "emails/assets/product-lamp.png",
371
+ "emails/assets/product-mirror.png",
372
+ "emails/assets/product-stool.png",
373
+ "emails/assets/product-throw.png",
374
+ "emails/assets/product-vase.png"
375
+ ],
376
+ provenance: { kind: "owned" },
377
+ category: "marketing",
378
+ gallerySlug: "product-launch-promotion",
379
+ recordedAt: "2026-09-08T00:00:00.000Z"
380
+ },
381
+ {
382
+ id: "product-newsletter",
383
+ entryPath: "emails/product-newsletter.tsx",
384
+ files: [
385
+ "emails/product-newsletter.css",
386
+ "emails/assets/newsletter-lead.png",
387
+ "emails/assets/newsletter-story-five.png",
388
+ "emails/assets/newsletter-story-four.png",
389
+ "emails/assets/newsletter-story-one.png",
390
+ "emails/assets/newsletter-story-three.png",
391
+ "emails/assets/newsletter-story-two.png",
392
+ "emails/assets/newsletter-wordmark.png"
393
+ ],
394
+ provenance: { kind: "owned" },
395
+ category: "digest",
396
+ gallerySlug: "product-newsletter",
397
+ recordedAt: "2026-09-08T00:00:00.000Z"
398
+ },
399
+ {
400
+ id: "product-onboarding-tour",
401
+ entryPath: "emails/product-onboarding-tour.tsx",
402
+ files: [
403
+ "emails/product-onboarding-tour.css",
404
+ "emails/assets/product-onboarding-tour-feature-alerts.png",
405
+ "emails/assets/product-onboarding-tour-feature-digest.png",
406
+ "emails/assets/product-onboarding-tour-feature-questions.png",
407
+ "emails/assets/product-onboarding-tour-read-alerts.png",
408
+ "emails/assets/product-onboarding-tour-read-metrics.png",
409
+ "emails/assets/product-onboarding-tour-wordmark.png"
410
+ ],
411
+ provenance: { kind: "owned" },
412
+ category: "lifecycle",
413
+ gallerySlug: "product-onboarding-tour",
414
+ recordedAt: "2026-09-08T00:00:00.000Z"
415
+ },
416
+ {
417
+ id: "product-updates-roundup",
418
+ entryPath: "emails/product-updates-roundup.tsx",
419
+ files: [
420
+ "emails/product-updates-roundup.css",
421
+ "emails/assets/product-updates-roundup-access-matrix.png",
422
+ "emails/assets/product-updates-roundup-import-pipeline.png",
423
+ "emails/assets/product-updates-roundup-query-timeline.png",
424
+ "emails/assets/product-updates-roundup-status-board.png",
425
+ "emails/assets/product-updates-roundup-usage-chart.png",
426
+ "emails/assets/product-updates-roundup-webhook-retry.png",
427
+ "emails/assets/product-updates-roundup-wordmark.png"
428
+ ],
429
+ provenance: { kind: "owned" },
430
+ category: "marketing",
431
+ gallerySlug: "product-updates-roundup",
432
+ recordedAt: "2026-09-08T00:00:00.000Z"
433
+ },
434
+ {
435
+ id: "season-clearance-promo",
436
+ entryPath: "emails/season-clearance-promo.tsx",
437
+ files: [
438
+ "emails/season-clearance-promo.css",
439
+ "emails/assets/season-clearance-promo-banner.png",
440
+ "emails/assets/season-clearance-promo-cushions.png",
441
+ "emails/assets/season-clearance-promo-planter.png",
442
+ "emails/assets/season-clearance-promo-secondary.png",
443
+ "emails/assets/season-clearance-promo-side-table.png",
444
+ "emails/assets/season-clearance-promo-wall-clock.png",
445
+ "emails/assets/season-clearance-promo-wordmark.png"
446
+ ],
447
+ provenance: { kind: "owned" },
448
+ category: "marketing",
449
+ gallerySlug: "season-clearance-promo",
450
+ recordedAt: "2026-09-08T00:00:00.000Z"
451
+ },
452
+ {
453
+ id: "seasonal-sale-flyer",
454
+ entryPath: "emails/seasonal-sale-flyer.tsx",
455
+ files: [
456
+ "emails/seasonal-sale-flyer.css",
457
+ "emails/assets/seasonal-sale-flyer-bedding.png",
458
+ "emails/assets/seasonal-sale-flyer-cookware.png",
459
+ "emails/assets/seasonal-sale-flyer-hero.png",
460
+ "emails/assets/seasonal-sale-flyer-lighting.png",
461
+ "emails/assets/seasonal-sale-flyer-outdoor.png",
462
+ "emails/assets/seasonal-sale-flyer-storage.png",
463
+ "emails/assets/seasonal-sale-flyer-tableware.png",
464
+ "emails/assets/seasonal-sale-flyer-wordmark.png"
465
+ ],
466
+ provenance: { kind: "owned" },
467
+ category: "marketing",
468
+ gallerySlug: "seasonal-sale-flyer",
469
+ recordedAt: "2026-09-08T00:00:00.000Z"
470
+ },
471
+ {
472
+ id: "setup-checklist",
473
+ entryPath: "emails/setup-checklist.tsx",
474
+ files: [
475
+ "emails/setup-checklist.css",
476
+ "emails/assets/setup-checklist-step-invite.png",
477
+ "emails/assets/setup-checklist-step-publish.png",
478
+ "emails/assets/setup-checklist-step-source.png",
479
+ "emails/assets/setup-checklist-wordmark.png"
480
+ ],
481
+ provenance: { kind: "owned" },
482
+ category: "lifecycle",
483
+ gallerySlug: "setup-checklist",
484
+ recordedAt: "2026-09-08T00:00:00.000Z"
485
+ },
486
+ {
487
+ id: "shipping-update",
488
+ entryPath: "emails/shipping-update.tsx",
489
+ files: [
490
+ "emails/shipping-update.css",
491
+ "emails/assets/shipping-update-runner.png",
492
+ "emails/assets/shipping-update-teapot.png",
493
+ "emails/assets/shipping-update-tumblers.png",
494
+ "emails/assets/shipping-update-wordmark.png"
495
+ ],
496
+ provenance: { kind: "owned" },
497
+ category: "transactional",
498
+ gallerySlug: "shipping-update",
499
+ recordedAt: "2026-09-08T00:00:00.000Z"
500
+ },
501
+ {
502
+ id: "team-invite",
503
+ entryPath: "emails/team-invite.tsx",
504
+ files: [
505
+ "emails/team-invite.css",
506
+ "emails/assets/team-invite-inviter.png",
507
+ "emails/assets/team-invite-teammate-one.png",
508
+ "emails/assets/team-invite-teammate-three.png",
509
+ "emails/assets/team-invite-teammate-two.png",
510
+ "emails/assets/team-invite-wordmark.png"
511
+ ],
512
+ provenance: { kind: "owned" },
513
+ category: "transactional",
514
+ gallerySlug: "team-invite",
515
+ recordedAt: "2026-09-08T00:00:00.000Z"
516
+ },
517
+ {
518
+ id: "travel-rewards-promo",
519
+ entryPath: "emails/travel-rewards-promo.tsx",
520
+ files: [
521
+ "emails/travel-rewards-promo.css",
522
+ "emails/assets/travel-rewards-promo-hero.png",
523
+ "emails/assets/travel-rewards-promo-partner-dining.png",
524
+ "emails/assets/travel-rewards-promo-partner-drives.png",
525
+ "emails/assets/travel-rewards-promo-partner-lounges.png",
526
+ "emails/assets/travel-rewards-promo-partner-stays.png",
527
+ "emails/assets/travel-rewards-promo-wordmark.png"
528
+ ],
529
+ provenance: { kind: "owned" },
530
+ category: "marketing",
531
+ gallerySlug: "travel-rewards-promo",
532
+ recordedAt: "2026-09-08T00:00:00.000Z"
533
+ },
534
+ {
535
+ id: "trial-ending",
536
+ entryPath: "emails/trial-ending.tsx",
537
+ files: [
538
+ "emails/trial-ending.css",
539
+ "emails/assets/trial-ending-countdown.png",
540
+ "emails/assets/trial-ending-wordmark.png"
541
+ ],
542
+ provenance: { kind: "owned" },
543
+ category: "lifecycle",
544
+ gallerySlug: "trial-ending",
545
+ recordedAt: "2026-09-08T00:00:00.000Z"
546
+ },
547
+ {
548
+ id: "vercel-invitation",
549
+ entryPath: "emails/vercel-invitation.tsx",
550
+ files: [
551
+ "emails/vercel-invitation.css",
552
+ "README.md",
553
+ "emails/assets/vercel-arrow.png",
554
+ "emails/assets/vercel-logo.png",
555
+ "emails/assets/vercel-team.png",
556
+ "emails/assets/vercel-user.png"
557
+ ],
558
+ provenance: {
559
+ kind: "brand-recreation",
560
+ brand: "Vercel",
561
+ subject: "team invitation",
562
+ reviewedNote: "Reviewed recreation of Vercel's team invitation email, its canonical project assets, and its brand attribution."
563
+ },
564
+ category: "transactional",
565
+ gallerySlug: "vercel-team-invitation",
566
+ recordedAt: "2026-09-08T00:00:00.000Z"
567
+ },
568
+ {
569
+ id: "weekly-deals-circular",
570
+ entryPath: "emails/weekly-deals-circular.tsx",
571
+ files: [
572
+ "emails/weekly-deals-circular.css",
573
+ "emails/assets/weekly-deals-circular-banner.png",
574
+ "emails/assets/weekly-deals-circular-basket.png",
575
+ "emails/assets/weekly-deals-circular-board.png",
576
+ "emails/assets/weekly-deals-circular-bowls.png",
577
+ "emails/assets/weekly-deals-circular-duvet.png",
578
+ "emails/assets/weekly-deals-circular-kettle.png",
579
+ "emails/assets/weekly-deals-circular-rug.png",
580
+ "emails/assets/weekly-deals-circular-wordmark.png"
581
+ ],
582
+ provenance: { kind: "owned" },
583
+ category: "marketing",
584
+ gallerySlug: "weekly-deals-circular",
585
+ recordedAt: "2026-09-08T00:00:00.000Z"
586
+ },
587
+ {
588
+ id: "welcome",
589
+ entryPath: "emails/welcome.tsx",
590
+ files: [
591
+ "emails/welcome.css",
592
+ "emails/assets/welcome-hero.png",
593
+ "emails/assets/welcome-wordmark.png"
594
+ ],
595
+ provenance: { kind: "owned" },
596
+ category: "transactional",
597
+ gallerySlug: "welcome-email",
598
+ recordedAt: "2026-09-08T00:00:00.000Z"
599
+ },
600
+ {
601
+ id: "win-back",
602
+ entryPath: "emails/win-back.tsx",
603
+ files: [
604
+ "emails/win-back.css",
605
+ "emails/assets/win-back-update-alerts.png",
606
+ "emails/assets/win-back-update-exports.png",
607
+ "emails/assets/win-back-update-mobile.png",
608
+ "emails/assets/win-back-update-speed.png",
609
+ "emails/assets/win-back-update-workspaces.png",
610
+ "emails/assets/win-back-wordmark.png"
611
+ ],
612
+ provenance: { kind: "owned" },
613
+ category: "lifecycle",
614
+ gallerySlug: "win-back",
615
+ recordedAt: "2026-09-08T00:00:00.000Z"
616
+ }
617
+ ];
618
+ const isShowcaseProjectId = (id) => showcaseProjects.some((project) => project.id === id);
619
+ const showcaseProject = (id) => showcaseProjects.find((project) => project.id === id);
620
+ /** Repository-relative path of a showcase project's TSX entry. */
621
+ const showcaseSourcePath = (project) => `${SHOWCASE_ROOT}/${project.entryPath}`;
622
+ /** Every file the project bundles, entry first in sorted order — the shape codegen writes. */
623
+ const showcaseProjectPaths = (project) => [project.entryPath, ...project.files].sort((left, right) => left.localeCompare(right));
624
+ //#endregion
625
+ export { SHOWCASE_ROOT, isShowcaseProjectId, showcaseProject, showcaseProjectPaths, showcaseProjects, showcaseSourcePath };
626
+
627
+ //# sourceMappingURL=showcase.js.map
@@ -27,7 +27,7 @@ declare const presetEmailAssets: Readonly<Record<string, ReadonlyArray<string>>>
27
27
  /** Canonical TSX entry source, loaded on demand by authoring surfaces. */
28
28
  declare const presetModuleSources: Readonly<Record<string, string>>;
29
29
  declare const presetModuleDigests: Readonly<Record<string, string>>;
30
- declare const presetModuleManifestDigest = "b2b55659bcb164b0b0269010d7644aabd17b9b2cae1bcdbaad6e6cfee303945a";
30
+ declare const presetModuleManifestDigest = "63da21459954795b60bc1332032fa55b9db8ba829dadbad73faecd0db73d864f";
31
31
  /** SML belongs only to the gated SMS and WhatsApp template compilers. */
32
32
  declare const structuredPresetSources: Readonly<Record<string, string>>;
33
33
  /** Gallery snapshots generated by executing each declared fixture with actual input. */