create-email-template 0.1.1

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 (75) hide show
  1. package/README.md +356 -0
  2. package/dist/components/builder/block-palette.d.ts +4 -0
  3. package/dist/components/builder/block-palette.d.ts.map +1 -0
  4. package/dist/components/builder/canvas.d.ts +4 -0
  5. package/dist/components/builder/canvas.d.ts.map +1 -0
  6. package/dist/components/builder/editable-block-renderer.d.ts +7 -0
  7. package/dist/components/builder/editable-block-renderer.d.ts.map +1 -0
  8. package/dist/components/builder/email-builder.d.ts +5 -0
  9. package/dist/components/builder/email-builder.d.ts.map +1 -0
  10. package/dist/components/builder/inline-text-editor.d.ts +15 -0
  11. package/dist/components/builder/inline-text-editor.d.ts.map +1 -0
  12. package/dist/components/builder/properties-panel.d.ts +8 -0
  13. package/dist/components/builder/properties-panel.d.ts.map +1 -0
  14. package/dist/components/builder/selection-toolbar.d.ts +12 -0
  15. package/dist/components/builder/selection-toolbar.d.ts.map +1 -0
  16. package/dist/components/builder/sortable-item.d.ts +10 -0
  17. package/dist/components/builder/sortable-item.d.ts.map +1 -0
  18. package/dist/components/builder/variables-info-dialog.d.ts +7 -0
  19. package/dist/components/builder/variables-info-dialog.d.ts.map +1 -0
  20. package/dist/components/ui/button.d.ts +10 -0
  21. package/dist/components/ui/button.d.ts.map +1 -0
  22. package/dist/components/ui/dialog.d.ts +18 -0
  23. package/dist/components/ui/dialog.d.ts.map +1 -0
  24. package/dist/components/ui/input.d.ts +4 -0
  25. package/dist/components/ui/input.d.ts.map +1 -0
  26. package/dist/components/ui/label.d.ts +4 -0
  27. package/dist/components/ui/label.d.ts.map +1 -0
  28. package/dist/components/ui/sheet.d.ts +15 -0
  29. package/dist/components/ui/sheet.d.ts.map +1 -0
  30. package/dist/config/defaults.d.ts +3 -0
  31. package/dist/config/defaults.d.ts.map +1 -0
  32. package/dist/config/types.d.ts +125 -0
  33. package/dist/config/types.d.ts.map +1 -0
  34. package/dist/core/blocks.d.ts +33 -0
  35. package/dist/core/blocks.d.ts.map +1 -0
  36. package/dist/core/default-blocks.d.ts +2 -0
  37. package/dist/core/default-blocks.d.ts.map +1 -0
  38. package/dist/core/id.d.ts +2 -0
  39. package/dist/core/id.d.ts.map +1 -0
  40. package/dist/core/normalize.d.ts +2 -0
  41. package/dist/core/normalize.d.ts.map +1 -0
  42. package/dist/core/render.d.ts +10 -0
  43. package/dist/core/render.d.ts.map +1 -0
  44. package/dist/core/richtext.d.ts +2 -0
  45. package/dist/core/richtext.d.ts.map +1 -0
  46. package/dist/core/template.d.ts +2 -0
  47. package/dist/core/template.d.ts.map +1 -0
  48. package/dist/core/types.d.ts +2 -0
  49. package/dist/core/types.d.ts.map +1 -0
  50. package/dist/core/variables.d.ts +2 -0
  51. package/dist/core/variables.d.ts.map +1 -0
  52. package/dist/hooks/use-autosave.d.ts +14 -0
  53. package/dist/hooks/use-autosave.d.ts.map +1 -0
  54. package/dist/hooks/use-email-builder.d.ts +36 -0
  55. package/dist/hooks/use-email-builder.d.ts.map +1 -0
  56. package/dist/hooks/use-render-email.d.ts +15 -0
  57. package/dist/hooks/use-render-email.d.ts.map +1 -0
  58. package/dist/index.d.ts +25 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +27976 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/lib/utils.d.ts +3 -0
  63. package/dist/lib/utils.d.ts.map +1 -0
  64. package/dist/shims/use-sync-external-store.d.ts +4 -0
  65. package/dist/shims/use-sync-external-store.d.ts.map +1 -0
  66. package/dist/store/autosave-context.d.ts +13 -0
  67. package/dist/store/autosave-context.d.ts.map +1 -0
  68. package/dist/store/create-email-builder-store.d.ts +42 -0
  69. package/dist/store/create-email-builder-store.d.ts.map +1 -0
  70. package/dist/store/email-builder-provider.d.ts +14 -0
  71. package/dist/store/email-builder-provider.d.ts.map +1 -0
  72. package/dist/store/vanilla-store.d.ts +8 -0
  73. package/dist/store/vanilla-store.d.ts.map +1 -0
  74. package/dist/style.css +2 -0
  75. package/package.json +70 -0
@@ -0,0 +1,125 @@
1
+ import type { BlockDefinition, EmailBlock, EmailBlockProps, EmailBlockType, EmailContext, EmailPalette, EmailSettings } from "../core/types";
2
+ import type { EmailVariable, EmailVariableSection } from "../core/variables";
3
+ /** `Partial` distributivo sobre una unión (útil para props de bloques). */
4
+ export type DistributivePartial<T> = T extends unknown ? Partial<T> : never;
5
+ /** Sube una imagen y devuelve su URL (R2, S3, tu API, etc.). */
6
+ export type UploadImage = (file: File) => Promise<string>;
7
+ /**
8
+ * Valores por defecto personalizados por tipo de bloque.
9
+ * Se aplican sobre los defaults de la librería (o sobre un `blockLibrary` custom).
10
+ * Ej.: `{ text: { text: "Tu mensaje" }, button: { label: "Ver más" } }`
11
+ */
12
+ export type BlockDefaultsMap = Partial<Record<EmailBlockType, DistributivePartial<EmailBlockProps>>>;
13
+ export interface EmailBuilderLabels {
14
+ blocksTitle: string;
15
+ optionsTitle: string;
16
+ optionsOpen: string;
17
+ optionsClose: string;
18
+ noSelection: string;
19
+ editInlineHint: string;
20
+ listEditHint: string;
21
+ columnsEditHint: string;
22
+ addListItem: string;
23
+ listItemPlaceholder: string;
24
+ imagePlaceholder: string;
25
+ uploadImage: string;
26
+ replaceImage: string;
27
+ uploading: string;
28
+ imageUploaded: string;
29
+ imageUploadError: string;
30
+ logoUrl: string;
31
+ imageAlt: string;
32
+ imageHref: string;
33
+ imageWidth: string;
34
+ buttonLabel: string;
35
+ buttonHref: string;
36
+ align: string;
37
+ backgroundColor: string;
38
+ buttonBackground: string;
39
+ buttonColor: string;
40
+ textColor: string;
41
+ icon: string;
42
+ quoteAuthor: string;
43
+ quoteBorderColor: string;
44
+ quoteMarginLeft: string;
45
+ quotePaddingY: string;
46
+ quotePaddingX: string;
47
+ quoteBorderWidth: string;
48
+ dividerColor: string;
49
+ dividerHeight: string;
50
+ spacerHeight: string;
51
+ pageBackground: string;
52
+ cardBorderWidth: string;
53
+ cardBorderRadius: string;
54
+ settings: string;
55
+ deviceMobile: string;
56
+ deviceDesktop: string;
57
+ canvasPreview: string;
58
+ variablesInfoTitle: string;
59
+ variablesInfoDescription: string;
60
+ variablesGroup: string;
61
+ dragToStart: string;
62
+ dropAtEnd: string;
63
+ drag: string;
64
+ moveUp: string;
65
+ moveDown: string;
66
+ duplicate: string;
67
+ delete: string;
68
+ }
69
+ export declare const DEFAULT_LABELS: EmailBuilderLabels;
70
+ export interface EmailBuilderConfig {
71
+ variables?: EmailVariable[];
72
+ variableSections?: EmailVariableSection[];
73
+ blockLibrary?: BlockDefinition[];
74
+ blockDefaults?: BlockDefaultsMap;
75
+ palette?: Partial<EmailPalette>;
76
+ defaultSettings?: Partial<EmailSettings>;
77
+ sampleContext?: EmailContext;
78
+ labels?: Partial<EmailBuilderLabels>;
79
+ /** Profundidad máxima del historial de deshacer. Default: 50. */
80
+ historyLimit?: number;
81
+ }
82
+ export interface ResolvedEmailBuilderConfig {
83
+ variables: EmailVariable[];
84
+ variableSections: EmailVariableSection[];
85
+ blockLibrary: BlockDefinition[];
86
+ blockMap: Record<EmailBlockType, BlockDefinition>;
87
+ palette: EmailPalette;
88
+ defaultSettings: EmailSettings;
89
+ sampleContext: EmailContext;
90
+ uploadImage?: UploadImage;
91
+ labels: EmailBuilderLabels;
92
+ historyLimit: number;
93
+ }
94
+ /** Payload persistible del builder (lo que se guarda en la BD). */
95
+ export interface AutosavePayload {
96
+ content: EmailBlock[];
97
+ settings: EmailSettings;
98
+ }
99
+ export interface AutosaveSuccess<TData = unknown> {
100
+ ok: true;
101
+ /** Lo que devolvió tu `onSave` (ej. `{ json, html }` del backend). */
102
+ data: TData;
103
+ payload: AutosavePayload;
104
+ savedAt: Date;
105
+ }
106
+ export interface AutosaveError {
107
+ ok: false;
108
+ error: unknown;
109
+ payload: AutosavePayload;
110
+ }
111
+ export interface AutosaveOptions<TData = unknown> {
112
+ /**
113
+ * Tu fetch al backend: recibe el payload y devuelve lo que tu API retorne
114
+ * (ej. `{ json, html }` renderizado con `create-email-renderer`).
115
+ * La librería no hace network por su cuenta.
116
+ */
117
+ onSave: (payload: AutosavePayload) => Promise<TData>;
118
+ /** Cada cuánto se intenta guardar si hay cambios. Default: `10_000` (10s). */
119
+ intervalMs?: number;
120
+ /** Interruptor rápido sin desmontar el provider. Default: `true`. */
121
+ enabled?: boolean;
122
+ /** Callback opcional tras cada intento (éxito o error), para toasts/feedback. */
123
+ onSaved?: (result: AutosaveSuccess<TData> | AutosaveError) => void;
124
+ }
125
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import * as React from "react";
2
+ import type { EmailBlock, EmailBlockProps, EmailContext, EmailPalette } from "./types";
3
+ export declare const alignMap: {
4
+ readonly left: "left";
5
+ readonly center: "center";
6
+ readonly right: "right";
7
+ };
8
+ export { alignMap as blockAlignMap };
9
+ export declare const blockPadding: (props: EmailBlockProps) => {
10
+ padding: string;
11
+ };
12
+ export declare const BlockRenderer: ({ block, context, palette, }: {
13
+ block: EmailBlock;
14
+ context: EmailContext;
15
+ palette?: EmailPalette;
16
+ }) => React.JSX.Element | null;
17
+ export declare const EmailBody: ({ blocks, context, palette, cardBorderWidth, cardBorderRadius, }: {
18
+ blocks: EmailBlock[];
19
+ context: EmailContext;
20
+ palette?: EmailPalette;
21
+ cardBorderWidth?: number;
22
+ cardBorderRadius?: number;
23
+ }) => React.JSX.Element;
24
+ export declare const EmailTemplate: ({ blocks, subject, context, palette, pageBackground, cardBorderWidth, cardBorderRadius, }: {
25
+ blocks: EmailBlock[];
26
+ subject: string;
27
+ context: EmailContext;
28
+ palette?: EmailPalette;
29
+ pageBackground?: string;
30
+ cardBorderWidth?: number;
31
+ cardBorderRadius?: number;
32
+ }) => React.JSX.Element;
33
+ //# sourceMappingURL=blocks.d.ts.map
@@ -0,0 +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,EAab,MAAM,SAAS,CAAA;AAKhB,eAAO,MAAM,QAAQ;;;;CAIX,CAAA;AAEV,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,CAAA;AAEpC,eAAO,MAAM,YAAY,GAAI,OAAO,eAAe;;CAIlD,CAAA;AAwcD,eAAO,MAAM,aAAa,GAAI,8BAI3B;IACD,KAAK,EAAE,UAAU,CAAA;IACjB,OAAO,EAAE,YAAY,CAAA;IACrB,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB,6BAyFA,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,kEAMvB;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;CAC1B,sBAmBA,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,2FAQ3B;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;CAC1B,sBAcA,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "create-email-renderer/default-blocks";
2
+ //# sourceMappingURL=default-blocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-blocks.d.ts","sourceRoot":"","sources":["../../src/core/default-blocks.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const newId: () => string;
2
+ //# sourceMappingURL=id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../src/core/id.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,QAAO,MAA6B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "create-email-renderer/normalize";
2
+ //# sourceMappingURL=normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/core/normalize.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { EmailBlock, EmailContext, EmailPalette, EmailSettings } from "./types";
2
+ export interface RenderEmailHtmlOptions {
3
+ blocks: EmailBlock[];
4
+ subject?: string;
5
+ context?: EmailContext;
6
+ settings?: Partial<EmailSettings>;
7
+ palette?: EmailPalette;
8
+ }
9
+ export declare const renderEmailHtml: ({ blocks, subject, context, settings, palette, }: RenderEmailHtmlOptions) => Promise<string>;
10
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +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,CAWvC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "create-email-renderer/richtext";
2
+ //# sourceMappingURL=richtext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"richtext.d.ts","sourceRoot":"","sources":["../../src/core/richtext.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "create-email-renderer/server";
2
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/core/template.ts"],"names":[],"mappings":"AAEA,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "create-email-renderer/types";
2
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAEA,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "create-email-renderer/variables";
2
+ //# sourceMappingURL=variables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../src/core/variables.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { AutosaveOptions } from "../config/types";
2
+ import type { EmailBuilderStore } from "../store/create-email-builder-store";
3
+ import { AutosaveStatusContext } from "../store/autosave-context";
4
+ import type { AutosaveStatus } from "../store/autosave-context";
5
+ export type { AutosaveStatus };
6
+ export { useAutosaveStatus } from "../store/autosave-context";
7
+ /**
8
+ * Ciclo de autoguardado: cada `intervalMs`, si el builder está `dirty` y no hay
9
+ * un guardado en vuelo, llama a `onSave(payload)` y marca el store como salvado.
10
+ * La librería no hace network: `onSave` es el fetch del consumidor.
11
+ */
12
+ export declare const useAutosaveEffect: <TData>(options: AutosaveOptions<TData>, store: EmailBuilderStore) => AutosaveStatus<TData>;
13
+ export { AutosaveStatusContext };
14
+ //# sourceMappingURL=use-autosave.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-autosave.d.ts","sourceRoot":"","sources":["../../src/hooks/use-autosave.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,YAAY,EAAE,cAAc,EAAE,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,EACrC,SAAS,eAAe,CAAC,KAAK,CAAC,EAC/B,OAAO,iBAAiB,KACvB,cAAc,CAAC,KAAK,CAgEtB,CAAC;AAEF,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { EmailContext } from "../core/types";
2
+ export declare const useEmailBuilder: () => {
3
+ config: import("..").ResolvedEmailBuilderConfig;
4
+ variables: import("create-email-renderer/variables").EmailVariable[];
5
+ blockLibrary: import("create-email-renderer/types").BlockDefinition[];
6
+ blockMap: Record<import("create-email-renderer/types").EmailBlockType, import("create-email-renderer/types").BlockDefinition>;
7
+ palette: import("create-email-renderer/types").EmailPalette;
8
+ sampleContext: EmailContext;
9
+ labels: import("..").EmailBuilderLabels;
10
+ uploadImage: import("..").UploadImage | undefined;
11
+ blocks: import("create-email-renderer/types").EmailBlock[];
12
+ selectedId: string | null;
13
+ propertiesOpen: boolean;
14
+ settings: import("create-email-renderer/types").EmailSettings;
15
+ dirty: boolean;
16
+ hydrate: (data: {
17
+ blocks: import("create-email-renderer/types").EmailBlock[];
18
+ settings?: Partial<import("create-email-renderer/types").EmailSettings>;
19
+ }) => void;
20
+ setSettings: (patch: Partial<import("create-email-renderer/types").EmailSettings>) => void;
21
+ addBlock: (type: import("create-email-renderer/types").EmailBlockType, index?: number) => void;
22
+ reorder: (activeIndex: number, overIndex: number) => void;
23
+ updateBlockProps: (id: string, props: import("create-email-renderer/types").EmailBlockProps) => void;
24
+ removeBlock: (id: string) => void;
25
+ duplicateBlock: (id: string) => void;
26
+ select: (id: string | null) => void;
27
+ setPropertiesOpen: (open: boolean) => void;
28
+ markSaved: () => void;
29
+ getSavePayload: () => import("..").EmailBuilderPayload;
30
+ renderHtml: (opts?: {
31
+ context?: EmailContext;
32
+ subject?: string;
33
+ }) => Promise<string>;
34
+ resolve: (text: string, context?: EmailContext) => string;
35
+ };
36
+ //# sourceMappingURL=use-email-builder.d.ts.map
@@ -0,0 +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;;;;;;;;;;;;;;;;gBAcH,CAAC;;;;;;;;;;;;wBAQR;QAAE,OAAO,CAAC,EAAE,YAAY,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;oBAoBnD,MAAM,YAAY,YAAY,KAAG,MAAM;CAoCjD,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { EmailContext } from "../core/types";
2
+ export interface RenderEmailOptions {
3
+ context?: EmailContext;
4
+ subject?: string;
5
+ }
6
+ export declare const useRenderEmail: () => {
7
+ renderHtml: (opts?: RenderEmailOptions) => Promise<string>;
8
+ getHtml: (opts?: RenderEmailOptions) => Promise<string>;
9
+ getPayload: () => import("..").EmailBuilderPayload;
10
+ resolve: (text: string, context?: EmailContext) => string;
11
+ html: string | null;
12
+ isPending: boolean;
13
+ setHtml: import("react").Dispatch<import("react").SetStateAction<string | null>>;
14
+ };
15
+ //# sourceMappingURL=use-render-email.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-render-email.d.ts","sourceRoot":"","sources":["../../src/hooks/use-render-email.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAMlD,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,cAAc;wBAQT,kBAAkB;qBAuBlB,kBAAkB,KAAG,OAAO,CAAC,MAAM,CAAC;;oBAgB3C,MAAM,YAAY,YAAY,KAAG,MAAM;;;;CAcjD,CAAC"}
@@ -0,0 +1,25 @@
1
+ import "./index.css";
2
+ export * from "./core/types";
3
+ export * from "./core/default-blocks";
4
+ export * from "./core/variables";
5
+ export * from "./core/richtext";
6
+ export * from "./core/normalize";
7
+ export * from "./core/blocks";
8
+ export * from "./core/render";
9
+ export * from "./config/types";
10
+ export * from "./config/defaults";
11
+ export * from "./store/create-email-builder-store";
12
+ export * from "./store/email-builder-provider";
13
+ export * from "./hooks/use-email-builder";
14
+ export * from "./hooks/use-render-email";
15
+ export * from "./hooks/use-autosave";
16
+ export * from "./components/builder/email-builder";
17
+ export * from "./components/builder/block-palette";
18
+ export * from "./components/builder/canvas";
19
+ export * from "./components/builder/sortable-item";
20
+ export * from "./components/builder/editable-block-renderer";
21
+ export * from "./components/builder/properties-panel";
22
+ export * from "./components/builder/inline-text-editor";
23
+ export * from "./components/builder/selection-toolbar";
24
+ export * from "./components/builder/variables-info-dialog";
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAGrB,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,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"}