create-email-renderer 0.1.1 → 0.2.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 (45) hide show
  1. package/README.md +106 -2
  2. package/SKILL.md +189 -0
  3. package/dist/build.d.ts +52 -0
  4. package/dist/build.d.ts.map +1 -0
  5. package/dist/build.js +169 -0
  6. package/dist/build.js.map +1 -0
  7. package/dist/default-blocks.d.ts.map +1 -1
  8. package/dist/default-blocks.js +357 -5
  9. package/dist/default-blocks.js.map +1 -1
  10. package/dist/html-render.d.ts +4 -2
  11. package/dist/html-render.d.ts.map +1 -1
  12. package/dist/html-render.js +694 -54
  13. package/dist/html-render.js.map +1 -1
  14. package/dist/index.d.ts +3 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +3 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/normalize.d.ts +3 -1
  19. package/dist/normalize.d.ts.map +1 -1
  20. package/dist/normalize.js +120 -40
  21. package/dist/normalize.js.map +1 -1
  22. package/dist/records.d.ts +8 -0
  23. package/dist/records.d.ts.map +1 -0
  24. package/dist/records.js +81 -0
  25. package/dist/records.js.map +1 -0
  26. package/dist/registry.d.ts +29 -0
  27. package/dist/registry.d.ts.map +1 -0
  28. package/dist/registry.js +31 -0
  29. package/dist/registry.js.map +1 -0
  30. package/dist/server.d.ts +4 -2
  31. package/dist/server.d.ts.map +1 -1
  32. package/dist/server.js +2 -1
  33. package/dist/server.js.map +1 -1
  34. package/dist/tracking.d.ts +12 -0
  35. package/dist/tracking.d.ts.map +1 -0
  36. package/dist/tracking.js +78 -0
  37. package/dist/tracking.js.map +1 -0
  38. package/dist/types.d.ts +354 -7
  39. package/dist/types.d.ts.map +1 -1
  40. package/dist/types.js +82 -0
  41. package/dist/types.js.map +1 -1
  42. package/docs/BLOCKS.md +467 -0
  43. package/docs/MCP.md +186 -0
  44. package/llms.txt +15 -0
  45. package/package.json +17 -4
package/dist/server.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { EmailBlock, EmailContext, EmailPalette, EmailSettings } from "./types.js";
1
+ import type { EmailBlock, EmailContext, EmailPalette, EmailSettings, EmailTracking } from "./types.js";
2
2
  export interface TemplatePayload {
3
3
  content: EmailBlock[];
4
4
  settings: Partial<EmailSettings>;
@@ -10,6 +10,8 @@ export interface RenderTemplateEmailOptions {
10
10
  context?: EmailContext;
11
11
  settings?: Partial<EmailSettings>;
12
12
  palette?: EmailPalette;
13
+ /** Pixel de apertura y tracking de clics (opcional, por envío). */
14
+ tracking?: EmailTracking;
13
15
  }
14
16
  export interface RenderedTemplateEmail {
15
17
  html: string;
@@ -19,6 +21,6 @@ export interface RenderedTemplateEmail {
19
21
  * Helper para renderizar una plantilla completa desde su payload JSON.
20
22
  * Uso: `const {html, subject} = await renderTemplateEmail({subject, payload, context})`
21
23
  */
22
- export declare const renderTemplateEmail: ({ subject, payload, context, settings: overrideSettings, palette, }: RenderTemplateEmailOptions) => Promise<RenderedTemplateEmail>;
24
+ export declare const renderTemplateEmail: ({ subject, payload, context, settings: overrideSettings, palette, tracking, }: RenderTemplateEmailOptions) => Promise<RenderedTemplateEmail>;
23
25
  export declare const buildTemplateContext: (base: EmailContext, extra?: Record<string, string | undefined | null>) => EmailContext;
24
26
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACd,MAAM,YAAY,CAAC;AAQpB,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CAClC;AAED,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,KAC1C,eAgBF,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAU,qEAMvC,0BAA0B,KAAG,OAAO,CAAC,qBAAqB,CAyB5D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,MAAM,YAAY,EAClB,QAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,KAChD,YAQF,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACd,MAAM,YAAY,CAAC;AAQpB,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CAClC;AAED,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,KAC1C,eAgBF,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAU,+EAOvC,0BAA0B,KAAG,OAAO,CAAC,qBAAqB,CA0B5D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,MAAM,YAAY,EAClB,QAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,KAChD,YAQF,CAAC"}
package/dist/server.js CHANGED
@@ -26,7 +26,7 @@ export const parseTemplatePayload = (payload) => {
26
26
  * Helper para renderizar una plantilla completa desde su payload JSON.
27
27
  * Uso: `const {html, subject} = await renderTemplateEmail({subject, payload, context})`
28
28
  */
29
- export const renderTemplateEmail = async ({ subject, payload, context = SAMPLE_CONTEXT, settings: overrideSettings, palette = DEFAULT_PALETTE, }) => {
29
+ export const renderTemplateEmail = async ({ subject, payload, context = SAMPLE_CONTEXT, settings: overrideSettings, palette = DEFAULT_PALETTE, tracking, }) => {
30
30
  const mergedContext = {
31
31
  ...SAMPLE_CONTEXT,
32
32
  ...(context || {}),
@@ -42,6 +42,7 @@ export const renderTemplateEmail = async ({ subject, payload, context = SAMPLE_C
42
42
  context: mergedContext,
43
43
  settings: finalSettings,
44
44
  palette,
45
+ tracking,
45
46
  });
46
47
  const resolvedSubject = resolveVariables(subject, mergedContext);
47
48
  return { html, subject: resolvedSubject };
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,4EAA4E;AAC5E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAOpE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAYtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,OAA2C,EAC1B,EAAE;IACnB,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,MAAM,GACV,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAe,CAAC;QACvE,OAAO;YACL,mEAAmE;YACnE,sDAAsD;YACtD,OAAO,EAAE,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC;YACzC,QAAQ,EAAE,MAAM,EAAE,QAAQ;gBACxB,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACpC,CAAC,CAAC,EAAE;SACP,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACvC,CAAC;AACH,CAAC,CAAC;AAeF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,EACxC,OAAO,EACP,OAAO,EACP,OAAO,GAAG,cAAc,EACxB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAG,eAAe,GACE,EAAkC,EAAE;IAC/D,MAAM,aAAa,GAAiB;QAClC,GAAG,cAAc;QACjB,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;KACnB,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAEpE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,aAAa,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,EAAE,CAAC;IAEnE,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC;QACjC,MAAM;QACN,OAAO;QACP,OAAO,EAAE,aAAa;QACtB,QAAQ,EAAE,aAAa;QACvB,OAAO;KACR,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAEjE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,IAAkB,EAClB,KAAiD,EACnC,EAAE;IAChB,MAAM,OAAO,GAAiB,EAAE,GAAG,IAAI,EAAE,CAAC;IAC1C,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;gBAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;AAC3C,CAAC,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,4EAA4E;AAC5E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAQpE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAYtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,OAA2C,EAC1B,EAAE;IACnB,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,MAAM,GACV,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAe,CAAC;QACvE,OAAO;YACL,mEAAmE;YACnE,sDAAsD;YACtD,OAAO,EAAE,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC;YACzC,QAAQ,EAAE,MAAM,EAAE,QAAQ;gBACxB,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACpC,CAAC,CAAC,EAAE;SACP,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACvC,CAAC;AACH,CAAC,CAAC;AAiBF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,EACxC,OAAO,EACP,OAAO,EACP,OAAO,GAAG,cAAc,EACxB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAG,eAAe,EACzB,QAAQ,GACmB,EAAkC,EAAE;IAC/D,MAAM,aAAa,GAAiB;QAClC,GAAG,cAAc;QACjB,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;KACnB,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAEpE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,aAAa,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,EAAE,CAAC;IAEnE,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC;QACjC,MAAM;QACN,OAAO;QACP,OAAO,EAAE,aAAa;QACtB,QAAQ,EAAE,aAAa;QACvB,OAAO;QACP,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAEjE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,IAAkB,EAClB,KAAiD,EACnC,EAAE;IAChB,MAAM,OAAO,GAAiB,EAAE,GAAG,IAAI,EAAE,CAAC;IAC1C,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;gBAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;AAC3C,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { EmailContext, EmailTracking } from "./types.js";
2
+ /**
3
+ * Aplica el trackeo al HTML: pixel de apertura antes de `</body>` y
4
+ * reescritura de los `<a href>` (según `clickUrl` / `utm` / `transformLink`).
5
+ */
6
+ export declare const applyTracking: (html: string, tracking: EmailTracking | undefined, context: EmailContext) => string;
7
+ /**
8
+ * Exclusiones por defecto del click tracking: la baja y los esquemas que no
9
+ * son enlaces web nunca deben pasar por el tracker.
10
+ */
11
+ export declare const DEFAULT_TRACKING_EXCLUDE: string[];
12
+ //# sourceMappingURL=tracking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracking.d.ts","sourceRoot":"","sources":["../src/tracking.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA8B9D;;;GAGG;AACH,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,EACZ,UAAU,aAAa,GAAG,SAAS,EACnC,SAAS,YAAY,KACpB,MAoCF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,UASpC,CAAC"}
@@ -0,0 +1,78 @@
1
+ // Trackeo de correo (aperturas y clics) aplicado como post-proceso sobre el
2
+ // HTML ya generado: no toca los renderers de bloque ni los defaults, así que
3
+ // sin `tracking` la salida es byte-idéntica. Puro y tolerante: nunca lanza.
4
+ import { escapeHtml } from "./richtext.js";
5
+ import { resolveVariables } from "./variables.js";
6
+ /** Pixel 1×1 de apertura. */
7
+ const openPixel = (url) => `<img src="${escapeHtml(url)}" width="1" height="1" alt="" style="display:none;border:0;outline:none;" />`;
8
+ /** Hrefs que nunca se reescriben (baja, anclas, esquemas sin http). */
9
+ const isExcluded = (href, exclude) => href === "" ||
10
+ href.startsWith("#") ||
11
+ href.startsWith("{") ||
12
+ exclude.some((needle) => needle !== "" && href.includes(needle));
13
+ /** Añade (o sobreescribe) los UTM del destino. Si no es una URL válida, no toca nada. */
14
+ const withUtm = (href, utm) => {
15
+ if (!utm)
16
+ return href;
17
+ try {
18
+ const url = new URL(href);
19
+ for (const [key, value] of Object.entries(utm)) {
20
+ if (value != null && value !== "")
21
+ url.searchParams.set(`utm_${key}`, value);
22
+ }
23
+ return url.toString();
24
+ }
25
+ catch {
26
+ return href;
27
+ }
28
+ };
29
+ /**
30
+ * Aplica el trackeo al HTML: pixel de apertura antes de `</body>` y
31
+ * reescritura de los `<a href>` (según `clickUrl` / `utm` / `transformLink`).
32
+ */
33
+ export const applyTracking = (html, tracking, context) => {
34
+ if (!tracking)
35
+ return html;
36
+ let out = html;
37
+ if (tracking.clickUrl || tracking.utm || tracking.transformLink) {
38
+ const exclude = [
39
+ ...DEFAULT_TRACKING_EXCLUDE,
40
+ ...(tracking.exclude ?? []),
41
+ ];
42
+ out = out.replace(/<a\b[^>]*>/g, (tag) => tag.replace(/href="([^"]*)"/, (match, raw) => {
43
+ // En el atributo los `&` van escapados (`&amp;`): se compara decodificado.
44
+ const href = raw.replace(/&amp;/g, "&");
45
+ if (isExcluded(href, exclude))
46
+ return match;
47
+ const destination = withUtm(href, tracking.utm);
48
+ const wrapped = tracking.transformLink
49
+ ? tracking.transformLink(destination)
50
+ : tracking.clickUrl
51
+ ? resolveVariables(tracking.clickUrl, context).replace(/\{url\}/g, encodeURIComponent(destination))
52
+ : destination;
53
+ return `href="${escapeHtml(wrapped)}"`;
54
+ }));
55
+ }
56
+ if (tracking.pixelUrl) {
57
+ const pixel = openPixel(resolveVariables(tracking.pixelUrl, context));
58
+ out = out.includes("</body>")
59
+ ? out.replace("</body>", `${pixel}\n </body>`)
60
+ : `${out}${pixel}`;
61
+ }
62
+ return out;
63
+ };
64
+ /**
65
+ * Exclusiones por defecto del click tracking: la baja y los esquemas que no
66
+ * son enlaces web nunca deben pasar por el tracker.
67
+ */
68
+ export const DEFAULT_TRACKING_EXCLUDE = [
69
+ "mailto:",
70
+ "tel:",
71
+ "sms:",
72
+ "unsubscribe",
73
+ "/baja",
74
+ "optout",
75
+ "opt-out",
76
+ "darse-de-baja",
77
+ ];
78
+ //# sourceMappingURL=tracking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracking.js","sourceRoot":"","sources":["../src/tracking.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,9 +1,27 @@
1
- export type EmailBlockType = "header" | "hero" | "heading" | "text" | "list" | "button" | "image" | "quote" | "columns" | "divider" | "spacer" | "footer";
1
+ export type EmailBlockType = "header" | "hero" | "heading" | "text" | "list" | "button" | "image" | "quote" | "columns" | "container" | "grid" | "divider" | "spacer" | "footer" | "social" | "gallery" | "stats" | "pricing" | "product" | "testimonial" | "features" | "avatar" | "code" | "link" | "checkout";
2
+ /**
3
+ * Profundidad máxima de anidamiento. 1 = un bloque puede contener hijos, pero
4
+ * esos hijos no pueden volver a contener bloques (sin recursión infinita).
5
+ */
6
+ export declare const MAX_BLOCK_DEPTH = 1;
7
+ /** Tipos que pueden contener bloques hijos. */
8
+ export declare const CONTAINER_BLOCK_TYPES: EmailBlockType[];
9
+ export declare const isContainerType: (type: string) => boolean;
2
10
  export interface BlockCommonProps {
3
11
  align?: "left" | "center" | "right";
4
12
  backgroundColor?: string;
5
13
  paddingY?: number;
6
14
  paddingX?: number;
15
+ /** Overrides por lado; ganan a `paddingY`/`paddingX` cuando están definidos. */
16
+ paddingTop?: number;
17
+ paddingRight?: number;
18
+ paddingBottom?: number;
19
+ paddingLeft?: number;
20
+ /** Separación externa del bloque (se aplica a la tabla contenedora). */
21
+ marginTop?: number;
22
+ marginBottom?: number;
23
+ /** Separación interna entre hijos (columnas, elementos de lista). */
24
+ gap?: number;
7
25
  }
8
26
  export interface HeaderProps extends BlockCommonProps {
9
27
  brandName: string;
@@ -25,9 +43,37 @@ export interface TextProps extends BlockCommonProps {
25
43
  size?: number;
26
44
  color?: string;
27
45
  }
46
+ /**
47
+ * Estilos de la lista (patrones de react.email/components/list):
48
+ * `bullets` viñetas simples, `numbered` badge numerado + título + descripción,
49
+ * `with-image` imagen a la izquierda con badge, título, descripción y enlace.
50
+ */
51
+ export type ListVariant = "bullets" | "numbered" | "with-image";
52
+ export interface ListEntry {
53
+ id: string;
54
+ title: string;
55
+ description?: string;
56
+ /** Texto del badge circular; vacío = número de la posición. */
57
+ number?: string;
58
+ /** Imagen de la fila (solo variante `with-image`). */
59
+ image?: string;
60
+ href?: string;
61
+ linkLabel?: string;
62
+ }
28
63
  export interface ListProps extends BlockCommonProps {
64
+ /** Viñetas de la variante `bullets` (la clásica). */
29
65
  items: string[];
30
66
  icon?: string;
67
+ /** Estilo de la lista (default `"bullets"` = la de siempre). */
68
+ variant?: ListVariant;
69
+ /** Filas de las variantes `numbered` / `with-image`. */
70
+ entries?: ListEntry[];
71
+ /** Color del badge numerado (y del enlace "Learn more"). */
72
+ accentColor?: string;
73
+ /** Borde redondeado de la imagen en px (default 4). */
74
+ radius?: number;
75
+ /** Alto de la imagen en px (default 168). */
76
+ imageHeight?: number;
31
77
  }
32
78
  export declare const LIST_ICONS: string[];
33
79
  export interface ButtonProps extends BlockCommonProps {
@@ -51,10 +97,24 @@ export interface QuoteProps extends BlockCommonProps {
51
97
  marginLeft?: number;
52
98
  }
53
99
  export interface ColumnsProps extends BlockCommonProps {
54
- columns: {
55
- id: string;
56
- text: string;
57
- }[];
100
+ columns: ColumnDef[];
101
+ }
102
+ /** Columna de `columns` v2 / `grid`: contiene bloques hijos. */
103
+ export interface ColumnDef {
104
+ id: string;
105
+ blocks: EmailBlock[];
106
+ /** Ancho en porcentaje (solo `grid`); `undefined` = reparto equitativo. */
107
+ width?: number;
108
+ }
109
+ /** Bloque contenedor de una sola columna. */
110
+ export interface ContainerProps extends BlockCommonProps {
111
+ blocks: EmailBlock[];
112
+ }
113
+ /** Cuadrícula de una fila con celdas de ancho configurable (ratios). */
114
+ export interface GridProps extends BlockCommonProps {
115
+ columns: ColumnDef[];
116
+ /** Identificador del preset de anchos (ej. "1-2", "1-3-2-3"). */
117
+ layout?: string;
58
118
  }
59
119
  export interface DividerProps extends BlockCommonProps {
60
120
  color?: string;
@@ -64,12 +124,234 @@ export interface SpacerProps {
64
124
  height?: number;
65
125
  backgroundColor?: string;
66
126
  }
67
- export interface FooterProps {
127
+ export interface FooterProps extends BlockCommonProps {
128
+ /**
129
+ * "classic" (default) = barra oscura con `text`/`brandName`.
130
+ * "one-column" / "two-columns" = layouts de columnas (`columns`).
131
+ */
132
+ variant?: "classic" | "one-column" | "two-columns";
133
+ columns?: ColumnDef[];
68
134
  text?: string;
69
135
  brandName?: string;
70
136
  backgroundColor?: string;
71
137
  }
72
- export type EmailBlockProps = HeaderProps | HeroProps | HeadingProps | TextProps | ListProps | ButtonProps | ImageProps | QuoteProps | ColumnsProps | DividerProps | SpacerProps | FooterProps;
138
+ export interface SocialLink {
139
+ id: string;
140
+ label: string;
141
+ href: string;
142
+ /** Glifo (emoji/texto) o URL de imagen, usado en modo "logo". */
143
+ icon?: string;
144
+ }
145
+ export interface SocialProps extends BlockCommonProps {
146
+ links: SocialLink[];
147
+ /** "text" muestra el nombre; "logo" muestra el ícono/logo. */
148
+ mode?: "text" | "logo";
149
+ /** Tamaño del medallón/logo en modo "logo" (px). Default: 32. */
150
+ iconSize?: number;
151
+ color?: string;
152
+ accentColor?: string;
153
+ }
154
+ /** Glifos sugeridos para el modo logo (editables o sustituibles por una URL). */
155
+ export declare const SOCIAL_ICONS: string[];
156
+ export interface GalleryImage {
157
+ id: string;
158
+ src: string;
159
+ alt?: string;
160
+ href?: string;
161
+ }
162
+ /**
163
+ * Diseños de la galería (patrones de react.email):
164
+ * `grid` cuadrícula 2/3 por fila, `three-columns` tres columnas en una fila,
165
+ * `horizontal` dos apiladas + una alta a la derecha,
166
+ * `vertical` una ancha arriba + dos abajo.
167
+ */
168
+ export type GalleryVariant = "grid" | "three-columns" | "horizontal" | "vertical";
169
+ export interface GalleryProps extends BlockCommonProps {
170
+ images: GalleryImage[];
171
+ /** Imágenes por fila (2 o 3). Solo aplica a `variant: "grid"`. */
172
+ columns?: number;
173
+ /** Diseño de la galería (default `"grid"` = cuadrícula clásica). */
174
+ variant?: GalleryVariant;
175
+ /** Borde redondeado de las imágenes en px (default 6). */
176
+ radius?: number;
177
+ /** Alto fijo de cada imagen en px; 0 = alto automático. */
178
+ imageHeight?: number;
179
+ }
180
+ export interface StatItem {
181
+ id: string;
182
+ value: string;
183
+ label: string;
184
+ }
185
+ export interface StatsProps extends BlockCommonProps {
186
+ stats: StatItem[];
187
+ accentColor?: string;
188
+ }
189
+ export interface PricingPlan {
190
+ id: string;
191
+ title: string;
192
+ price: string;
193
+ period?: string;
194
+ description?: string;
195
+ features: string[];
196
+ ctaLabel: string;
197
+ ctaHref: string;
198
+ /** Tarjeta destacada (fondo oscuro). */
199
+ highlighted?: boolean;
200
+ }
201
+ export interface PricingProps extends BlockCommonProps {
202
+ /**
203
+ * "card" (default) = tarjeta única actual; "offer" = tabla de oferta;
204
+ * "two-tiers" = dos planes con uno destacado.
205
+ */
206
+ variant?: "card" | "offer" | "two-tiers";
207
+ title: string;
208
+ price: string;
209
+ period?: string;
210
+ bullets: string[];
211
+ ctaLabel: string;
212
+ ctaHref: string;
213
+ accentColor?: string;
214
+ textColor?: string;
215
+ /** Variante "offer". */
216
+ eyebrow?: string;
217
+ description?: string;
218
+ note?: string;
219
+ note2?: string;
220
+ /** Variante "two-tiers". */
221
+ heading?: string;
222
+ subtitle?: string;
223
+ plans?: PricingPlan[];
224
+ footnote?: string;
225
+ }
226
+ /**
227
+ * Diseños del bloque `product` (patrones de react.email/components/ecommerce):
228
+ * `card` la tarjeta de siempre, `hero` imagen ancha arriba con el texto centrado,
229
+ * `image-left` imagen 50% a la izquierda y `grid` fila(s) de tarjetas.
230
+ */
231
+ export type ProductVariant = "card" | "hero" | "image-left" | "grid";
232
+ /** Tarjeta del diseño `grid` de `product`. */
233
+ export interface ProductItem {
234
+ id: string;
235
+ imageUrl?: string;
236
+ name: string;
237
+ description?: string;
238
+ price?: string;
239
+ ctaLabel?: string;
240
+ ctaHref?: string;
241
+ }
242
+ export interface ProductProps extends BlockCommonProps {
243
+ imageUrl?: string;
244
+ name: string;
245
+ description?: string;
246
+ price: string;
247
+ ctaLabel: string;
248
+ ctaHref: string;
249
+ /** Diseño del bloque (default `"card"` = la tarjeta de siempre). */
250
+ variant?: ProductVariant;
251
+ /** Línea superior del diseño `hero` (p. ej. "Relojes clásicos"). */
252
+ eyebrow?: string;
253
+ /** Título de sección de `grid`. */
254
+ heading?: string;
255
+ /** Bajada del título de sección de `grid`. */
256
+ subheading?: string;
257
+ /** Tarjetas del diseño `grid`. */
258
+ products?: ProductItem[];
259
+ /** Tarjetas por fila del diseño `grid` (2, 3 o 4). */
260
+ columns?: number;
261
+ /** Alto de cada imagen en px (hero 320 · grid 180/250). */
262
+ imageHeight?: number;
263
+ /** Borde redondeado de las imágenes en px (hero 12 · resto 8). */
264
+ radius?: number;
265
+ /** Color del eyebrow, el precio y el botón. */
266
+ accentColor?: string;
267
+ }
268
+ /** Línea de pedido del bloque `checkout`. */
269
+ export interface CheckoutLine {
270
+ id: string;
271
+ imageUrl?: string;
272
+ name: string;
273
+ quantity?: string;
274
+ price?: string;
275
+ }
276
+ export interface CheckoutProps extends BlockCommonProps {
277
+ heading?: string;
278
+ lines: CheckoutLine[];
279
+ ctaLabel?: string;
280
+ ctaHref?: string;
281
+ /** Alto de la miniatura de cada línea (default 110). */
282
+ imageHeight?: number;
283
+ /** Borde redondeado de la miniatura (default 8). */
284
+ radius?: number;
285
+ /** Color del botón de compra (default `#4f46e5`). */
286
+ accentColor?: string;
287
+ /** Color del borde de la caja y de las líneas de la tabla. */
288
+ borderColor?: string;
289
+ }
290
+ export interface TestimonialProps extends BlockCommonProps {
291
+ avatarUrl?: string;
292
+ quote: string;
293
+ name: string;
294
+ role?: string;
295
+ accentColor?: string;
296
+ }
297
+ export interface FeatureItem {
298
+ id: string;
299
+ icon: string;
300
+ title: string;
301
+ description: string;
302
+ }
303
+ export interface FeaturesProps extends BlockCommonProps {
304
+ features: FeatureItem[];
305
+ /** Features por fila (2 o 3). */
306
+ columns?: number;
307
+ accentColor?: string;
308
+ }
309
+ export interface AvatarProps extends BlockCommonProps {
310
+ imageUrl?: string;
311
+ name: string;
312
+ role?: string;
313
+ size?: number;
314
+ }
315
+ export interface CodeProps extends BlockCommonProps {
316
+ code: string;
317
+ language?: string;
318
+ backgroundColor?: string;
319
+ color?: string;
320
+ }
321
+ export interface LinkProps extends BlockCommonProps {
322
+ label: string;
323
+ href: string;
324
+ color?: string;
325
+ }
326
+ export type EmailBlockProps = HeaderProps | HeroProps | HeadingProps | TextProps | ListProps | ButtonProps | ImageProps | QuoteProps | ColumnsProps | ContainerProps | GridProps | DividerProps | SpacerProps | FooterProps | SocialProps | GalleryProps | StatsProps | PricingProps | ProductProps | TestimonialProps | FeaturesProps | AvatarProps | CodeProps | LinkProps | CheckoutProps;
327
+ /** Props por tipo de bloque (base del tipado de `blockJson`). */
328
+ export interface BlockPropsMap {
329
+ header: HeaderProps;
330
+ hero: HeroProps;
331
+ heading: HeadingProps;
332
+ text: TextProps;
333
+ list: ListProps;
334
+ button: ButtonProps;
335
+ image: ImageProps;
336
+ quote: QuoteProps;
337
+ columns: ColumnsProps;
338
+ container: ContainerProps;
339
+ grid: GridProps;
340
+ divider: DividerProps;
341
+ spacer: SpacerProps;
342
+ footer: FooterProps;
343
+ social: SocialProps;
344
+ gallery: GalleryProps;
345
+ stats: StatsProps;
346
+ pricing: PricingProps;
347
+ product: ProductProps;
348
+ testimonial: TestimonialProps;
349
+ features: FeaturesProps;
350
+ avatar: AvatarProps;
351
+ code: CodeProps;
352
+ link: LinkProps;
353
+ checkout: CheckoutProps;
354
+ }
73
355
  export interface EmailBlock {
74
356
  id: string;
75
357
  type: EmailBlockType;
@@ -84,11 +366,76 @@ export interface BlockDefinition {
84
366
  description: string;
85
367
  defaultProps: EmailBlockProps;
86
368
  }
369
+ /** Parámetros UTM añadidos al destino de cada enlace. */
370
+ export interface EmailTrackingUtm {
371
+ source?: string;
372
+ medium?: string;
373
+ campaign?: string;
374
+ term?: string;
375
+ content?: string;
376
+ }
377
+ /**
378
+ * Trackeo del envío (opcional y **por envío**, no se guarda en la plantilla):
379
+ * pixel de apertura y reescritura de enlaces para registrar clics. Se aplica
380
+ * al final del render, así que sin esto la salida es idéntica.
381
+ */
382
+ export interface EmailTracking {
383
+ /** Pixel 1×1 de apertura; se inyecta antes de `</body>`. Acepta `{variables}`. */
384
+ pixelUrl?: string;
385
+ /**
386
+ * URL del tracker de clics. Debe incluir `{url}` (el destino se inserta
387
+ * codificado) y acepta `{variables}` del contexto.
388
+ */
389
+ clickUrl?: string;
390
+ /** Añade UTM al destino **antes** de pasarlo por el tracker. */
391
+ utm?: EmailTrackingUtm;
392
+ /** Substrings extra cuyo href NO se reescribe (se suman a los de por defecto). */
393
+ exclude?: string[];
394
+ /** Control total: devuelve el href final (lo que devuelvas se usa tal cual). */
395
+ transformLink?: (href: string) => string;
396
+ }
87
397
  export interface EmailSettings {
88
398
  pageBackground: string;
89
399
  cardBorderWidth: number;
90
400
  cardBorderRadius: number;
401
+ /**
402
+ * Stack CSS de la tipografía del correo (lista ordenada; el cliente usa la
403
+ * primera que tenga instalada). `""` = no emitir `font-family` y heredar la
404
+ * fuente por defecto del cliente.
405
+ */
406
+ fontFamily: string;
91
407
  }
408
+ /** Fuentes seguras (de sistema) para el correo, agrupadas por estilo. */
409
+ export declare const FONT_STACKS: readonly [{
410
+ readonly value: "system";
411
+ readonly label: "Sistema";
412
+ readonly stack: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif";
413
+ }, {
414
+ readonly value: "arial";
415
+ readonly label: "Arial / Helvetica";
416
+ readonly stack: "Arial, 'Helvetica Neue', Helvetica, sans-serif";
417
+ }, {
418
+ readonly value: "verdana";
419
+ readonly label: "Verdana / Tahoma";
420
+ readonly stack: "Verdana, Tahoma, sans-serif";
421
+ }, {
422
+ readonly value: "trebuchet";
423
+ readonly label: "Trebuchet MS";
424
+ readonly stack: "'Trebuchet MS', Verdana, sans-serif";
425
+ }, {
426
+ readonly value: "georgia";
427
+ readonly label: "Georgia (serif)";
428
+ readonly stack: "Georgia, 'Times New Roman', serif";
429
+ }, {
430
+ readonly value: "times";
431
+ readonly label: "Times New Roman (serif)";
432
+ readonly stack: "'Times New Roman', Times, serif";
433
+ }, {
434
+ readonly value: "mono";
435
+ readonly label: "Monoespaciada";
436
+ readonly stack: "'Courier New', Courier, monospace";
437
+ }];
438
+ export declare const DEFAULT_FONT_STACK: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif";
92
439
  export interface EmailPalette {
93
440
  INK: string;
94
441
  DARK: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}