@samva/markup 0.1.2 → 0.3.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 (93) hide show
  1. package/AGENTS.md +25 -5
  2. package/README.md +92 -26
  3. package/dist/{ast-DAhnAvQN.d.ts → ast-63I-VLQx.d.ts} +15 -2
  4. package/dist/ast.d.ts +2 -2
  5. package/dist/ast.js +14 -1
  6. package/dist/{checks-D-zFQt5R.js → checks-DXuERO4B.js} +36 -2
  7. package/dist/checks.d.ts +8 -1
  8. package/dist/checks.js +2 -2
  9. package/dist/compile-sms.d.ts +2 -2
  10. package/dist/compile-whatsapp.d.ts +2 -2
  11. package/dist/compile.d.ts +9 -84
  12. package/dist/compile.js +11 -920
  13. package/dist/compiler.d.ts +303 -0
  14. package/dist/compiler.js +1390 -0
  15. package/dist/components.d.ts +3 -3
  16. package/dist/corpus-qrUD5O6r.d.ts +254 -0
  17. package/dist/css-ar2lU3NC.d.ts +84 -0
  18. package/dist/diagnostics-Djd9ckLg.d.ts +90 -0
  19. package/dist/diagnostics.js +4 -1
  20. package/dist/elements-DtwKlFVH.d.ts +820 -0
  21. package/dist/email/components.d.ts +125 -0
  22. package/dist/email/components.js +210 -0
  23. package/dist/email/diagnostics.d.ts +2 -0
  24. package/dist/email/diagnostics.js +56 -0
  25. package/dist/email/elements.d.ts +2 -0
  26. package/dist/email/elements.js +299 -0
  27. package/dist/email/html.d.ts +42 -0
  28. package/dist/email/html.js +266 -0
  29. package/dist/email/jsx-dev-runtime.d.ts +26 -0
  30. package/dist/email/jsx-dev-runtime.js +12 -0
  31. package/dist/email/jsx-runtime.d.ts +2 -0
  32. package/dist/email/jsx-runtime.js +60 -0
  33. package/dist/email/render.d.ts +43 -0
  34. package/dist/email/render.js +6 -0
  35. package/dist/email/selection.d.ts +102 -0
  36. package/dist/email/selection.js +143 -0
  37. package/dist/email/source-edit.d.ts +67 -0
  38. package/dist/email/source-edit.js +185 -0
  39. package/dist/email/stylesheets.d.ts +15 -0
  40. package/dist/email/stylesheets.js +45 -0
  41. package/dist/email/text.d.ts +7 -0
  42. package/dist/email/text.js +100 -0
  43. package/dist/emit.d.ts +13 -12
  44. package/dist/emit.js +63 -63
  45. package/dist/input-schema-BIfzI63B.d.ts +23 -0
  46. package/dist/input-schema.d.ts +2 -0
  47. package/dist/input-schema.js +170 -0
  48. package/dist/jsx-dev-runtime.d.ts +4 -3
  49. package/dist/jsx-dev-runtime.js +9 -1
  50. package/dist/{jsx-runtime-eNIMY87F.d.ts → jsx-runtime-C5k_Zq0A.d.ts} +3 -3
  51. package/dist/jsx-runtime.d.ts +1 -1
  52. package/dist/jsx-runtime.js +20 -1
  53. package/dist/model.d.ts +1 -1
  54. package/dist/ops.d.ts +1 -1
  55. package/dist/ops.js +1 -1
  56. package/dist/{parser-DkQKIjDa.d.ts → parser-CGBS73Gz.d.ts} +2 -2
  57. package/dist/parser.d.ts +1 -1
  58. package/dist/presets/category-mapping.d.ts +1 -1
  59. package/dist/presets/corpus.d.ts +2 -0
  60. package/dist/presets/corpus.js +247 -0
  61. package/dist/presets/public-gallery.d.ts +290 -2
  62. package/dist/presets/public-gallery.js +428 -6
  63. package/dist/presets/public-handoff.d.ts +164 -2
  64. package/dist/presets/public-handoff.js +229 -61
  65. package/dist/presets/public-preview-artifacts.d.ts +2 -2
  66. package/dist/presets/public-preview-artifacts.js +25 -31
  67. package/dist/presets/public-preview.d.ts +65 -2
  68. package/dist/presets/public-preview.js +402 -1152
  69. package/dist/presets/sources.d.ts +35 -4
  70. package/dist/presets/sources.js +2328 -43
  71. package/dist/presets.d.ts +39 -5
  72. package/dist/presets.js +96 -0
  73. package/dist/printer.d.ts +1 -1
  74. package/dist/render-template.d.ts +5 -2
  75. package/dist/render-template.js +3 -1
  76. package/dist/render-ykQhtMs_.js +592 -0
  77. package/dist/source-locations-BCJQnIfU.d.ts +89 -0
  78. package/dist/source-locations.d.ts +2 -0
  79. package/dist/source-locations.js +125 -0
  80. package/dist/template-Dy5yOPyp.d.ts +60 -0
  81. package/dist/template.d.ts +2 -0
  82. package/dist/template.js +37 -0
  83. package/dist/tsx-source-instrumentation.d.ts +23 -0
  84. package/dist/tsx-source-instrumentation.js +97 -0
  85. package/dist/tsx-tracer.d.ts +116 -0
  86. package/dist/tsx-tracer.js +985 -0
  87. package/generated/sml-agent-contract.json +574 -782
  88. package/generated/sml-email-agent-contract.json +502 -677
  89. package/generated/sml-email-language-reference.md +94 -160
  90. package/generated/sml-language-reference.md +195 -220
  91. package/package.json +111 -9
  92. package/dist/public-gallery-D0Zv0pZE.d.ts +0 -611
  93. package/dist/public-preview-u1Z9aaGq.d.ts +0 -1168
@@ -0,0 +1,247 @@
1
+ import { presetCatalog } from "../presets.js";
2
+ import { Result, Schema } from "effect";
3
+ //#region presets/corpus.ts
4
+ const TemplateCorpusKind = Schema.Literals([
5
+ "owned-editable-sml",
6
+ "brand-recreation-sml",
7
+ "inspiration-reference"
8
+ ]);
9
+ const templateFacetOptions = {
10
+ jobType: [
11
+ "account-access",
12
+ "commerce",
13
+ "product-communication",
14
+ "lifecycle",
15
+ "publishing-campaigns"
16
+ ],
17
+ lifecycle: [
18
+ "acquisition",
19
+ "activation",
20
+ "engagement",
21
+ "transaction",
22
+ "retention",
23
+ "recovery"
24
+ ],
25
+ industry: [
26
+ "saas",
27
+ "ecommerce",
28
+ "developer-tools",
29
+ "newsletters-media"
30
+ ],
31
+ season: ["evergreen", "seasonal"],
32
+ audience: [
33
+ "product-users",
34
+ "customers",
35
+ "members",
36
+ "readers",
37
+ "shoppers",
38
+ "teams"
39
+ ],
40
+ design: [
41
+ "minimal",
42
+ "branded",
43
+ "editorial",
44
+ "data-heavy",
45
+ "single-cta"
46
+ ],
47
+ brandProvenance: ["samva-original", "third-party-reference"]
48
+ };
49
+ const JobTypeFacet = Schema.Literals(templateFacetOptions.jobType);
50
+ const LifecycleFacet = Schema.Literals(templateFacetOptions.lifecycle);
51
+ const IndustryFacet = Schema.Literals(templateFacetOptions.industry);
52
+ const SeasonFacet = Schema.Literals(templateFacetOptions.season);
53
+ const AudienceFacet = Schema.Literals(templateFacetOptions.audience);
54
+ const DesignFacet = Schema.Literals(templateFacetOptions.design);
55
+ const BrandProvenanceFacet = Schema.Literals(templateFacetOptions.brandProvenance);
56
+ const TemplateFacetSet = Schema.Struct({
57
+ jobType: Schema.Array(JobTypeFacet),
58
+ lifecycle: Schema.Array(LifecycleFacet),
59
+ industry: Schema.Array(IndustryFacet),
60
+ season: Schema.Array(SeasonFacet),
61
+ audience: Schema.Array(AudienceFacet),
62
+ design: Schema.Array(DesignFacet),
63
+ brandProvenance: Schema.Array(BrandProvenanceFacet)
64
+ });
65
+ const CorpusReview = Schema.Struct({
66
+ state: Schema.Literals([
67
+ "draft",
68
+ "approved",
69
+ "rejected"
70
+ ]),
71
+ reviewedBy: Schema.String,
72
+ reviewedAt: Schema.String,
73
+ notes: Schema.String
74
+ });
75
+ const CorpusDisplay = Schema.Struct({
76
+ state: Schema.Literals(["hidden", "public"]),
77
+ attributionLabel: Schema.String
78
+ });
79
+ const CorpusRetention = Schema.Struct({
80
+ policy: Schema.Literals(["retain-until-withdrawn", "retain-while-linked"]),
81
+ reviewedAt: Schema.String
82
+ });
83
+ const CorpusTakedown = Schema.Struct({
84
+ state: Schema.Literals(["active", "removed"]),
85
+ contact: Schema.String,
86
+ procedureUrl: Schema.String
87
+ });
88
+ const OwnedEditablePreset = Schema.TaggedStruct("OwnedEditablePreset", {
89
+ corpusKind: Schema.Literal("owned-editable-sml"),
90
+ provenance: Schema.Struct({
91
+ owner: Schema.Literal("Samva"),
92
+ sourcePath: Schema.String,
93
+ recordedAt: Schema.String
94
+ }),
95
+ review: CorpusReview,
96
+ display: CorpusDisplay,
97
+ retention: CorpusRetention,
98
+ takedown: CorpusTakedown
99
+ });
100
+ const BrandRecreationPreset = Schema.TaggedStruct("BrandRecreationPreset", {
101
+ corpusKind: Schema.Literal("brand-recreation-sml"),
102
+ provenance: Schema.Struct({
103
+ owner: Schema.Literal("Samva"),
104
+ sourcePath: Schema.String,
105
+ recordedAt: Schema.String,
106
+ /** The brand whose own email is recreated, named on every public surface. */
107
+ brand: Schema.String,
108
+ /** What that brand's email does, in the customer's words. */
109
+ subject: Schema.String,
110
+ reviewedNote: Schema.String
111
+ }),
112
+ review: CorpusReview,
113
+ display: CorpusDisplay,
114
+ retention: CorpusRetention,
115
+ takedown: CorpusTakedown
116
+ });
117
+ /** Clean-room recreations of a named brand's own email, authored as editable Samva projects. */
118
+ const brandRecreationProvenance = {
119
+ "linear-login-code": {
120
+ owner: "Samva",
121
+ sourcePath: "examples/email-showcase/emails/linear-login-code.tsx",
122
+ recordedAt: "2026-09-08T00:00:00.000Z",
123
+ brand: "Linear",
124
+ subject: "login code",
125
+ reviewedNote: "Reviewed recreation of Linear's login code email, its canonical project assets, and its brand attribution."
126
+ },
127
+ "vercel-invitation": {
128
+ owner: "Samva",
129
+ sourcePath: "examples/email-showcase/emails/vercel-invitation.tsx",
130
+ recordedAt: "2026-09-08T00:00:00.000Z",
131
+ brand: "Vercel",
132
+ subject: "team invitation",
133
+ reviewedNote: "Reviewed recreation of Vercel's team invitation email, its canonical project assets, and its brand attribution."
134
+ }
135
+ };
136
+ /**
137
+ * Owned presets authored as complete showcase projects with their own stylesheet and assets.
138
+ * Every other owned preset is the single module `packages/markup/presets/<id>.tsx`.
139
+ */
140
+ const ownedShowcasePresetSources = {
141
+ "order-receipt": "examples/email-showcase/emails/order-receipt.tsx",
142
+ "product-launch-promo": "examples/email-showcase/emails/product-launch-promo.tsx",
143
+ "product-newsletter": "examples/email-showcase/emails/product-newsletter.tsx"
144
+ };
145
+ const ownedPresetSourcePath = (id) => Object.hasOwn(ownedShowcasePresetSources, id) ? ownedShowcasePresetSources[id] : `packages/markup/presets/${id}.tsx`;
146
+ const InspirationReference = Schema.TaggedStruct("InspirationReference", {
147
+ corpusKind: Schema.Literal("inspiration-reference"),
148
+ provenance: Schema.Struct({
149
+ publisher: Schema.String,
150
+ sourceUrl: Schema.String,
151
+ capturedAt: Schema.String,
152
+ rightsBasis: Schema.Literals(["display-link-and-commentary", "permission"])
153
+ }),
154
+ review: CorpusReview,
155
+ display: CorpusDisplay,
156
+ retention: CorpusRetention,
157
+ takedown: CorpusTakedown
158
+ });
159
+ const TemplateCorpusRecord = Schema.Union([
160
+ OwnedEditablePreset,
161
+ BrandRecreationPreset,
162
+ InspirationReference
163
+ ]);
164
+ const ISO_TIMESTAMP = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3})?Z$/;
165
+ const nonEmpty = (value) => value.trim().length > 0;
166
+ const isHttpsUrl = (value) => {
167
+ const url = URL.parse(value);
168
+ return url?.protocol === "https:" && url.hostname.length > 0 && url.username.length === 0 && url.password.length === 0;
169
+ };
170
+ const requiredFacetDimensions = [
171
+ "jobType",
172
+ "lifecycle",
173
+ "industry",
174
+ "season",
175
+ "audience",
176
+ "design",
177
+ "brandProvenance"
178
+ ];
179
+ const canonicalOwnedPresetSources = new Map(presetCatalog.filter((preset) => preset.channel === "email" && !Object.hasOwn(brandRecreationProvenance, preset.id)).map((preset) => [preset.id, ownedPresetSourcePath(preset.id)]));
180
+ /** Decode and gate a record before it can enter any public projection. */
181
+ const registerPublicCorpusEntry = (input) => {
182
+ const decoded = Schema.decodeUnknownResult(Schema.Struct({
183
+ id: Schema.String,
184
+ corpus: TemplateCorpusRecord,
185
+ facets: TemplateFacetSet
186
+ }), { onExcessProperty: "error" })(input);
187
+ if (Result.isFailure(decoded)) return Result.fail({
188
+ id: "unknown",
189
+ message: "record does not match a corpus schema"
190
+ });
191
+ const { id, corpus, facets } = decoded.success;
192
+ const timestamps = [
193
+ corpus.review.reviewedAt,
194
+ corpus.retention.reviewedAt,
195
+ corpus._tag === "InspirationReference" ? corpus.provenance.capturedAt : corpus.provenance.recordedAt
196
+ ];
197
+ if (!nonEmpty(id) || corpus.review.state !== "approved" || !nonEmpty(corpus.review.reviewedBy) || !nonEmpty(corpus.review.notes) || corpus.display.state !== "public" || !nonEmpty(corpus.display.attributionLabel) || corpus.takedown.state !== "active" || !nonEmpty(corpus.takedown.contact) || !isHttpsUrl(corpus.takedown.procedureUrl) || timestamps.some((timestamp) => !ISO_TIMESTAMP.test(timestamp))) return Result.fail({
198
+ id,
199
+ message: "public corpus records require approved review, display, retention, and takedown metadata"
200
+ });
201
+ if (corpus._tag === "OwnedEditablePreset" && (canonicalOwnedPresetSources.get(id) !== corpus.provenance.sourcePath || corpus.retention.policy !== "retain-until-withdrawn" || facets.brandProvenance.some((value) => value !== "samva-original"))) return Result.fail({
202
+ id,
203
+ message: "owned presets require a canonical editable TSX source"
204
+ });
205
+ if (corpus._tag === "BrandRecreationPreset") {
206
+ const canonical = Object.entries(brandRecreationProvenance).find(([presetId]) => presetId === id)?.[1];
207
+ if (canonical === void 0 || Object.entries(canonical).some(([key, value]) => corpus.provenance[key] !== value) || !nonEmpty(corpus.provenance.brand) || !nonEmpty(corpus.provenance.subject) || corpus.retention.policy !== "retain-until-withdrawn" || facets.brandProvenance.some((value) => value !== "third-party-reference")) return Result.fail({
208
+ id,
209
+ message: "brand recreations require a canonical source, a referenced brand and subject, and third-party provenance"
210
+ });
211
+ }
212
+ if (corpus._tag === "InspirationReference" && (!isHttpsUrl(corpus.provenance.sourceUrl) || corpus.retention.policy !== "retain-while-linked" || facets.brandProvenance.some((value) => value !== "third-party-reference"))) return Result.fail({
213
+ id,
214
+ message: "inspiration references require an HTTPS source and third-party provenance facet"
215
+ });
216
+ for (const dimension of requiredFacetDimensions) {
217
+ const values = facets[dimension];
218
+ if (values.length === 0 || new Set(values).size !== values.length) return Result.fail({
219
+ id,
220
+ message: `facet ${dimension} must be populated without duplicates`
221
+ });
222
+ }
223
+ return Result.succeed({
224
+ id,
225
+ corpus,
226
+ facets
227
+ });
228
+ };
229
+ const TemplateFacetQuery = Schema.Struct({
230
+ jobType: Schema.optionalKey(Schema.Array(JobTypeFacet)),
231
+ lifecycle: Schema.optionalKey(Schema.Array(LifecycleFacet)),
232
+ industry: Schema.optionalKey(Schema.Array(IndustryFacet)),
233
+ season: Schema.optionalKey(Schema.Array(SeasonFacet)),
234
+ audience: Schema.optionalKey(Schema.Array(AudienceFacet)),
235
+ design: Schema.optionalKey(Schema.Array(DesignFacet)),
236
+ brandProvenance: Schema.optionalKey(Schema.Array(BrandProvenanceFacet))
237
+ });
238
+ /** Strict intersection: every selected value in every selected dimension must match. */
239
+ const matchesTemplateFacets = (facets, query) => requiredFacetDimensions.every((dimension) => {
240
+ const selected = query[dimension];
241
+ const available = new Set(facets[dimension]);
242
+ return selected === void 0 || selected.every((value) => available.has(value));
243
+ });
244
+ //#endregion
245
+ export { BrandRecreationPreset, InspirationReference, OwnedEditablePreset, TemplateCorpusKind, TemplateCorpusRecord, TemplateFacetQuery, TemplateFacetSet, brandRecreationProvenance, matchesTemplateFacets, ownedPresetSourcePath, ownedShowcasePresetSources, registerPublicCorpusEntry, templateFacetOptions };
246
+
247
+ //# sourceMappingURL=corpus.js.map
@@ -1,2 +1,290 @@
1
- import { a as TemplateUseCase, c as publicTemplates, d as templateUseCases, i as TemplateCollectionId, l as templateCollectionFamilies, n as TemplateCollection, o as isMadeWithSamvaTemplate, r as TemplateCollectionFamily, s as publicTemplateGallery, t as PublicTemplate, u as templateCollections } from "../public-gallery-D0Zv0pZE.js";
2
- export { PublicTemplate, TemplateCollection, TemplateCollectionFamily, TemplateCollectionId, TemplateUseCase, isMadeWithSamvaTemplate, publicTemplateGallery, publicTemplates, templateCollectionFamilies, templateCollections, templateUseCases };
1
+ import { EmailPresetId } from "../presets.js";
2
+ import { c as TemplateFacetQuery, l as TemplateFacetSet, r as OwnedEditablePreset, t as BrandRecreationPreset } from "../corpus-qrUD5O6r.js";
3
+ //#region presets/public-gallery.d.ts
4
+ declare const templateUseCases: readonly ["account-access", "commerce", "product-communication", "lifecycle", "publishing-campaigns"];
5
+ declare const templateCollectionFamilies: readonly ["category", "industry", "stage", "style"];
6
+ type TemplateUseCase = (typeof templateUseCases)[number];
7
+ type TemplateCollectionFamily = (typeof templateCollectionFamilies)[number];
8
+ interface PublicTemplate {
9
+ readonly presetId: EmailPresetId;
10
+ readonly slug: string;
11
+ readonly path: `/templates/${string}`;
12
+ readonly useCase: TemplateUseCase;
13
+ readonly collections: ReadonlyArray<TemplateCollectionId>;
14
+ readonly relatedTemplates: ReadonlyArray<EmailPresetId>;
15
+ /** Editable SML authored by Samva, either an original or a named-brand recreation. */
16
+ readonly corpus: OwnedEditablePreset | BrandRecreationPreset;
17
+ readonly facets: TemplateFacetSet;
18
+ }
19
+ declare const isMadeWithSamvaTemplate: (template: Pick<PublicTemplate, "corpus">) => boolean;
20
+ interface TemplateCollection {
21
+ readonly id: TemplateCollectionId;
22
+ readonly family: TemplateCollectionFamily;
23
+ readonly slug: string;
24
+ readonly path: `/templates/${TemplateCollectionFamily}/${string}`;
25
+ readonly templates: ReadonlyArray<EmailPresetId>;
26
+ readonly relatedCollections: ReadonlyArray<TemplateCollectionId>;
27
+ }
28
+ type TemplateCollectionId = "category:transactional" | "category:lifecycle" | "category:marketing" | "category:digest-editorial" | "industry:saas" | "industry:ecommerce" | "industry:developer-tools" | "industry:newsletters-media" | "stage:acquisition" | "stage:activation" | "stage:engagement" | "stage:transaction" | "stage:retention" | "stage:recovery" | "style:minimal" | "style:branded" | "style:editorial" | "style:data-heavy" | "style:single-cta";
29
+ /** Explicit evidence for every owned preset reviewed in the 2026-08-31 catalog pass. */
30
+ declare const ownedPresetReviewManifest: {
31
+ readonly welcome: {
32
+ readonly sourcePath: "packages/markup/presets/welcome.tsx";
33
+ readonly reviewedBy: "Samva catalog review";
34
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
35
+ readonly notes: "Reviewed welcome editable SML, public preview data, and gallery identity.";
36
+ };
37
+ readonly "email-verification": {
38
+ readonly sourcePath: "packages/markup/presets/email-verification.tsx";
39
+ readonly reviewedBy: "Samva catalog review";
40
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
41
+ readonly notes: "Reviewed email-verification editable SML, public preview data, and gallery identity.";
42
+ };
43
+ readonly otp: {
44
+ readonly sourcePath: "packages/markup/presets/otp.tsx";
45
+ readonly reviewedBy: "Samva catalog review";
46
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
47
+ readonly notes: "Reviewed otp editable SML, public preview data, and gallery identity.";
48
+ };
49
+ readonly "password-reset": {
50
+ readonly sourcePath: "packages/markup/presets/password-reset.tsx";
51
+ readonly reviewedBy: "Samva catalog review";
52
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
53
+ readonly notes: "Reviewed password-reset editable SML, public preview data, and gallery identity.";
54
+ };
55
+ readonly receipt: {
56
+ readonly sourcePath: "packages/markup/presets/receipt.tsx";
57
+ readonly reviewedBy: "Samva catalog review";
58
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
59
+ readonly notes: "Reviewed receipt editable SML, public preview data, and gallery identity.";
60
+ };
61
+ readonly "payment-failed": {
62
+ readonly sourcePath: "packages/markup/presets/payment-failed.tsx";
63
+ readonly reviewedBy: "Samva catalog review";
64
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
65
+ readonly notes: "Reviewed payment-failed editable SML, public preview data, and gallery identity.";
66
+ };
67
+ readonly "shipping-update": {
68
+ readonly sourcePath: "packages/markup/presets/shipping-update.tsx";
69
+ readonly reviewedBy: "Samva catalog review";
70
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
71
+ readonly notes: "Reviewed shipping-update editable SML, public preview data, and gallery identity.";
72
+ };
73
+ readonly notification: {
74
+ readonly sourcePath: "packages/markup/presets/notification.tsx";
75
+ readonly reviewedBy: "Samva catalog review";
76
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
77
+ readonly notes: "Reviewed notification editable SML, public preview data, and gallery identity.";
78
+ };
79
+ readonly "team-invite": {
80
+ readonly sourcePath: "packages/markup/presets/team-invite.tsx";
81
+ readonly reviewedBy: "Samva catalog review";
82
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
83
+ readonly notes: "Reviewed team-invite editable SML, public preview data, and gallery identity.";
84
+ };
85
+ readonly "product-newsletter": {
86
+ readonly sourcePath: "examples/email-showcase/emails/product-newsletter.tsx";
87
+ readonly reviewedBy: "Samva catalog review";
88
+ readonly reviewedAt: "2026-09-08T00:00:00.000Z";
89
+ readonly notes: "Reviewed product-newsletter editable SML project, authored assets, public preview data, and gallery identity.";
90
+ };
91
+ readonly "product-digest": {
92
+ readonly sourcePath: "packages/markup/presets/product-digest.tsx";
93
+ readonly reviewedBy: "Samva catalog review";
94
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
95
+ readonly notes: "Reviewed product-digest editable SML, public preview data, and gallery identity.";
96
+ };
97
+ readonly newsletter: {
98
+ readonly sourcePath: "packages/markup/presets/newsletter.tsx";
99
+ readonly reviewedBy: "Samva catalog review";
100
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
101
+ readonly notes: "Reviewed newsletter editable SML, public preview data, and gallery identity.";
102
+ };
103
+ readonly announcement: {
104
+ readonly sourcePath: "packages/markup/presets/announcement.tsx";
105
+ readonly reviewedBy: "Samva catalog review";
106
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
107
+ readonly notes: "Reviewed announcement editable SML, public preview data, and gallery identity.";
108
+ };
109
+ readonly promo: {
110
+ readonly sourcePath: "packages/markup/presets/promo.tsx";
111
+ readonly reviewedBy: "Samva catalog review";
112
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
113
+ readonly notes: "Reviewed promo editable SML, public preview data, and gallery identity.";
114
+ };
115
+ readonly "event-invite": {
116
+ readonly sourcePath: "packages/markup/presets/event-invite.tsx";
117
+ readonly reviewedBy: "Samva catalog review";
118
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
119
+ readonly notes: "Reviewed event-invite editable SML, public preview data, and gallery identity.";
120
+ };
121
+ readonly "membership-promo": {
122
+ readonly sourcePath: "packages/markup/presets/membership-promo.tsx";
123
+ readonly reviewedBy: "Samva catalog review";
124
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
125
+ readonly notes: "Reviewed membership-promo editable SML, public preview data, and gallery identity.";
126
+ };
127
+ readonly "onboarding-step": {
128
+ readonly sourcePath: "packages/markup/presets/onboarding-step.tsx";
129
+ readonly reviewedBy: "Samva catalog review";
130
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
131
+ readonly notes: "Reviewed onboarding-step editable SML, public preview data, and gallery identity.";
132
+ };
133
+ readonly "trial-ending": {
134
+ readonly sourcePath: "packages/markup/presets/trial-ending.tsx";
135
+ readonly reviewedBy: "Samva catalog review";
136
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
137
+ readonly notes: "Reviewed trial-ending editable SML, public preview data, and gallery identity.";
138
+ };
139
+ readonly "win-back": {
140
+ readonly sourcePath: "packages/markup/presets/win-back.tsx";
141
+ readonly reviewedBy: "Samva catalog review";
142
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
143
+ readonly notes: "Reviewed win-back editable SML, public preview data, and gallery identity.";
144
+ };
145
+ readonly "feedback-request": {
146
+ readonly sourcePath: "packages/markup/presets/feedback-request.tsx";
147
+ readonly reviewedBy: "Samva catalog review";
148
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
149
+ readonly notes: "Reviewed feedback-request editable SML, public preview data, and gallery identity.";
150
+ };
151
+ readonly "editorial-newsletter": {
152
+ readonly sourcePath: "packages/markup/presets/editorial-newsletter.tsx";
153
+ readonly reviewedBy: "Samva catalog review";
154
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
155
+ readonly notes: "Reviewed editorial-newsletter editable SML, public preview data, and gallery identity.";
156
+ };
157
+ readonly "member-referral-offer": {
158
+ readonly sourcePath: "packages/markup/presets/member-referral-offer.tsx";
159
+ readonly reviewedBy: "Samva catalog review";
160
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
161
+ readonly notes: "Reviewed member-referral-offer editable SML, public preview data, and gallery identity.";
162
+ };
163
+ readonly "catalog-sale-newsletter": {
164
+ readonly sourcePath: "packages/markup/presets/catalog-sale-newsletter.tsx";
165
+ readonly reviewedBy: "Samva catalog review";
166
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
167
+ readonly notes: "Reviewed catalog-sale-newsletter editable SML, public preview data, and gallery identity.";
168
+ };
169
+ readonly "limited-time-savings": {
170
+ readonly sourcePath: "packages/markup/presets/limited-time-savings.tsx";
171
+ readonly reviewedBy: "Samva catalog review";
172
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
173
+ readonly notes: "Reviewed limited-time-savings editable SML, public preview data, and gallery identity.";
174
+ };
175
+ readonly "rewards-milestone": {
176
+ readonly sourcePath: "packages/markup/presets/rewards-milestone.tsx";
177
+ readonly reviewedBy: "Samva catalog review";
178
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
179
+ readonly notes: "Reviewed rewards-milestone editable SML, public preview data, and gallery identity.";
180
+ };
181
+ readonly "order-delivered": {
182
+ readonly sourcePath: "packages/markup/presets/order-delivered.tsx";
183
+ readonly reviewedBy: "Samva catalog review";
184
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
185
+ readonly notes: "Reviewed order-delivered editable SML, public preview data, and gallery identity.";
186
+ };
187
+ readonly "order-receipt": {
188
+ readonly sourcePath: "examples/email-showcase/emails/order-receipt.tsx";
189
+ readonly reviewedBy: "Samva catalog review";
190
+ readonly reviewedAt: "2026-09-08T00:00:00.000Z";
191
+ readonly notes: "Reviewed order-receipt editable project with stylesheet and original assets, public preview data, and gallery identity.";
192
+ };
193
+ readonly "travel-rewards-promo": {
194
+ readonly sourcePath: "packages/markup/presets/travel-rewards-promo.tsx";
195
+ readonly reviewedBy: "Samva catalog review";
196
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
197
+ readonly notes: "Reviewed travel-rewards-promo editable SML, public preview data, and gallery identity.";
198
+ };
199
+ readonly "events-roundup": {
200
+ readonly sourcePath: "packages/markup/presets/events-roundup.tsx";
201
+ readonly reviewedBy: "Samva catalog review";
202
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
203
+ readonly notes: "Reviewed events-roundup editable SML, public preview data, and gallery identity.";
204
+ };
205
+ readonly "product-onboarding-tour": {
206
+ readonly sourcePath: "packages/markup/presets/product-onboarding-tour.tsx";
207
+ readonly reviewedBy: "Samva catalog review";
208
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
209
+ readonly notes: "Reviewed product-onboarding-tour editable SML, public preview data, and gallery identity.";
210
+ };
211
+ readonly "product-updates-roundup": {
212
+ readonly sourcePath: "packages/markup/presets/product-updates-roundup.tsx";
213
+ readonly reviewedBy: "Samva catalog review";
214
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
215
+ readonly notes: "Reviewed product-updates-roundup editable SML, public preview data, and gallery identity.";
216
+ };
217
+ readonly "flash-getaway-offer": {
218
+ readonly sourcePath: "packages/markup/presets/flash-getaway-offer.tsx";
219
+ readonly reviewedBy: "Samva catalog review";
220
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
221
+ readonly notes: "Reviewed flash-getaway-offer editable SML, public preview data, and gallery identity.";
222
+ };
223
+ readonly "membership-benefits-promo": {
224
+ readonly sourcePath: "packages/markup/presets/membership-benefits-promo.tsx";
225
+ readonly reviewedBy: "Samva catalog review";
226
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
227
+ readonly notes: "Reviewed membership-benefits-promo editable SML, public preview data, and gallery identity.";
228
+ };
229
+ readonly "industry-news-digest": {
230
+ readonly sourcePath: "packages/markup/presets/industry-news-digest.tsx";
231
+ readonly reviewedBy: "Samva catalog review";
232
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
233
+ readonly notes: "Reviewed industry-news-digest editable SML, public preview data, and gallery identity.";
234
+ };
235
+ readonly "weekly-deals-circular": {
236
+ readonly sourcePath: "packages/markup/presets/weekly-deals-circular.tsx";
237
+ readonly reviewedBy: "Samva catalog review";
238
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
239
+ readonly notes: "Reviewed weekly-deals-circular editable SML, public preview data, and gallery identity.";
240
+ };
241
+ readonly "data-sharing-review": {
242
+ readonly sourcePath: "packages/markup/presets/data-sharing-review.tsx";
243
+ readonly reviewedBy: "Samva catalog review";
244
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
245
+ readonly notes: "Reviewed data-sharing-review editable SML, public preview data, and gallery identity.";
246
+ };
247
+ readonly "seasonal-sale-flyer": {
248
+ readonly sourcePath: "packages/markup/presets/seasonal-sale-flyer.tsx";
249
+ readonly reviewedBy: "Samva catalog review";
250
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
251
+ readonly notes: "Reviewed seasonal-sale-flyer editable SML, public preview data, and gallery identity.";
252
+ };
253
+ readonly "setup-checklist": {
254
+ readonly sourcePath: "packages/markup/presets/setup-checklist.tsx";
255
+ readonly reviewedBy: "Samva catalog review";
256
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
257
+ readonly notes: "Reviewed setup-checklist editable SML, public preview data, and gallery identity.";
258
+ };
259
+ readonly "feature-release-roundup": {
260
+ readonly sourcePath: "packages/markup/presets/feature-release-roundup.tsx";
261
+ readonly reviewedBy: "Samva catalog review";
262
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
263
+ readonly notes: "Reviewed feature-release-roundup editable SML, public preview data, and gallery identity.";
264
+ };
265
+ readonly "season-clearance-promo": {
266
+ readonly sourcePath: "packages/markup/presets/season-clearance-promo.tsx";
267
+ readonly reviewedBy: "Samva catalog review";
268
+ readonly reviewedAt: "2026-08-31T00:00:00.000Z";
269
+ readonly notes: "Reviewed season-clearance-promo editable SML, public preview data, and gallery identity.";
270
+ };
271
+ readonly "product-launch-promo": {
272
+ readonly sourcePath: "examples/email-showcase/emails/product-launch-promo.tsx";
273
+ readonly reviewedBy: "Samva catalog review";
274
+ readonly reviewedAt: "2026-09-08T00:00:00.000Z";
275
+ readonly notes: "Reviewed product-launch-promo editable project, original Oakline assets, public preview data, and gallery identity.";
276
+ };
277
+ };
278
+ declare const publicTemplates: readonly [PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate];
279
+ /** Deterministic strict-intersection search over the canonical public corpus order. */
280
+ declare const filterPublicTemplatesByFacets: (query: TemplateFacetQuery) => ReadonlyArray<PublicTemplate>;
281
+ declare const templateCollections: readonly [TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection];
282
+ declare const publicTemplateGallery: {
283
+ readonly hubPath: "/templates";
284
+ readonly useCases: readonly ["account-access", "commerce", "product-communication", "lifecycle", "publishing-campaigns"];
285
+ readonly templates: readonly [PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate, PublicTemplate];
286
+ readonly collections: readonly [TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection, TemplateCollection];
287
+ };
288
+ //#endregion
289
+ export { PublicTemplate, TemplateCollection, TemplateCollectionFamily, TemplateCollectionId, TemplateUseCase, filterPublicTemplatesByFacets, isMadeWithSamvaTemplate, ownedPresetReviewManifest, publicTemplateGallery, publicTemplates, templateCollectionFamilies, templateCollections, templateUseCases };
290
+ //# sourceMappingURL=public-gallery.d.ts.map