create-email-renderer 0.1.1 → 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.
- package/README.md +106 -2
- package/SKILL.md +217 -0
- package/dist/build.d.ts +52 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +169 -0
- package/dist/build.js.map +1 -0
- package/dist/default-blocks.d.ts.map +1 -1
- package/dist/default-blocks.js +377 -5
- package/dist/default-blocks.js.map +1 -1
- package/dist/html-render.d.ts +4 -2
- package/dist/html-render.d.ts.map +1 -1
- package/dist/html-render.js +758 -57
- package/dist/html-render.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/normalize.d.ts +10 -2
- package/dist/normalize.d.ts.map +1 -1
- package/dist/normalize.js +166 -38
- package/dist/normalize.js.map +1 -1
- package/dist/records.d.ts +13 -0
- package/dist/records.d.ts.map +1 -0
- package/dist/records.js +93 -0
- package/dist/records.js.map +1 -0
- package/dist/registry.d.ts +35 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +31 -0
- package/dist/registry.js.map +1 -0
- package/dist/richtext.d.ts +6 -0
- package/dist/richtext.d.ts.map +1 -1
- package/dist/richtext.js +13 -0
- package/dist/richtext.js.map +1 -1
- package/dist/server.d.ts +4 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -1
- package/dist/server.js.map +1 -1
- package/dist/tracking.d.ts +12 -0
- package/dist/tracking.d.ts.map +1 -0
- package/dist/tracking.js +78 -0
- package/dist/tracking.js.map +1 -0
- package/dist/types.d.ts +407 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +159 -0
- package/dist/types.js.map +1 -1
- package/docs/BLOCKS.md +530 -0
- package/docs/MCP.md +189 -0
- package/llms.txt +17 -0
- package/package.json +17 -4
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" | "downloads";
|
|
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
|
-
|
|
56
|
-
|
|
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,282 @@ 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
|
|
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
|
+
/**
|
|
291
|
+
* Archivo subido en Ajustes (`settings.files`), no en un bloque: se sube una
|
|
292
|
+
* vez y el bloque `downloads` lo lista donde lo pongas.
|
|
293
|
+
*
|
|
294
|
+
* `url` debe ser una URL **pública** (R2/S3/tu API) para que el destinatario
|
|
295
|
+
* pueda descargarlo o tu backend adjuntarlo; los `blob:` del navegador y los
|
|
296
|
+
* `data:` gigantes solo sirven para previsualizar.
|
|
297
|
+
*/
|
|
298
|
+
export interface EmailFileAttachment {
|
|
299
|
+
id: string;
|
|
300
|
+
url: string;
|
|
301
|
+
name: string;
|
|
302
|
+
/** Tamaño en bytes (informativo: se muestra junto al nombre). */
|
|
303
|
+
size?: number;
|
|
304
|
+
/** MIME real del archivo (informativo: elige el ícono). */
|
|
305
|
+
mimeType?: string;
|
|
306
|
+
/** Adjuntar el archivo al correo (lo resuelve tu backend/ESP). */
|
|
307
|
+
attach?: boolean;
|
|
308
|
+
/** Mostrar enlace de descarga en el bloque `downloads` (default `true`). */
|
|
309
|
+
link?: boolean;
|
|
310
|
+
}
|
|
311
|
+
/** Familias de archivo (ícono/etiqueta) del bloque `downloads`. */
|
|
312
|
+
export type FileKind = "pdf" | "doc" | "sheet" | "slides" | "zip" | "image" | "file";
|
|
313
|
+
/** Etiqueta corta por familia (badge del bloque `downloads`). */
|
|
314
|
+
export declare const FILE_KIND_LABELS: Record<FileKind, string>;
|
|
315
|
+
/** Familia de un archivo a partir del nombre/URL y (si hay) su MIME. */
|
|
316
|
+
export declare const fileKind: (nameOrUrl: string, mimeType?: string) => FileKind;
|
|
317
|
+
/** `1536` -> `"1.5 KB"`. Tolerante: valores raros devuelven `""`. */
|
|
318
|
+
export declare const formatBytes: (bytes: unknown) => string;
|
|
319
|
+
export interface DownloadsProps extends BlockCommonProps {
|
|
320
|
+
heading?: string;
|
|
321
|
+
subheading?: string;
|
|
322
|
+
/** Texto del enlace de descarga (default "Descargar"). */
|
|
323
|
+
buttonLabel?: string;
|
|
324
|
+
/** Color del enlace y del badge (default `#d7b227`). */
|
|
325
|
+
accentColor?: string;
|
|
326
|
+
/** Color del borde de la caja y de las filas. */
|
|
327
|
+
borderColor?: string;
|
|
328
|
+
/** Muestra el tamaño de cada archivo (default `true`). */
|
|
329
|
+
showSize?: boolean;
|
|
330
|
+
/** Muestra el badge con el tipo de archivo (default `true`). */
|
|
331
|
+
showIcon?: boolean;
|
|
332
|
+
/** Borde redondeado de la caja (default 8). */
|
|
333
|
+
radius?: number;
|
|
334
|
+
/** Texto cuando aún no hay archivos (vacío = no pintar nada). */
|
|
335
|
+
emptyText?: string;
|
|
336
|
+
}
|
|
337
|
+
export interface TestimonialProps extends BlockCommonProps {
|
|
338
|
+
avatarUrl?: string;
|
|
339
|
+
quote: string;
|
|
340
|
+
name: string;
|
|
341
|
+
role?: string;
|
|
342
|
+
accentColor?: string;
|
|
343
|
+
}
|
|
344
|
+
export interface FeatureItem {
|
|
345
|
+
id: string;
|
|
346
|
+
icon: string;
|
|
347
|
+
title: string;
|
|
348
|
+
description: string;
|
|
349
|
+
}
|
|
350
|
+
export interface FeaturesProps extends BlockCommonProps {
|
|
351
|
+
features: FeatureItem[];
|
|
352
|
+
/** Features por fila (2 o 3). */
|
|
353
|
+
columns?: number;
|
|
354
|
+
accentColor?: string;
|
|
355
|
+
}
|
|
356
|
+
export interface AvatarProps extends BlockCommonProps {
|
|
357
|
+
imageUrl?: string;
|
|
358
|
+
name: string;
|
|
359
|
+
role?: string;
|
|
360
|
+
size?: number;
|
|
361
|
+
}
|
|
362
|
+
export interface CodeProps extends BlockCommonProps {
|
|
363
|
+
code: string;
|
|
364
|
+
language?: string;
|
|
365
|
+
backgroundColor?: string;
|
|
366
|
+
color?: string;
|
|
367
|
+
}
|
|
368
|
+
export interface LinkProps extends BlockCommonProps {
|
|
369
|
+
label: string;
|
|
370
|
+
href: string;
|
|
371
|
+
color?: string;
|
|
372
|
+
}
|
|
373
|
+
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 | DownloadsProps;
|
|
374
|
+
/** Props por tipo de bloque (base del tipado de `blockJson`). */
|
|
375
|
+
export interface BlockPropsMap {
|
|
376
|
+
header: HeaderProps;
|
|
377
|
+
hero: HeroProps;
|
|
378
|
+
heading: HeadingProps;
|
|
379
|
+
text: TextProps;
|
|
380
|
+
list: ListProps;
|
|
381
|
+
button: ButtonProps;
|
|
382
|
+
image: ImageProps;
|
|
383
|
+
quote: QuoteProps;
|
|
384
|
+
columns: ColumnsProps;
|
|
385
|
+
container: ContainerProps;
|
|
386
|
+
grid: GridProps;
|
|
387
|
+
divider: DividerProps;
|
|
388
|
+
spacer: SpacerProps;
|
|
389
|
+
footer: FooterProps;
|
|
390
|
+
social: SocialProps;
|
|
391
|
+
gallery: GalleryProps;
|
|
392
|
+
stats: StatsProps;
|
|
393
|
+
pricing: PricingProps;
|
|
394
|
+
product: ProductProps;
|
|
395
|
+
testimonial: TestimonialProps;
|
|
396
|
+
features: FeaturesProps;
|
|
397
|
+
avatar: AvatarProps;
|
|
398
|
+
code: CodeProps;
|
|
399
|
+
link: LinkProps;
|
|
400
|
+
checkout: CheckoutProps;
|
|
401
|
+
downloads: DownloadsProps;
|
|
402
|
+
}
|
|
73
403
|
export interface EmailBlock {
|
|
74
404
|
id: string;
|
|
75
405
|
type: EmailBlockType;
|
|
@@ -84,11 +414,81 @@ export interface BlockDefinition {
|
|
|
84
414
|
description: string;
|
|
85
415
|
defaultProps: EmailBlockProps;
|
|
86
416
|
}
|
|
417
|
+
/** Parámetros UTM añadidos al destino de cada enlace. */
|
|
418
|
+
export interface EmailTrackingUtm {
|
|
419
|
+
source?: string;
|
|
420
|
+
medium?: string;
|
|
421
|
+
campaign?: string;
|
|
422
|
+
term?: string;
|
|
423
|
+
content?: string;
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Trackeo del envío (opcional y **por envío**, no se guarda en la plantilla):
|
|
427
|
+
* pixel de apertura y reescritura de enlaces para registrar clics. Se aplica
|
|
428
|
+
* al final del render, así que sin esto la salida es idéntica.
|
|
429
|
+
*/
|
|
430
|
+
export interface EmailTracking {
|
|
431
|
+
/** Pixel 1×1 de apertura; se inyecta antes de `</body>`. Acepta `{variables}`. */
|
|
432
|
+
pixelUrl?: string;
|
|
433
|
+
/**
|
|
434
|
+
* URL del tracker de clics. Debe incluir `{url}` (el destino se inserta
|
|
435
|
+
* codificado) y acepta `{variables}` del contexto.
|
|
436
|
+
*/
|
|
437
|
+
clickUrl?: string;
|
|
438
|
+
/** Añade UTM al destino **antes** de pasarlo por el tracker. */
|
|
439
|
+
utm?: EmailTrackingUtm;
|
|
440
|
+
/** Substrings extra cuyo href NO se reescribe (se suman a los de por defecto). */
|
|
441
|
+
exclude?: string[];
|
|
442
|
+
/** Control total: devuelve el href final (lo que devuelvas se usa tal cual). */
|
|
443
|
+
transformLink?: (href: string) => string;
|
|
444
|
+
}
|
|
87
445
|
export interface EmailSettings {
|
|
88
446
|
pageBackground: string;
|
|
89
447
|
cardBorderWidth: number;
|
|
90
448
|
cardBorderRadius: number;
|
|
449
|
+
/**
|
|
450
|
+
* Stack CSS de la tipografía del correo (lista ordenada; el cliente usa la
|
|
451
|
+
* primera que tenga instalada). `""` = no emitir `font-family` y heredar la
|
|
452
|
+
* fuente por defecto del cliente.
|
|
453
|
+
*/
|
|
454
|
+
fontFamily: string;
|
|
455
|
+
/**
|
|
456
|
+
* Archivos subidos en Ajustes: el bloque `downloads` los lista y tu backend
|
|
457
|
+
* los adjunta al enviar (`attach`). Nunca se descartan por estar vacío.
|
|
458
|
+
*/
|
|
459
|
+
files: EmailFileAttachment[];
|
|
91
460
|
}
|
|
461
|
+
/** Fuentes seguras (de sistema) para el correo, agrupadas por estilo. */
|
|
462
|
+
export declare const FONT_STACKS: readonly [{
|
|
463
|
+
readonly value: "system";
|
|
464
|
+
readonly label: "Sistema";
|
|
465
|
+
readonly stack: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif";
|
|
466
|
+
}, {
|
|
467
|
+
readonly value: "arial";
|
|
468
|
+
readonly label: "Arial / Helvetica";
|
|
469
|
+
readonly stack: "Arial, 'Helvetica Neue', Helvetica, sans-serif";
|
|
470
|
+
}, {
|
|
471
|
+
readonly value: "verdana";
|
|
472
|
+
readonly label: "Verdana / Tahoma";
|
|
473
|
+
readonly stack: "Verdana, Tahoma, sans-serif";
|
|
474
|
+
}, {
|
|
475
|
+
readonly value: "trebuchet";
|
|
476
|
+
readonly label: "Trebuchet MS";
|
|
477
|
+
readonly stack: "'Trebuchet MS', Verdana, sans-serif";
|
|
478
|
+
}, {
|
|
479
|
+
readonly value: "georgia";
|
|
480
|
+
readonly label: "Georgia (serif)";
|
|
481
|
+
readonly stack: "Georgia, 'Times New Roman', serif";
|
|
482
|
+
}, {
|
|
483
|
+
readonly value: "times";
|
|
484
|
+
readonly label: "Times New Roman (serif)";
|
|
485
|
+
readonly stack: "'Times New Roman', Times, serif";
|
|
486
|
+
}, {
|
|
487
|
+
readonly value: "mono";
|
|
488
|
+
readonly label: "Monoespaciada";
|
|
489
|
+
readonly stack: "'Courier New', Courier, monospace";
|
|
490
|
+
}];
|
|
491
|
+
export declare const DEFAULT_FONT_STACK: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif";
|
|
92
492
|
export interface EmailPalette {
|
|
93
493
|
INK: string;
|
|
94
494
|
DARK: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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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"}
|
package/dist/types.js
CHANGED
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
import { newId } from "./id.js";
|
|
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 const MAX_BLOCK_DEPTH = 1;
|
|
7
|
+
/** Tipos que pueden contener bloques hijos. */
|
|
8
|
+
export const CONTAINER_BLOCK_TYPES = [
|
|
9
|
+
"container",
|
|
10
|
+
"columns",
|
|
11
|
+
"grid",
|
|
12
|
+
"footer",
|
|
13
|
+
];
|
|
14
|
+
export const isContainerType = (type) => type === "container" ||
|
|
15
|
+
type === "columns" ||
|
|
16
|
+
type === "grid" ||
|
|
17
|
+
type === "footer";
|
|
2
18
|
export const LIST_ICONS = [
|
|
3
19
|
"✓",
|
|
4
20
|
"•",
|
|
@@ -11,6 +27,135 @@ export const LIST_ICONS = [
|
|
|
11
27
|
"»",
|
|
12
28
|
"–",
|
|
13
29
|
];
|
|
30
|
+
/** Glifos sugeridos para el modo logo (editables o sustituibles por una URL). */
|
|
31
|
+
export const SOCIAL_ICONS = [
|
|
32
|
+
"◎",
|
|
33
|
+
"f",
|
|
34
|
+
"X",
|
|
35
|
+
"in",
|
|
36
|
+
"▶",
|
|
37
|
+
"♪",
|
|
38
|
+
"✆",
|
|
39
|
+
"✉",
|
|
40
|
+
"@",
|
|
41
|
+
"★",
|
|
42
|
+
"●",
|
|
43
|
+
"◆",
|
|
44
|
+
];
|
|
45
|
+
/** Etiqueta corta por familia (badge del bloque `downloads`). */
|
|
46
|
+
export const FILE_KIND_LABELS = {
|
|
47
|
+
pdf: "PDF",
|
|
48
|
+
doc: "DOC",
|
|
49
|
+
sheet: "XLS",
|
|
50
|
+
slides: "PPT",
|
|
51
|
+
zip: "ZIP",
|
|
52
|
+
image: "IMG",
|
|
53
|
+
file: "FILE",
|
|
54
|
+
};
|
|
55
|
+
const FILE_KIND_BY_EXTENSION = {
|
|
56
|
+
pdf: "pdf",
|
|
57
|
+
doc: "doc",
|
|
58
|
+
docx: "doc",
|
|
59
|
+
odt: "doc",
|
|
60
|
+
rtf: "doc",
|
|
61
|
+
txt: "doc",
|
|
62
|
+
xls: "sheet",
|
|
63
|
+
xlsx: "sheet",
|
|
64
|
+
csv: "sheet",
|
|
65
|
+
ods: "sheet",
|
|
66
|
+
ppt: "slides",
|
|
67
|
+
pptx: "slides",
|
|
68
|
+
odp: "slides",
|
|
69
|
+
zip: "zip",
|
|
70
|
+
rar: "zip",
|
|
71
|
+
"7z": "zip",
|
|
72
|
+
gz: "zip",
|
|
73
|
+
tar: "zip",
|
|
74
|
+
png: "image",
|
|
75
|
+
jpg: "image",
|
|
76
|
+
jpeg: "image",
|
|
77
|
+
gif: "image",
|
|
78
|
+
webp: "image",
|
|
79
|
+
avif: "image",
|
|
80
|
+
svg: "image",
|
|
81
|
+
bmp: "image",
|
|
82
|
+
};
|
|
83
|
+
const KIND_BY_MIME_PREFIX = [
|
|
84
|
+
["image/", "image"],
|
|
85
|
+
["application/pdf", "pdf"],
|
|
86
|
+
["application/zip", "zip"],
|
|
87
|
+
["application/x-zip", "zip"],
|
|
88
|
+
["application/x-rar", "zip"],
|
|
89
|
+
["application/msword", "doc"],
|
|
90
|
+
["application/vnd.openxmlformats-officedocument.wordprocessingml", "doc"],
|
|
91
|
+
["application/vnd.ms-excel", "sheet"],
|
|
92
|
+
["application/vnd.openxmlformats-officedocument.spreadsheetml", "sheet"],
|
|
93
|
+
["text/csv", "sheet"],
|
|
94
|
+
["application/vnd.ms-powerpoint", "slides"],
|
|
95
|
+
["application/vnd.openxmlformats-officedocument.presentationml", "slides"],
|
|
96
|
+
["text/", "doc"],
|
|
97
|
+
];
|
|
98
|
+
/** Familia de un archivo a partir del nombre/URL y (si hay) su MIME. */
|
|
99
|
+
export const fileKind = (nameOrUrl, mimeType) => {
|
|
100
|
+
const mime = (mimeType || "").toLowerCase().split(";")[0].trim();
|
|
101
|
+
for (const [prefix, kind] of KIND_BY_MIME_PREFIX) {
|
|
102
|
+
if (mime.startsWith(prefix))
|
|
103
|
+
return kind;
|
|
104
|
+
}
|
|
105
|
+
const clean = (nameOrUrl || "").split("?")[0].split("#")[0];
|
|
106
|
+
const ext = clean.includes(".") ? clean.split(".").pop().toLowerCase() : "";
|
|
107
|
+
return FILE_KIND_BY_EXTENSION[ext] ?? "file";
|
|
108
|
+
};
|
|
109
|
+
/** `1536` -> `"1.5 KB"`. Tolerante: valores raros devuelven `""`. */
|
|
110
|
+
export const formatBytes = (bytes) => {
|
|
111
|
+
if (typeof bytes !== "number" || !Number.isFinite(bytes) || bytes <= 0) {
|
|
112
|
+
return "";
|
|
113
|
+
}
|
|
114
|
+
if (bytes < 1024)
|
|
115
|
+
return `${Math.round(bytes)} B`;
|
|
116
|
+
if (bytes < 1024 * 1024)
|
|
117
|
+
return `${(bytes / 1024).toFixed(0)} KB`;
|
|
118
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
119
|
+
};
|
|
120
|
+
/** Fuentes seguras (de sistema) para el correo, agrupadas por estilo. */
|
|
121
|
+
export const FONT_STACKS = [
|
|
122
|
+
{
|
|
123
|
+
value: "system",
|
|
124
|
+
label: "Sistema",
|
|
125
|
+
stack: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
value: "arial",
|
|
129
|
+
label: "Arial / Helvetica",
|
|
130
|
+
stack: "Arial, 'Helvetica Neue', Helvetica, sans-serif",
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
value: "verdana",
|
|
134
|
+
label: "Verdana / Tahoma",
|
|
135
|
+
stack: "Verdana, Tahoma, sans-serif",
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
value: "trebuchet",
|
|
139
|
+
label: "Trebuchet MS",
|
|
140
|
+
stack: "'Trebuchet MS', Verdana, sans-serif",
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
value: "georgia",
|
|
144
|
+
label: "Georgia (serif)",
|
|
145
|
+
stack: "Georgia, 'Times New Roman', serif",
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
value: "times",
|
|
149
|
+
label: "Times New Roman (serif)",
|
|
150
|
+
stack: "'Times New Roman', Times, serif",
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
value: "mono",
|
|
154
|
+
label: "Monoespaciada",
|
|
155
|
+
stack: "'Courier New', Courier, monospace",
|
|
156
|
+
},
|
|
157
|
+
];
|
|
158
|
+
export const DEFAULT_FONT_STACK = FONT_STACKS[0].stack;
|
|
14
159
|
export const EMAIL_BLOCK_TYPES = [
|
|
15
160
|
"header",
|
|
16
161
|
"hero",
|
|
@@ -21,9 +166,23 @@ export const EMAIL_BLOCK_TYPES = [
|
|
|
21
166
|
"image",
|
|
22
167
|
"quote",
|
|
23
168
|
"columns",
|
|
169
|
+
"container",
|
|
170
|
+
"grid",
|
|
24
171
|
"divider",
|
|
25
172
|
"spacer",
|
|
26
173
|
"footer",
|
|
174
|
+
"social",
|
|
175
|
+
"gallery",
|
|
176
|
+
"stats",
|
|
177
|
+
"pricing",
|
|
178
|
+
"product",
|
|
179
|
+
"testimonial",
|
|
180
|
+
"features",
|
|
181
|
+
"avatar",
|
|
182
|
+
"code",
|
|
183
|
+
"link",
|
|
184
|
+
"checkout",
|
|
185
|
+
"downloads",
|
|
27
186
|
];
|
|
28
187
|
export const buildBlockMap = (library) => Object.fromEntries(library.map((def) => [def.type, def]));
|
|
29
188
|
export const createBlock = (type, library) => {
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|