create-email-template 0.2.0 → 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 CHANGED
@@ -47,7 +47,8 @@ export function EditorPage() {
47
47
  ```tsx
48
48
  <EmailBuilderProvider
49
49
  config={{ /* opciones del builder (todas opcionales) */ }}
50
- uploadImage={fnUpload} // opcional: subida de imágenes
50
+ uploadImage={fnUpload} // opcional: subida de imágenes
51
+ uploadFile={fnUploadFile} // opcional: subida de documentos (PDF, DOC, XLS…)
51
52
  autosave={{ /* opcional: autoguardado */ }}
52
53
  >
53
54
  ```
@@ -57,9 +58,10 @@ export function EditorPage() {
57
58
  | Opción | Tipo | Default | Qué hace |
58
59
  |---|---|---|---|
59
60
  | `blockDefaults` | `Partial<Record<Bloque, Partial<Props>>>` | — | Valores iniciales por tipo de bloque. Se aplican **al arrastrar** el bloque al canvas. |
60
- | `blockLibrary` | `BlockDefinition[]` | `DEFAULT_BLOCK_LIBRARY` (12 bloques) | Qué bloques aparecen en la palette y con qué defaultProps. |
61
+ | `blockLibrary` | `BlockDefinition[]` | `DEFAULT_BLOCK_LIBRARY` (26 bloques) | Qué bloques aparecen en la palette y con qué defaultProps. |
61
62
  | `palette` | `Partial<EmailPalette>` | `DEFAULT_PALETTE` | Colores base del tema: `INK` (texto), `DARK` (fondos oscuros), `GOLD` (acentos), `CREAM_DIM` (texto secundario). |
62
- | `defaultSettings` | `Partial<EmailSettings>` | `DEFAULT_SETTINGS` | Fondo de página, grosor y redondeo del borde de la tarjeta. |
63
+ | `defaultSettings` | `Partial<EmailSettings>` | `DEFAULT_SETTINGS` | Fondo de página, grosor/redondeo del borde, tipografía y **archivos** (`files`). |
64
+ | `files` | `Partial<EmailBuilderFileOptions>` | `{ accept, maxSizeMb: 10, maxCount: 10, warnTotalMb: 5 }` | Límites y formatos aceptados al subir archivos en Ajustes. |
63
65
  | `variables` | `EmailVariable[]` | `DEFAULT_VARIABLES` | Etiquetas `{key}` disponibles para el usuario. |
64
66
  | `variableSections` | `EmailVariableSection[]` | agrupación única | Agrupa las variables por categoría en el dialog "Etiquetas disponibles". |
65
67
  | `sampleContext` | `EmailContext` | `SAMPLE_CONTEXT` | Datos de ejemplo: al previsualizar, `{firstName}` se ve como el valor de aquí. |
@@ -104,24 +106,20 @@ export function EditorPage() {
104
106
  >
105
107
  ```
106
108
 
107
- #### Bloques disponibles y sus props
109
+ #### Bloques disponibles
108
110
 
109
- Todos los bloques aceptan `align` ("left" | "center" | "right"), `backgroundColor`, `paddingY` y `paddingX`.
111
+ **26 bloques**: `header`, `hero`, `heading`, `text`, `list`, `button`, `image`, `quote`,
112
+ `columns`, `container`, `grid`, `divider`, `spacer`, `footer`, `social`, `gallery`, `stats`,
113
+ `pricing`, `product`, `checkout`, `downloads`, `testimonial`, `features`, `avatar`, `code` y
114
+ `link`. Muchos tienen **variantes** (`list`, `footer`, `pricing`, `gallery`, `product`).
110
115
 
111
- | Tipo | Props específicas |
112
- |---|---|
113
- | `header` | `brandName`, `tagline?`, `logoUrl?` |
114
- | `hero` | `title`, `subtitle?`, `imageUrl?` |
115
- | `heading` | `text`, `size?`, `color?` |
116
- | `text` | `text`, `size?`, `color?` |
117
- | `list` | `items: string[]`, `icon?` ("✓", "•", "→"…) |
118
- | `button` | `label`, `href` (acepta variables), `backgroundColor?`, `color?`, `blockBackgroundColor?` |
119
- | `image` | `src`, `alt?`, `width?`, `href?` (si hay `href`, la imagen es clicable) |
120
- | `quote` | `text`, `author?`, `borderColor?`, `borderWidth?`, `marginLeft?` |
121
- | `columns` | `columns: { id: string; text: string }[]` |
122
- | `divider` | `color?`, `height?` |
123
- | `spacer` | `height?`, `backgroundColor?` |
124
- | `footer` | `text?`, `brandName?`, `backgroundColor?` |
116
+ Todos aceptan `align`, `backgroundColor`, `paddingY`/`paddingX` (+ overrides por lado),
117
+ `marginTop`/`marginBottom` y `gap`.
118
+
119
+ 📖 Props, defaults, variantes y ejemplos de cada uno: el catálogo del core,
120
+ [`create-email-renderer/docs/BLOCKS.md`](../create-email-renderer/docs/BLOCKS.md) (desde npm:
121
+ `node_modules/create-email-renderer/docs/BLOCKS.md`). Es la **única fuente de verdad** y viaja
122
+ con el paquete del renderer.
125
123
 
126
124
  ### `uploadImage`
127
125
 
@@ -137,6 +135,43 @@ uploadImage={async (file: File) => {
137
135
  }}
138
136
  ```
139
137
 
138
+ ### `uploadFile`
139
+
140
+ Se invoca cuando el usuario sube un documento desde **Ajustes** (el engranaje del lienzo). Recibe
141
+ el `File` y debe devolver la **URL pública** donde quedó alojado: el destinatario la usa para
142
+ descargar y tu backend para adjuntarlo al enviar.
143
+
144
+ ```tsx
145
+ uploadFile={async (file: File) => {
146
+ const form = new FormData();
147
+ form.append("file", file);
148
+ const res = await fetch("/api/uploads", { method: "POST", body: form });
149
+ const { url } = await res.json();
150
+ return url; // URL pública (R2, S3, tu API…)
151
+ }}
152
+ ```
153
+
154
+ Los archivos quedan en `settings.files` del payload y el bloque **`downloads`** los lista en el
155
+ correo. Cada archivo tiene dos interruptores:
156
+
157
+ | Interruptor | Campo | Para qué |
158
+ |---|---|---|
159
+ | **Adjuntar** | `attach` | Que tu ESP lo adjunte al enviar (el HTML no adjunta nada). |
160
+ | **Enlace** | `link` | Que aparezca en el bloque `downloads` (default `true`). |
161
+
162
+ Contrato del backend:
163
+
164
+ ```ts
165
+ const { content, settings } = parseTemplatePayload(template.payload);
166
+ const attachments = settings.files
167
+ .filter((f) => f.attach)
168
+ .map((f) => ({ filename: f.name, path: f.url })); // p. ej. Resend/SES
169
+ const { html, subject } = await renderTemplateEmail({ subject, payload: template.payload, context });
170
+ ```
171
+
172
+ > Sin `uploadFile` la librería usa `URL.createObjectURL` (blob local) para que puedas probar el
173
+ > editor: sirve para previsualizar, **no** para un correo real.
174
+
140
175
  ---
141
176
 
142
177
  ## Autoguardado (`autosave`) y guardado manual
package/SKILL.md CHANGED
@@ -66,7 +66,7 @@ consumidor debe importarlo explícitamente; sin él, el editor se ve sin estilos
66
66
  | `Canvas` / `SortableCanvas` | Lienzo con drag & drop. |
67
67
  | `EditableBlockRenderer` | Render editable de un bloque concreto. |
68
68
  | `PropertiesPanel` | Panel de propiedades schema-driven. |
69
- | `InlineTextEditor`, `SelectionToolbar`, `VariablesInfoDialog` | Piezas internas reutilizables. |
69
+ | `InlineTextEditor`, `SelectionToolbar`, `VariablesInfoDialog`, `SettingsDialog` | Piezas internas reutilizables (el dialog de Ajustes gestiona tipografía, fondo y archivos). |
70
70
 
71
71
  ### Hooks (siempre dentro de `<EmailBuilderProvider>`)
72
72
 
@@ -88,8 +88,34 @@ Acciones: `addBlock(type, index?, location?)`, `removeBlock`, `duplicateBlock`,
88
88
  ### Provider (`EmailBuilderConfig`)
89
89
 
90
90
  `variables`, `variableSections`, `blockLibrary`, `blockDefaults`, `palette`, `defaultSettings`,
91
- `sampleContext`, `labels`, `historyLimit` (default 50). `autosave` recibe
92
- `{ onSave, intervalMs (10s), enabled, onSaved }` y `uploadImage` sirve para subir imágenes.
91
+ `sampleContext`, `files`, `labels`, `historyLimit` (default 50). `autosave` recibe
92
+ `{ onSave, intervalMs (10s), enabled, onSaved }`; `uploadImage` sube imágenes y `uploadFile`
93
+ sube documentos (PDF, DOC, XLS…).
94
+
95
+ ### Archivos descargables (`uploadFile` + `settings.files`)
96
+
97
+ El usuario sube archivos en **Ajustes** (el engranaje del lienzo). Quedan en
98
+ `settings.files` del payload y el bloque `downloads` los lista en el correo:
99
+
100
+ ```tsx
101
+ <EmailBuilderProvider
102
+ uploadFile={async (file) => {
103
+ const form = new FormData();
104
+ form.append("file", file);
105
+ const res = await fetch("/api/uploads", { method: "POST", body: form });
106
+ const { url } = await res.json();
107
+ return url; // URL PÚBLICA: el destinatario la descarga y tu backend la adjunta
108
+ }}
109
+ config={{ files: { maxSizeMb: 10, maxCount: 10, warnTotalMb: 5 } }} // opcional
110
+ >
111
+ ```
112
+
113
+ - Cada archivo lleva dos interruptores: **Adjuntar** (`attach`, lo resuelve tu ESP al enviar) y
114
+ **Enlace** (`link`, aparece en el bloque `downloads`). Defaults: `link: true`, `attach: false`.
115
+ - Sin `uploadFile`, la demo usa `URL.createObjectURL` (blob local): sirve para previsualizar,
116
+ **no** para un correo real.
117
+ - Tu backend lee los adjuntos del payload:
118
+ `settings.files.filter((f) => f.attach).map((f) => ({ filename: f.name, path: f.url }))`.
93
119
 
94
120
  ## Flujos típicos
95
121
 
@@ -143,3 +169,5 @@ await saveNow();
143
169
  | Estilos raros en tu app | Un selector del CSS de la lib no está scopeado (`check:css-scope` lo vigila). |
144
170
  | El canvas muestra una versión vieja | Caché del dev server: borra `node_modules/.vite` y reinicia. |
145
171
  | `dirty` no baja | Solo `markSaved()` (autosave o manual) lo limpia. |
172
+ | El bloque de descargas no muestra nada | No hay archivos en Ajustes con el interruptor **Enlace** activo. |
173
+ | El archivo no llega adjunto | El HTML no adjunta: tu backend debe leer `settings.files` con `attach: true`. |
@@ -1 +1 @@
1
- {"version":3,"file":"block-views-builtin.d.ts","sourceRoot":"","sources":["../src/block-views-builtin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAsnBzE,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CACpC,MAAM,EACN,qBAAqB,CAAC,UAAU,CAAC,CA2BlC,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CA0B1D,CAAA;AAED,eAAO,MAAM,iBAAiB,aAO5B,CAAA"}
1
+ {"version":3,"file":"block-views-builtin.d.ts","sourceRoot":"","sources":["../src/block-views-builtin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAmqBzE,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CACpC,MAAM,EACN,qBAAqB,CAAC,UAAU,CAAC,CA4BlC,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CA2B1D,CAAA;AAED,eAAO,MAAM,iBAAiB,aAO5B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../../src/components/builder/canvas.tsx"],"names":[],"mappings":"AA8BA,eAAO,MAAM,cAAc,GAAI,cAE5B;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,gCAkQA,CAAC"}
1
+ {"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../../src/components/builder/canvas.tsx"],"names":[],"mappings":"AA4BA,eAAO,MAAM,cAAc,GAAI,cAE5B;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,gCAsJA,CAAC"}
@@ -24,6 +24,11 @@ export declare const EditableFeatures: ({ props, palette }: BlockEditableProps)
24
24
  export declare const EditableAvatar: ({ props, palette }: BlockEditableProps) => import("react").JSX.Element;
25
25
  export declare const EditableCode: ({ props }: BlockEditableProps) => import("react").JSX.Element;
26
26
  export declare const EditableLink: ({ props, palette }: BlockEditableProps) => import("react").JSX.Element;
27
+ /**
28
+ * Lista de archivos descargables. Los archivos NO se editan aquí: se suben en
29
+ * Ajustes (`settings.files`); el lienzo solo replica el diseño final.
30
+ */
31
+ export declare const EditableDownloads: ({ props, palette, labels, }: BlockEditableProps) => import("react").JSX.Element;
27
32
  export declare const EditableBlockRenderer: ({ block }: Props) => import("react").JSX.Element | null;
28
33
  export {};
29
34
  //# sourceMappingURL=editable-block-renderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editable-block-renderer.d.ts","sourceRoot":"","sources":["../../../src/components/builder/editable-block-renderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,kBAAkB,CAAA;AAUrE,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEzE,UAAU,KAAK;IACb,KAAK,EAAE,UAAU,CAAA;CAClB;AAED,eAAO,MAAM,cAAc,GAAI,0BAI5B,kBAAkB,gCA+CpB,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,yBAAyB,kBAAkB,gCAqCvE,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,yBAAyB,kBAAkB,gCAyB1E,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,yBAAyB,kBAAkB,gCAwBvE,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,iCAAiC,kBAAkB,gCAsP/E,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,yBAAyB,kBAAkB,gCAwCzE,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,6BAI3B,kBAAkB,gCAuCpB,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,iCAAiC,kBAAkB,gCAuChF,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,WAAW,kBAAkB,gCAe5D,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,WAAW,kBAAkB,gCAO3D,CAAA;AAwBD,eAAO,MAAM,cAAc,GAAI,oBAAoB,kBAAkB,gCAgDpE,CAAA;AA8CD,eAAO,MAAM,eAAe,GAAI,oBAAoB,kBAAkB,gCAqErE,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,oBAAoB,kBAAkB,gCAsBnE,CAAA;AAyKD,eAAO,MAAM,eAAe,GAAI,oBAAoB,kBAAkB,gCAkErE,CAAA;AAiND,eAAO,MAAM,gBAAgB,GAAI,oBAAoB,kBAAkB,gCAoFtE,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,oBAAoB,kBAAkB,gCAKrE,CAAA;AA4CD,eAAO,MAAM,mBAAmB,GAAI,oBAAoB,kBAAkB,gCAiCzE,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,oBAAoB,kBAAkB,gCA8BtE,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,oBAAoB,kBAAkB,gCAmCpE,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,WAAW,kBAAkB,gCAmBzD,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,oBAAoB,kBAAkB,gCAalE,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,WAAW,KAAK,uCAuBrD,CAAA"}
1
+ {"version":3,"file":"editable-block-renderer.d.ts","sourceRoot":"","sources":["../../../src/components/builder/editable-block-renderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,kBAAkB,CAAA;AAgBrE,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEzE,UAAU,KAAK;IACb,KAAK,EAAE,UAAU,CAAA;CAClB;AAED,eAAO,MAAM,cAAc,GAAI,0BAI5B,kBAAkB,gCA+CpB,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,yBAAyB,kBAAkB,gCAqCvE,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,yBAAyB,kBAAkB,gCAyB1E,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,yBAAyB,kBAAkB,gCAwBvE,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,iCAAiC,kBAAkB,gCAsP/E,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,yBAAyB,kBAAkB,gCAwCzE,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,6BAI3B,kBAAkB,gCAuCpB,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,iCAAiC,kBAAkB,gCAuChF,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,WAAW,kBAAkB,gCAe5D,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,WAAW,kBAAkB,gCAO3D,CAAA;AAwBD,eAAO,MAAM,cAAc,GAAI,oBAAoB,kBAAkB,gCAgDpE,CAAA;AA8CD,eAAO,MAAM,eAAe,GAAI,oBAAoB,kBAAkB,gCAqErE,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,oBAAoB,kBAAkB,gCAsBnE,CAAA;AAyKD,eAAO,MAAM,eAAe,GAAI,oBAAoB,kBAAkB,gCAkErE,CAAA;AAiND,eAAO,MAAM,gBAAgB,GAAI,oBAAoB,kBAAkB,gCAoFtE,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,oBAAoB,kBAAkB,gCAKrE,CAAA;AA4CD,eAAO,MAAM,mBAAmB,GAAI,oBAAoB,kBAAkB,gCAiCzE,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,oBAAoB,kBAAkB,gCA8BtE,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,oBAAoB,kBAAkB,gCAmCpE,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,WAAW,kBAAkB,gCAmBzD,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,oBAAoB,kBAAkB,gCAalE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,6BAI/B,kBAAkB,gCAsHpB,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,WAAW,KAAK,uCAuBrD,CAAA"}
@@ -0,0 +1,7 @@
1
+ interface Props {
2
+ open: boolean;
3
+ onOpenChange: (open: boolean) => void;
4
+ }
5
+ export declare const SettingsDialog: ({ open, onOpenChange }: Props) => import("react").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=settings-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-dialog.d.ts","sourceRoot":"","sources":["../../../src/components/builder/settings-dialog.tsx"],"names":[],"mappings":"AAwCA,UAAU,KAAK;IACb,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACtC;AA8DD,eAAO,MAAM,cAAc,GAAI,wBAAwB,KAAK,gCAuU3D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAEV,kBAAkB,EAClB,0BAA0B,EAC3B,MAAM,SAAS,CAAC;AAejB,eAAO,MAAM,yBAAyB,GACpC,SAAS,kBAAkB,KAC1B,0BAyCF,CAAC"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAEV,kBAAkB,EAClB,0BAA0B,EAC3B,MAAM,SAAS,CAAC;AAejB,eAAO,MAAM,yBAAyB,GACpC,SAAS,kBAAkB,KAC1B,0BA0CF,CAAC"}
@@ -4,6 +4,24 @@ import type { EmailVariable, EmailVariableSection } from "../core/variables";
4
4
  export type DistributivePartial<T> = T extends unknown ? Partial<T> : never;
5
5
  /** Sube una imagen y devuelve su URL (R2, S3, tu API, etc.). */
6
6
  export type UploadImage = (file: File) => Promise<string>;
7
+ /**
8
+ * Sube un documento (PDF, DOC, XLS…) y devuelve su URL **pública**: el
9
+ * destinatario la usa para descargar y tu backend para adjuntarlo al enviar.
10
+ * Los `blob:`/`data:` locales solo sirven para previsualizar en el editor.
11
+ */
12
+ export type UploadFile = (file: File) => Promise<string>;
13
+ /** Límites y formatos aceptados por el gestor de archivos de Ajustes. */
14
+ export interface EmailBuilderFileOptions {
15
+ /** Atributo `accept` del input (extensiones/MIME). */
16
+ accept: string;
17
+ /** Tamaño máximo por archivo en MB. */
18
+ maxSizeMb: number;
19
+ /** Cantidad máxima de archivos subidos. */
20
+ maxCount: number;
21
+ /** Avisa (sin bloquear) si el total de adjuntos supera estos MB. */
22
+ warnTotalMb: number;
23
+ }
24
+ export declare const DEFAULT_FILE_OPTIONS: EmailBuilderFileOptions;
7
25
  /**
8
26
  * Valores por defecto personalizados por tipo de bloque.
9
27
  * Se aplican sobre los defaults de la librería (o sobre un `blockLibrary` custom).
@@ -57,7 +75,24 @@ export interface EmailBuilderLabels {
57
75
  cardBorderRadius: string;
58
76
  fontFamily: string;
59
77
  fontCustom: string;
78
+ files: string;
79
+ filesHint: string;
80
+ filesEmpty: string;
81
+ uploadFile: string;
82
+ fileUploaded: string;
83
+ fileUploadError: string;
84
+ fileTooLarge: string;
85
+ fileTypeNotAllowed: string;
86
+ tooManyFiles: string;
87
+ totalSizeWarning: string;
88
+ attachFile: string;
89
+ linkFile: string;
90
+ copyFileUrl: string;
91
+ fileNotPublic: string;
92
+ removeFile: string;
93
+ downloadsHint: string;
60
94
  settings: string;
95
+ settingsHint: string;
61
96
  deviceMobile: string;
62
97
  deviceDesktop: string;
63
98
  canvasPreview: string;
@@ -80,6 +115,8 @@ export interface EmailBuilderConfig {
80
115
  blockDefaults?: BlockDefaultsMap;
81
116
  palette?: Partial<EmailPalette>;
82
117
  defaultSettings?: Partial<EmailSettings>;
118
+ /** Límites y formatos de la subida de archivos (Ajustes). */
119
+ files?: Partial<EmailBuilderFileOptions>;
83
120
  sampleContext?: EmailContext;
84
121
  labels?: Partial<EmailBuilderLabels>;
85
122
  /** Profundidad máxima del historial de deshacer. Default: 50. */
@@ -92,8 +129,10 @@ export interface ResolvedEmailBuilderConfig {
92
129
  blockMap: Record<EmailBlockType, BlockDefinition>;
93
130
  palette: EmailPalette;
94
131
  defaultSettings: EmailSettings;
132
+ files: EmailBuilderFileOptions;
95
133
  sampleContext: EmailContext;
96
134
  uploadImage?: UploadImage;
135
+ uploadFile?: UploadFile;
97
136
  labels: EmailBuilderLabels;
98
137
  historyLimit: number;
99
138
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import type { EmailBlock, EmailBlockProps, EmailContext, EmailPalette } from "./types";
2
+ import type { EmailBlock, EmailBlockProps, EmailContext, EmailPalette, EmailFileAttachment } from "./types";
3
3
  import { type BlockPreviewProps } from "../block-views";
4
4
  export declare const alignMap: {
5
5
  readonly left: "left";
@@ -10,6 +10,12 @@ export { alignMap as blockAlignMap };
10
10
  export declare const blockPadding: (props: EmailBlockProps) => React.CSSProperties;
11
11
  /** Padding por lado + márgenes externos (paridad con el render HTML). */
12
12
  export declare const blockSpacing: (props: EmailBlockProps) => React.CSSProperties;
13
+ /**
14
+ * Archivos globales del correo (`settings.files`): se suben en Ajustes y el
15
+ * bloque `downloads` los lee de aquí. El contexto los baja por cualquier
16
+ * anidamiento (contenedor/columnas/grid) sin pasarlos por props.
17
+ */
18
+ export declare const EmailFilesContext: React.Context<EmailFileAttachment[]>;
13
19
  /** Preview components react-email por tipo — alimentan el registry de vistas. */
14
20
  export declare const PREVIEW_COMPONENTS: Record<string, React.ComponentType<BlockPreviewProps>>;
15
21
  export declare const BlockRenderer: ({ block, context, palette, }: {
@@ -17,15 +23,16 @@ export declare const BlockRenderer: ({ block, context, palette, }: {
17
23
  context: EmailContext;
18
24
  palette?: EmailPalette;
19
25
  }) => React.JSX.Element | null;
20
- export declare const EmailBody: ({ blocks, context, palette, cardBorderWidth, cardBorderRadius, fontFamily, }: {
26
+ export declare const EmailBody: ({ blocks, context, palette, cardBorderWidth, cardBorderRadius, fontFamily, files, }: {
21
27
  blocks: EmailBlock[];
22
28
  context: EmailContext;
23
29
  palette?: EmailPalette;
24
30
  cardBorderWidth?: number;
25
31
  cardBorderRadius?: number;
26
32
  fontFamily?: string;
33
+ files?: EmailFileAttachment[];
27
34
  }) => React.JSX.Element;
28
- export declare const EmailTemplate: ({ blocks, subject, context, palette, pageBackground, cardBorderWidth, cardBorderRadius, fontFamily, }: {
35
+ export declare const EmailTemplate: ({ blocks, subject, context, palette, pageBackground, cardBorderWidth, cardBorderRadius, fontFamily, files, }: {
29
36
  blocks: EmailBlock[];
30
37
  subject: string;
31
38
  context: EmailContext;
@@ -34,5 +41,6 @@ export declare const EmailTemplate: ({ blocks, subject, context, palette, pageBa
34
41
  cardBorderWidth?: number;
35
42
  cardBorderRadius?: number;
36
43
  fontFamily?: string;
44
+ files?: EmailFileAttachment[];
37
45
  }) => React.JSX.Element;
38
46
  //# sourceMappingURL=blocks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/core/blocks.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,YAAY,EACZ,YAAY,EA4Bb,MAAM,SAAS,CAAA;AAIhB,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAErE,eAAO,MAAM,QAAQ;;;;CAIX,CAAA;AAEV,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,CAAA;AAEpC,eAAO,MAAM,YAAY,GAAI,OAAO,eAAe,KAAG,KAAK,CAAC,aAwB3D,CAAA;AAED,yEAAyE;AACzE,eAAO,MAAM,YAAY,GAAI,OAAO,eAAe,KAAG,KAAK,CAAC,aAY3D,CAAA;AA0rDD,iFAAiF;AACjF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CACrC,MAAM,EACN,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,CA2BvC,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,8BAI3B;IACD,KAAK,EAAE,UAAU,CAAA;IACjB,OAAO,EAAE,YAAY,CAAA;IACrB,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB,6BAIA,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,8EAOvB;IACD,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,OAAO,EAAE,YAAY,CAAA;IACrB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,sBAoBA,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,uGAS3B;IACD,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,YAAY,CAAA;IACrB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,sBAsBA,CAAA"}
1
+ {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/core/blocks.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,YAAY,EACZ,YAAY,EA6BZ,mBAAmB,EACpB,MAAM,SAAS,CAAA;AAKhB,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAErE,eAAO,MAAM,QAAQ;;;;CAIX,CAAA;AAEV,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,CAAA;AAEpC,eAAO,MAAM,YAAY,GAAI,OAAO,eAAe,KAAG,KAAK,CAAC,aAwB3D,CAAA;AAED,yEAAyE;AACzE,eAAO,MAAM,YAAY,GAAI,OAAO,eAAe,KAAG,KAAK,CAAC,aAY3D,CAAA;AAytBD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,sCAAiD,CAAA;AAykC/E,iFAAiF;AACjF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CACrC,MAAM,EACN,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,CA4BvC,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,8BAI3B;IACD,KAAK,EAAE,UAAU,CAAA;IACjB,OAAO,EAAE,YAAY,CAAA;IACrB,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB,6BAIA,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,qFAQvB;IACD,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,OAAO,EAAE,YAAY,CAAA;IACrB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,mBAAmB,EAAE,CAAA;CAC9B,sBAsBA,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,8GAU3B;IACD,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,YAAY,CAAA;IACrB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,mBAAmB,EAAE,CAAA;CAC9B,sBAuBA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/core/render.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACd,MAAM,SAAS,CAAC;AAIjB,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAMD,eAAO,MAAM,eAAe,GAAU,kDAMnC,sBAAsB,KAAG,OAAO,CAAC,MAAM,CAYvC,CAAC"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/core/render.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACd,MAAM,SAAS,CAAC;AAIjB,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAMD,eAAO,MAAM,eAAe,GAAU,kDAMnC,sBAAsB,KAAG,OAAO,CAAC,MAAM,CAavC,CAAC"}
@@ -8,6 +8,7 @@ export declare const useEmailBuilder: () => {
8
8
  sampleContext: EmailContext;
9
9
  labels: import("..").EmailBuilderLabels;
10
10
  uploadImage: import("..").UploadImage | undefined;
11
+ uploadFile: import("..").UploadFile | undefined;
11
12
  blocks: import("create-email-renderer").EmailBlock[];
12
13
  selectedId: string | null;
13
14
  propertiesOpen: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"use-email-builder.d.ts","sourceRoot":"","sources":["../../src/hooks/use-email-builder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AASlD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;gBAiBV,CAAC;;;;;;;;;;;;wBAKD;QAAE,OAAO,CAAC,EAAE,YAAY,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;oBAoBnD,MAAM,YAAY,YAAY,KAAG,MAAM;CAoCjD,CAAC"}
1
+ {"version":3,"file":"use-email-builder.d.ts","sourceRoot":"","sources":["../../src/hooks/use-email-builder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AASlD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;gBAiBS,CAAC;;;;;;;;;;;;wBAKpB;QAAE,OAAO,CAAC,EAAE,YAAY,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;oBAoBnD,MAAM,YAAY,YAAY,KAAG,MAAM;CAqCjD,CAAC"}
package/dist/index.d.ts CHANGED
@@ -31,4 +31,5 @@ export * from "./components/builder/properties-panel";
31
31
  export * from "./components/builder/inline-text-editor";
32
32
  export * from "./components/builder/selection-toolbar";
33
33
  export * from "./components/builder/variables-info-dialog";
34
+ export * from "./components/builder/settings-dialog";
34
35
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAGrB,OAAO,0BAA0B,CAAC;AAGlC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAG9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,eAAe,CAAC;AAC9B,cAAc,oCAAoC,CAAC;AACnD,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAG/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,4CAA4C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAGrB,OAAO,0BAA0B,CAAC;AAGlC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAG9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,eAAe,CAAC;AAC9B,cAAc,oCAAoC,CAAC;AACnD,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAG/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,uCAAuC,CAAC;AACtD,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sCAAsC,CAAC"}