create-email-template 0.1.6 → 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 (54) hide show
  1. package/README.md +63 -19
  2. package/SKILL.md +173 -0
  3. package/dist/block-views-builtin.d.ts +6 -0
  4. package/dist/block-views-builtin.d.ts.map +1 -0
  5. package/dist/block-views.d.ts +124 -0
  6. package/dist/block-views.d.ts.map +1 -0
  7. package/dist/components/builder/canvas.d.ts.map +1 -1
  8. package/dist/components/builder/editable-block-renderer.d.ts +27 -0
  9. package/dist/components/builder/editable-block-renderer.d.ts.map +1 -1
  10. package/dist/components/builder/email-builder.d.ts.map +1 -1
  11. package/dist/components/builder/field-editors.d.ts +36 -0
  12. package/dist/components/builder/field-editors.d.ts.map +1 -0
  13. package/dist/components/builder/nested-block-list.d.ts +8 -0
  14. package/dist/components/builder/nested-block-list.d.ts.map +1 -0
  15. package/dist/components/builder/nested-blocks.d.ts +6 -0
  16. package/dist/components/builder/nested-blocks.d.ts.map +1 -0
  17. package/dist/components/builder/properties-panel.d.ts +1 -2
  18. package/dist/components/builder/properties-panel.d.ts.map +1 -1
  19. package/dist/components/builder/settings-dialog.d.ts +7 -0
  20. package/dist/components/builder/settings-dialog.d.ts.map +1 -0
  21. package/dist/config/defaults.d.ts.map +1 -1
  22. package/dist/config/types.d.ts +45 -0
  23. package/dist/config/types.d.ts.map +1 -1
  24. package/dist/core/blocks.d.ts +19 -6
  25. package/dist/core/blocks.d.ts.map +1 -1
  26. package/dist/core/build.d.ts +2 -0
  27. package/dist/core/build.d.ts.map +1 -0
  28. package/dist/core/render.d.ts.map +1 -1
  29. package/dist/footer-presets.d.ts +9 -0
  30. package/dist/footer-presets.d.ts.map +1 -0
  31. package/dist/gallery-presets.d.ts +9 -0
  32. package/dist/gallery-presets.d.ts.map +1 -0
  33. package/dist/hooks/use-email-builder.d.ts +3 -2
  34. package/dist/hooks/use-email-builder.d.ts.map +1 -1
  35. package/dist/index.d.ts +10 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +29836 -22830
  38. package/dist/index.js.map +1 -1
  39. package/dist/list-presets.d.ts +9 -0
  40. package/dist/list-presets.d.ts.map +1 -0
  41. package/dist/pricing-presets.d.ts +9 -0
  42. package/dist/pricing-presets.d.ts.map +1 -0
  43. package/dist/product-presets.d.ts +9 -0
  44. package/dist/product-presets.d.ts.map +1 -0
  45. package/dist/register-builtin-views.d.ts +2 -0
  46. package/dist/register-builtin-views.d.ts.map +1 -0
  47. package/dist/store/block-tree.d.ts +18 -0
  48. package/dist/store/block-tree.d.ts.map +1 -0
  49. package/dist/store/create-email-builder-store.d.ts +6 -2
  50. package/dist/store/create-email-builder-store.d.ts.map +1 -1
  51. package/dist/store/email-builder-provider.d.ts +3 -2
  52. package/dist/store/email-builder-provider.d.ts.map +1 -1
  53. package/llms.txt +17 -0
  54. package/package.json +5 -3
@@ -0,0 +1,9 @@
1
+ import type { ListVariant } from "./core/types";
2
+ export interface ListVariantDef {
3
+ value: ListVariant;
4
+ label: string;
5
+ /** Patch de props para `set` al cambiar de estilo (ids frescos). */
6
+ build: () => Record<string, unknown>;
7
+ }
8
+ export declare const LIST_VARIANTS: ListVariantDef[];
9
+ //# sourceMappingURL=list-presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-presets.d.ts","sourceRoot":"","sources":["../src/list-presets.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,oEAAoE;IACpE,KAAK,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC;AAcD,eAAO,MAAM,aAAa,EAAE,cAAc,EAyEzC,CAAA"}
@@ -0,0 +1,9 @@
1
+ export type PricingVariant = "card" | "offer" | "two-tiers";
2
+ export interface PricingVariantDef {
3
+ value: PricingVariant;
4
+ label: string;
5
+ /** Patch de props para `set` al cambiar de variante (ids frescos). */
6
+ build: () => Record<string, unknown>;
7
+ }
8
+ export declare const PRICING_VARIANTS: PricingVariantDef[];
9
+ //# sourceMappingURL=pricing-presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing-presets.d.ts","sourceRoot":"","sources":["../src/pricing-presets.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAA;AAE3D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,cAAc,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,sEAAsE;IACtE,KAAK,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC;AAuBD,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,EAmE/C,CAAA"}
@@ -0,0 +1,9 @@
1
+ import type { ProductVariant } from "./core/types";
2
+ export interface ProductVariantDef {
3
+ value: ProductVariant;
4
+ label: string;
5
+ /** Patch de props para `set` al cambiar de diseño (ids frescos). */
6
+ build: () => Record<string, unknown>;
7
+ }
8
+ export declare const PRODUCT_VARIANTS: ProductVariantDef[];
9
+ //# sourceMappingURL=product-presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-presets.d.ts","sourceRoot":"","sources":["../src/product-presets.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,cAAc,CAAA;AAE/D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,cAAc,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,oEAAoE;IACpE,KAAK,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC;AAmBD,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,EAwE/C,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=register-builtin-views.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-builtin-views.d.ts","sourceRoot":"","sources":["../src/register-builtin-views.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { type EmailBlock, type EmailBlockProps, type EmailBlockType } from "../core/types";
2
+ export interface BlockLocation {
3
+ parentId?: string;
4
+ columnId?: string;
5
+ }
6
+ export declare const locationKey: (loc?: BlockLocation) => string;
7
+ /** ¿Se puede insertar `type` en `location` sin exceder la profundidad máxima? */
8
+ export declare const canNestType: (type: EmailBlockType, location?: BlockLocation) => boolean;
9
+ export declare const getBlockList: (blocks: EmailBlock[], location?: BlockLocation) => EmailBlock[];
10
+ export declare const setBlockList: (blocks: EmailBlock[], location: BlockLocation | undefined, next: EmailBlock[]) => EmailBlock[];
11
+ export declare const findBlockDeep: (blocks: EmailBlock[], id: string) => EmailBlock | null;
12
+ export declare const findBlockLocation: (blocks: EmailBlock[], id: string) => {
13
+ location: BlockLocation;
14
+ index: number;
15
+ } | null;
16
+ export declare const updateBlockDeep: (blocks: EmailBlock[], id: string, props: EmailBlockProps) => EmailBlock[];
17
+ export declare const removeBlockDeep: (blocks: EmailBlock[], id: string) => EmailBlock[];
18
+ //# sourceMappingURL=block-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-tree.d.ts","sourceRoot":"","sources":["../../src/store/block-tree.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAOD,eAAO,MAAM,WAAW,GAAI,MAAM,aAAa,KAAG,MACgB,CAAC;AAEnE,iFAAiF;AACjF,eAAO,MAAM,WAAW,GACtB,MAAM,cAAc,EACpB,WAAW,aAAa,KACvB,OAAwD,CAAC;AAE5D,eAAO,MAAM,YAAY,GACvB,QAAQ,UAAU,EAAE,EACpB,WAAW,aAAa,KACvB,UAAU,EASZ,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,QAAQ,UAAU,EAAE,EACpB,UAAU,aAAa,GAAG,SAAS,EACnC,MAAM,UAAU,EAAE,KACjB,UAAU,EAqBZ,CAAC;AASF,eAAO,MAAM,aAAa,GACxB,QAAQ,UAAU,EAAE,EACpB,IAAI,MAAM,KACT,UAAU,GAAG,IAQf,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,UAAU,EAAE,EACpB,IAAI,MAAM,KACT;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAmB/C,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,QAAQ,UAAU,EAAE,EACpB,IAAI,MAAM,EACV,OAAO,eAAe,KACrB,UAAU,EASZ,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,QAAQ,UAAU,EAAE,EACpB,IAAI,MAAM,KACT,UAAU,EASZ,CAAC"}
@@ -1,5 +1,7 @@
1
1
  import { type EmailBlock, type EmailBlockProps, type EmailBlockType, type EmailSettings } from "../core/types";
2
+ import { type BlockLocation } from "./block-tree";
2
3
  import { type ResolvedEmailBuilderConfig } from "../config/types";
4
+ export type { BlockLocation };
3
5
  export interface EmailBuilderPayload {
4
6
  content: EmailBlock[];
5
7
  settings: EmailSettings;
@@ -25,8 +27,10 @@ export interface EmailBuilderState {
25
27
  settings?: Partial<EmailSettings>;
26
28
  }) => void;
27
29
  setSettings: (patch: Partial<EmailSettings>) => void;
28
- addBlock: (type: EmailBlockType, index?: number) => void;
29
- reorder: (activeIndex: number, overIndex: number) => void;
30
+ addBlock: (type: EmailBlockType, index?: number, location?: BlockLocation) => void;
31
+ reorder: (activeIndex: number, overIndex: number, location?: BlockLocation) => void;
32
+ /** Mueve un bloque existente a otra lista (raíz/otro contenedor/columna). */
33
+ moveBlock: (id: string, targetLocation: BlockLocation, targetIndex: number) => void;
30
34
  updateBlockProps: (id: string, props: EmailBlockProps) => void;
31
35
  removeBlock: (id: string) => void;
32
36
  duplicateBlock: (id: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"create-email-builder-store.d.ts","sourceRoot":"","sources":["../../src/store/create-email-builder-store.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAEjE,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,QAAQ,EAAE,aAAa,CAAA;CACxB;AAED,2EAA2E;AAC3E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,QAAQ,EAAE,aAAa,CAAA;IACvB,sFAAsF;IACtF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,OAAO,CAAA;IACvB,QAAQ,EAAE,aAAa,CAAA;IACvB,KAAK,EAAE,OAAO,CAAA;IACd,2EAA2E;IAC3E,IAAI,EAAE,iBAAiB,EAAE,CAAA;IAEzB,OAAO,EAAE,CAAC,IAAI,EAAE;QACd,MAAM,EAAE,UAAU,EAAE,CAAA;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;KAClC,KAAK,IAAI,CAAA;IACV,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAA;IACpD,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACxD,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACzD,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,KAAK,IAAI,CAAA;IAC9D,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACnC,iBAAiB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IAC1C,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,UAAU,EAAE,MAAM,mBAAmB,CAAA;IACrC,qDAAqD;IACrD,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB;AAED,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAK1E,eAAO,MAAM,uBAAuB,GAClC,QAAQ,0BAA0B,8DAgLnC,CAAA"}
1
+ {"version":3,"file":"create-email-builder-store.d.ts","sourceRoot":"","sources":["../../src/store/create-email-builder-store.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAA;AACtB,OAAO,EAQL,KAAK,aAAa,EACnB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAEjE,YAAY,EAAE,aAAa,EAAE,CAAA;AAE7B,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,QAAQ,EAAE,aAAa,CAAA;CACxB;AAED,2EAA2E;AAC3E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,QAAQ,EAAE,aAAa,CAAA;IACvB,sFAAsF;IACtF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,EAAE,EAAE,MAAM,CAAA;CACX;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,cAAc,EAAE,OAAO,CAAA;IACvB,QAAQ,EAAE,aAAa,CAAA;IACvB,KAAK,EAAE,OAAO,CAAA;IACd,2EAA2E;IAC3E,IAAI,EAAE,iBAAiB,EAAE,CAAA;IAEzB,OAAO,EAAE,CAAC,IAAI,EAAE;QACd,MAAM,EAAE,UAAU,EAAE,CAAA;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;KAClC,KAAK,IAAI,CAAA;IACV,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAA;IACpD,QAAQ,EAAE,CACR,IAAI,EAAE,cAAc,EACpB,KAAK,CAAC,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,aAAa,KACrB,IAAI,CAAA;IACT,OAAO,EAAE,CACP,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,aAAa,KACrB,IAAI,CAAA;IACT,6EAA6E;IAC7E,SAAS,EAAE,CACT,EAAE,EAAE,MAAM,EACV,cAAc,EAAE,aAAa,EAC7B,WAAW,EAAE,MAAM,KAChB,IAAI,CAAA;IACT,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,KAAK,IAAI,CAAA;IAC9D,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACnC,iBAAiB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IAC1C,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,UAAU,EAAE,MAAM,mBAAmB,CAAA;IACrC,qDAAqD;IACrD,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB;AAED,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAK1E,eAAO,MAAM,uBAAuB,GAClC,QAAQ,0BAA0B,8DA6MnC,CAAA"}
@@ -1,9 +1,10 @@
1
1
  import React from "react";
2
2
  import type { EmailBuilderState, EmailBuilderStore } from "./create-email-builder-store";
3
- import type { AutosaveOptions, EmailBuilderConfig, ResolvedEmailBuilderConfig, UploadImage } from "../config/types";
4
- export declare const EmailBuilderProvider: ({ config, uploadImage, autosave, children, }: {
3
+ import type { AutosaveOptions, EmailBuilderConfig, ResolvedEmailBuilderConfig, UploadFile, UploadImage } from "../config/types";
4
+ export declare const EmailBuilderProvider: ({ config, uploadImage, uploadFile, autosave, children, }: {
5
5
  config?: EmailBuilderConfig;
6
6
  uploadImage?: UploadImage;
7
+ uploadFile?: UploadFile;
7
8
  /** Opt-in: ciclo de autoguardado administrado (ver `AutosaveOptions`). */
8
9
  autosave?: AutosaveOptions;
9
10
  children: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"email-builder-provider.d.ts","sourceRoot":"","sources":["../../src/store/email-builder-provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAKN,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC1B,WAAW,EACZ,MAAM,iBAAiB,CAAC;AASzB,eAAO,MAAM,oBAAoB,GAAI,8CAKlC;IACD,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,sBAwBA,CAAC;AAEF,eAAO,MAAM,4BAA4B,QAAO,iBAQ/C,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAO,0BAQxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,CAAC,EACpC,UAAU,CAAC,KAAK,EAAE,iBAAiB,KAAK,CAAC,KACxC,CAOF,CAAC"}
1
+ {"version":3,"file":"email-builder-provider.d.ts","sourceRoot":"","sources":["../../src/store/email-builder-provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAKN,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC1B,UAAU,EACV,WAAW,EACZ,MAAM,iBAAiB,CAAC;AASzB,eAAO,MAAM,oBAAoB,GAAI,0DAMlC;IACD,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,sBA4BA,CAAC;AAEF,eAAO,MAAM,4BAA4B,QAAO,iBAQ/C,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAO,0BAQxC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,CAAC,EACpC,UAAU,CAAC,KAAK,EAAE,iBAAiB,KAAK,CAAC,KACxC,CAOF,CAAC"}
package/llms.txt ADDED
@@ -0,0 +1,17 @@
1
+ # create-email-template
2
+
3
+ > React email template builder UI (drag & drop + autosave) backed by create-email-renderer.
4
+
5
+ ## Docs
6
+ - [SKILL.md](./SKILL.md): orientation for agents — provider, hooks, store, presets, CSS.
7
+ - [README.md](./README.md): public API reference (EmailBuilder, hooks, config, autosave).
8
+ - Block catalog (shared core): node_modules/create-email-renderer/docs/BLOCKS.md
9
+ - MCP guide: node_modules/create-email-renderer/docs/MCP.md
10
+
11
+ ## Quick start
12
+ - `import "create-email-template/style.css"` is REQUIRED (scoped under .ter-theme)
13
+ - `<EmailBuilderProvider config? uploadImage? uploadFile? autosave?><EmailBuilder /></EmailBuilderProvider>`
14
+ - Hooks: useRenderEmail, useAutosaveStatus, useEmailBuilderStore, useEmailBuilderStoreInstance, useEmailBuilderConfig
15
+ - Payload: `{ content, settings }` (render it on the back-end with create-email-renderer)
16
+ - Files: upload PDFs/DOCX in the settings dialog; they live in `settings.files` and the `downloads` block lists them
17
+ - `uploadFile(file) => Promise<string>` must return a PUBLIC url (R2/S3/your API) for real emails
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-email-template",
3
- "version": "0.1.6",
3
+ "version": "0.3.0",
4
4
  "description": "Reusable email template builder (blocks, canvas, options) with a zero-dependency React store and shadcn/ui",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -15,7 +15,9 @@
15
15
  "./style.css": "./dist/style.css"
16
16
  },
17
17
  "files": [
18
- "dist"
18
+ "dist",
19
+ "SKILL.md",
20
+ "llms.txt"
19
21
  ],
20
22
  "dependencies": {
21
23
  "@base-ui/react": "^1.7.0",
@@ -27,7 +29,7 @@
27
29
  "clsx": "^2.1.1",
28
30
  "lucide-react": "^1.34.0",
29
31
  "react-hot-toast": "^2.5.1",
30
- "create-email-renderer": "0.1.1"
32
+ "create-email-renderer": "0.3.0"
31
33
  },
32
34
  "devDependencies": {
33
35
  "@fontsource-variable/geist": "^5.3.0",