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.
Files changed (49) hide show
  1. package/README.md +106 -2
  2. package/SKILL.md +217 -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 +377 -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 +758 -57
  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 +10 -2
  19. package/dist/normalize.d.ts.map +1 -1
  20. package/dist/normalize.js +166 -38
  21. package/dist/normalize.js.map +1 -1
  22. package/dist/records.d.ts +13 -0
  23. package/dist/records.d.ts.map +1 -0
  24. package/dist/records.js +93 -0
  25. package/dist/records.js.map +1 -0
  26. package/dist/registry.d.ts +35 -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/richtext.d.ts +6 -0
  31. package/dist/richtext.d.ts.map +1 -1
  32. package/dist/richtext.js +13 -0
  33. package/dist/richtext.js.map +1 -1
  34. package/dist/server.d.ts +4 -2
  35. package/dist/server.d.ts.map +1 -1
  36. package/dist/server.js +2 -1
  37. package/dist/server.js.map +1 -1
  38. package/dist/tracking.d.ts +12 -0
  39. package/dist/tracking.d.ts.map +1 -0
  40. package/dist/tracking.js +78 -0
  41. package/dist/tracking.js.map +1 -0
  42. package/dist/types.d.ts +407 -7
  43. package/dist/types.d.ts.map +1 -1
  44. package/dist/types.js +159 -0
  45. package/dist/types.js.map +1 -1
  46. package/docs/BLOCKS.md +530 -0
  47. package/docs/MCP.md +189 -0
  48. package/llms.txt +17 -0
  49. 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
- 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,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 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
+ /**
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;
@@ -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;AAoDhC,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACJ,CAAC;AAyFF,MAAM,CAAC,MAAM,iBAAiB,GAAqB;IACjD,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,MAAM;IACN,QAAQ;IACR,OAAO;IACP,OAAO;IACP,SAAS;IACT,SAAS;IACT,QAAQ;IACR,QAAQ;CACT,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAA0B,EACe,EAAE,CAC3C,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAGvD,CAAC;AAEJ,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,IAAoB,EACpB,OAA0B,EACd,EAAE;IACd,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO;QACL,EAAE,EAAE,KAAK,EAAE;QACX,IAAI;QACJ,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE;KACrC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}