@cms0/transactional 0.0.1 → 0.0.3

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/CHANGELOG.md ADDED
@@ -0,0 +1,14 @@
1
+ # @cms0/transactional
2
+
3
+ ## 0.0.3
4
+
5
+ ### Patch Changes
6
+
7
+ - d131093: Harden npm package publication by rebuilding tarballs during `prepack` and verifying packed artifacts in the main-branch release workflow. This fixes missing build output in published Canvas packages and corrects the transactional package entrypoint paths used by consumers.
8
+
9
+ ## 0.0.2
10
+
11
+ ### Patch Changes
12
+
13
+ - bef5ec7: Ensure the admin server binary is executable in Docker images.
14
+ - 2ee81b6: Fix rich text editor transaction sync issues and stabilize localized field test behavior.
@@ -0,0 +1,7 @@
1
+ interface ResetPasswordEmailProps {
2
+ resetUrl: string;
3
+ userName?: string;
4
+ }
5
+ export default function ResetPasswordEmail({ resetUrl, userName, }: ResetPasswordEmailProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=reset-password.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset-password.d.ts","sourceRoot":"","sources":["../../emails/reset-password.tsx"],"names":[],"mappings":"AAYA,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,QAA+C,EAC/C,QAAkB,GACnB,EAAE,uBAAuB,2CA6BzB"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = ResetPasswordEmail;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const components_1 = require("@react-email/components");
6
+ function ResetPasswordEmail({ resetUrl = "https://example.com/reset-password", userName = "there", }) {
7
+ return ((0, jsx_runtime_1.jsxs)(components_1.Html, { lang: "en", children: [(0, jsx_runtime_1.jsx)(components_1.Head, {}), (0, jsx_runtime_1.jsx)(components_1.Body, { style: main, children: (0, jsx_runtime_1.jsx)(components_1.Container, { style: container, children: (0, jsx_runtime_1.jsxs)(components_1.Section, { style: content, children: [(0, jsx_runtime_1.jsx)(components_1.Text, { style: heading, children: "Reset your password" }), (0, jsx_runtime_1.jsxs)(components_1.Text, { style: paragraph, children: ["Hi ", userName, ","] }), (0, jsx_runtime_1.jsx)(components_1.Text, { style: paragraph, children: "We received a request to reset your password. Click the button below to create a new password:" }), (0, jsx_runtime_1.jsx)(components_1.Button, { href: resetUrl, style: button, children: "Reset Password" }), (0, jsx_runtime_1.jsx)(components_1.Hr, { style: hr }), (0, jsx_runtime_1.jsx)(components_1.Text, { style: paragraph, children: "This link will expire in 1 hour for security reasons." }), (0, jsx_runtime_1.jsx)(components_1.Text, { style: footer, children: "If you didn't request a password reset, you can safely ignore this email. Your password will not be changed." })] }) }) })] }));
8
+ }
9
+ const main = {
10
+ backgroundColor: "#f6f9fc",
11
+ fontFamily: '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Ubuntu,sans-serif',
12
+ };
13
+ const container = {
14
+ backgroundColor: "#ffffff",
15
+ margin: "0 auto",
16
+ padding: "20px 0 48px",
17
+ marginBottom: "64px",
18
+ };
19
+ const content = {
20
+ padding: "0 48px",
21
+ };
22
+ const heading = {
23
+ fontSize: "32px",
24
+ lineHeight: "1.3",
25
+ fontWeight: "700",
26
+ color: "#484848",
27
+ padding: "17px 0 0",
28
+ };
29
+ const paragraph = {
30
+ margin: "0 0 15px",
31
+ fontSize: "15px",
32
+ lineHeight: "1.4",
33
+ color: "#3c4149",
34
+ };
35
+ const button = {
36
+ backgroundColor: "#000000",
37
+ borderRadius: "5px",
38
+ color: "#fff",
39
+ fontSize: "16px",
40
+ fontWeight: "bold",
41
+ textDecoration: "none",
42
+ textAlign: "center",
43
+ display: "block",
44
+ width: "100%",
45
+ padding: "12px",
46
+ margin: "20px 0",
47
+ };
48
+ const hr = {
49
+ borderColor: "#dfe1e4",
50
+ margin: "42px 0 26px",
51
+ };
52
+ const footer = {
53
+ color: "#8898aa",
54
+ fontSize: "12px",
55
+ lineHeight: "16px",
56
+ };
@@ -0,0 +1,9 @@
1
+ interface TeamInviteEmailProps {
2
+ teamName: string;
3
+ inviterName: string;
4
+ inviteUrl: string;
5
+ recipientEmail: string;
6
+ }
7
+ export default function TeamInviteEmail({ teamName, inviterName, inviteUrl, recipientEmail, }: TeamInviteEmailProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=team-invite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team-invite.d.ts","sourceRoot":"","sources":["../../emails/team-invite.tsx"],"names":[],"mappings":"AAYA,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,QAAsB,EACtB,WAA6B,EAC7B,SAA+C,EAC/C,cAAmC,GACpC,EAAE,oBAAoB,2CA2BtB"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = TeamInviteEmail;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const components_1 = require("@react-email/components");
6
+ function TeamInviteEmail({ teamName = "Your Team", inviterName = "A team member", inviteUrl = "https://example.com/accept-invite", recipientEmail = "user@example.com", }) {
7
+ return ((0, jsx_runtime_1.jsxs)(components_1.Html, { lang: "en", children: [(0, jsx_runtime_1.jsx)(components_1.Head, {}), (0, jsx_runtime_1.jsx)(components_1.Body, { style: main, children: (0, jsx_runtime_1.jsx)(components_1.Container, { style: container, children: (0, jsx_runtime_1.jsxs)(components_1.Section, { style: content, children: [(0, jsx_runtime_1.jsx)(components_1.Text, { style: heading, children: "You've been invited to join a team" }), (0, jsx_runtime_1.jsxs)(components_1.Text, { style: paragraph, children: [inviterName, " has invited you to join ", (0, jsx_runtime_1.jsx)("strong", { children: teamName }), "."] }), (0, jsx_runtime_1.jsx)(components_1.Text, { style: paragraph, children: "Click the button below to accept the invitation and join the team:" }), (0, jsx_runtime_1.jsx)(components_1.Button, { href: inviteUrl, style: button, children: "Accept Invitation" }), (0, jsx_runtime_1.jsx)(components_1.Hr, { style: hr }), (0, jsx_runtime_1.jsxs)(components_1.Text, { style: footer, children: ["This invitation was sent to ", recipientEmail, ". If you weren't expecting this invitation, you can safely ignore this email."] })] }) }) })] }));
8
+ }
9
+ const main = {
10
+ backgroundColor: "#f6f9fc",
11
+ fontFamily: '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Ubuntu,sans-serif',
12
+ };
13
+ const container = {
14
+ backgroundColor: "#ffffff",
15
+ margin: "0 auto",
16
+ padding: "20px 0 48px",
17
+ marginBottom: "64px",
18
+ };
19
+ const content = {
20
+ padding: "0 48px",
21
+ };
22
+ const heading = {
23
+ fontSize: "32px",
24
+ lineHeight: "1.3",
25
+ fontWeight: "700",
26
+ color: "#484848",
27
+ padding: "17px 0 0",
28
+ };
29
+ const paragraph = {
30
+ margin: "0 0 15px",
31
+ fontSize: "15px",
32
+ lineHeight: "1.4",
33
+ color: "#3c4149",
34
+ };
35
+ const button = {
36
+ backgroundColor: "#000000",
37
+ borderRadius: "5px",
38
+ color: "#fff",
39
+ fontSize: "16px",
40
+ fontWeight: "bold",
41
+ textDecoration: "none",
42
+ textAlign: "center",
43
+ display: "block",
44
+ width: "100%",
45
+ padding: "12px",
46
+ margin: "20px 0",
47
+ };
48
+ const hr = {
49
+ borderColor: "#dfe1e4",
50
+ margin: "42px 0 26px",
51
+ };
52
+ const footer = {
53
+ color: "#8898aa",
54
+ fontSize: "12px",
55
+ lineHeight: "16px",
56
+ };
@@ -0,0 +1,9 @@
1
+ import type { PlunkSendEmailRequest, PlunkSendEmailResponse } from "./types";
2
+ export declare class PlunkClient {
3
+ private apiKey;
4
+ constructor(apiKey?: string);
5
+ sendEmail(request: PlunkSendEmailRequest): Promise<PlunkSendEmailResponse>;
6
+ }
7
+ export declare function getDefaultClient(): PlunkClient;
8
+ export declare function setDefaultClient(client: PlunkClient): void;
9
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAI7E,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,CAAC,EAAE,MAAM;IAUrB,SAAS,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;CA2BjF;AAKD,wBAAgB,gBAAgB,IAAI,WAAW,CAK9C;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAE1D"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PlunkClient = void 0;
4
+ exports.getDefaultClient = getDefaultClient;
5
+ exports.setDefaultClient = setDefaultClient;
6
+ const PLUNK_API_BASE_URL = "https://next-api.useplunk.com";
7
+ class PlunkClient {
8
+ apiKey;
9
+ constructor(apiKey) {
10
+ this.apiKey = apiKey || process.env.PLUNK_API_KEY || "";
11
+ if (!this.apiKey) {
12
+ throw new Error("Plunk API key is required. Set PLUNK_API_KEY environment variable or pass it to the constructor.");
13
+ }
14
+ }
15
+ async sendEmail(request) {
16
+ try {
17
+ const response = await fetch(`${PLUNK_API_BASE_URL}/v1/send`, {
18
+ method: "POST",
19
+ headers: {
20
+ "Authorization": `Bearer ${this.apiKey}`,
21
+ "Content-Type": "application/json",
22
+ },
23
+ body: JSON.stringify(request),
24
+ });
25
+ const data = await response.json();
26
+ if (!response.ok) {
27
+ throw new Error(data.error?.message || `Failed to send email: ${response.statusText}`);
28
+ }
29
+ return data;
30
+ }
31
+ catch (error) {
32
+ if (error instanceof Error) {
33
+ throw error;
34
+ }
35
+ throw new Error("An unknown error occurred while sending email");
36
+ }
37
+ }
38
+ }
39
+ exports.PlunkClient = PlunkClient;
40
+ // Export a default instance
41
+ let defaultClient = null;
42
+ function getDefaultClient() {
43
+ if (!defaultClient) {
44
+ defaultClient = new PlunkClient();
45
+ }
46
+ return defaultClient;
47
+ }
48
+ function setDefaultClient(client) {
49
+ defaultClient = client;
50
+ }
@@ -0,0 +1,13 @@
1
+ import { PlunkClient, setDefaultClient } from "./client";
2
+ import type { TeamInviteProps, ResetPasswordProps, SendEmailOptions, PlunkSendEmailResponse } from "./types";
3
+ /**
4
+ * Send a team invitation email
5
+ */
6
+ export declare function sendTeamInvite(to: string, props: TeamInviteProps, options?: SendEmailOptions): Promise<PlunkSendEmailResponse>;
7
+ /**
8
+ * Send a password reset email
9
+ */
10
+ export declare function sendResetPassword(to: string, props: ResetPasswordProps, options?: SendEmailOptions): Promise<PlunkSendEmailResponse>;
11
+ export type { TeamInviteProps, ResetPasswordProps, SendEmailOptions, PlunkSendEmailResponse, };
12
+ export { PlunkClient, setDefaultClient };
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAK3E,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,sBAAsB,CAAC,CAYjC;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,kBAAkB,EACzB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,sBAAsB,CAAC,CAYjC;AAGD,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,GACvB,CAAC;AAEF,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setDefaultClient = exports.PlunkClient = void 0;
4
+ exports.sendTeamInvite = sendTeamInvite;
5
+ exports.sendResetPassword = sendResetPassword;
6
+ const client_1 = require("./client");
7
+ Object.defineProperty(exports, "PlunkClient", { enumerable: true, get: function () { return client_1.PlunkClient; } });
8
+ Object.defineProperty(exports, "setDefaultClient", { enumerable: true, get: function () { return client_1.setDefaultClient; } });
9
+ const templates_1 = require("./templates");
10
+ /**
11
+ * Send a team invitation email
12
+ */
13
+ async function sendTeamInvite(to, props, options) {
14
+ const client = (0, client_1.getDefaultClient)();
15
+ const html = await (0, templates_1.renderTeamInvite)(props);
16
+ return await client.sendEmail({
17
+ to,
18
+ subject: `Join ${props.teamName}`,
19
+ body: html,
20
+ from: options?.from,
21
+ reply: options?.replyTo,
22
+ headers: options?.headers,
23
+ });
24
+ }
25
+ /**
26
+ * Send a password reset email
27
+ */
28
+ async function sendResetPassword(to, props, options) {
29
+ const client = (0, client_1.getDefaultClient)();
30
+ const html = await (0, templates_1.renderResetPassword)(props);
31
+ return await client.sendEmail({
32
+ to,
33
+ subject: "Reset your password",
34
+ body: html,
35
+ from: options?.from,
36
+ reply: options?.replyTo,
37
+ headers: options?.headers,
38
+ });
39
+ }
@@ -0,0 +1,4 @@
1
+ import type { TeamInviteProps, ResetPasswordProps } from "./types";
2
+ export declare function renderTeamInvite(props: TeamInviteProps): Promise<string>;
3
+ export declare function renderResetPassword(props: ResetPasswordProps): Promise<string>;
4
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/templates.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAE9E;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAEpF"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.renderTeamInvite = renderTeamInvite;
7
+ exports.renderResetPassword = renderResetPassword;
8
+ const jsx_runtime_1 = require("react/jsx-runtime");
9
+ const components_1 = require("@react-email/components");
10
+ const team_invite_1 = __importDefault(require("../emails/team-invite"));
11
+ const reset_password_1 = __importDefault(require("../emails/reset-password"));
12
+ async function renderTeamInvite(props) {
13
+ return await (0, components_1.render)((0, jsx_runtime_1.jsx)(team_invite_1.default, { ...props }));
14
+ }
15
+ async function renderResetPassword(props) {
16
+ return await (0, components_1.render)((0, jsx_runtime_1.jsx)(reset_password_1.default, { ...props }));
17
+ }
@@ -0,0 +1,60 @@
1
+ export interface PlunkSendEmailRequest {
2
+ to: string | {
3
+ name: string;
4
+ email: string;
5
+ } | Array<string | {
6
+ name: string;
7
+ email: string;
8
+ }>;
9
+ subject: string;
10
+ body: string;
11
+ from?: string | {
12
+ name: string;
13
+ email: string;
14
+ };
15
+ name?: string;
16
+ subscribed?: boolean;
17
+ data?: Record<string, unknown>;
18
+ headers?: Record<string, string>;
19
+ reply?: string;
20
+ attachments?: Array<{
21
+ filename: string;
22
+ content: string;
23
+ contentType: string;
24
+ }>;
25
+ }
26
+ export interface PlunkSendEmailResponse {
27
+ success: boolean;
28
+ data?: {
29
+ emails: Array<{
30
+ contact: string;
31
+ email: string;
32
+ }>;
33
+ timestamp: string;
34
+ };
35
+ error?: {
36
+ code: string;
37
+ error: string;
38
+ message: string;
39
+ timestamp: string;
40
+ };
41
+ }
42
+ export interface TeamInviteProps {
43
+ teamName: string;
44
+ inviterName: string;
45
+ inviteUrl: string;
46
+ recipientEmail: string;
47
+ }
48
+ export interface ResetPasswordProps {
49
+ resetUrl: string;
50
+ userName?: string;
51
+ }
52
+ export interface SendEmailOptions {
53
+ from?: string | {
54
+ name: string;
55
+ email: string;
56
+ };
57
+ replyTo?: string;
58
+ headers?: Record<string, string>;
59
+ }
60
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/F,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,KAAK,CAAC;YACZ,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC,CAAC;QACH,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAGD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,34 +1,38 @@
1
1
  {
2
2
  "name": "@cms0/transactional",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "restricted"
7
7
  },
8
- "main": "dist/index.js",
8
+ "main": "dist/src/index.js",
9
9
  "types": "./src/index.ts",
10
10
  "exports": {
11
11
  ".": {
12
12
  "types": "./src/index.ts",
13
13
  "import": "./src/index.ts",
14
- "require": "./dist/index.js",
14
+ "require": "./dist/src/index.js",
15
15
  "default": "./src/index.ts"
16
16
  },
17
17
  "./*": {
18
18
  "types": "./src/*.ts",
19
19
  "import": "./src/*.ts",
20
- "require": "./dist/*.js"
20
+ "require": "./dist/src/*.js"
21
21
  }
22
22
  },
23
23
  "dependencies": {
24
- "@react-email/components": "0.0.31",
25
- "react": "19.0.0",
26
- "react-dom": "19.0.0"
24
+ "@react-email/components": "0.0.31"
25
+ },
26
+ "peerDependencies": {
27
+ "react": "^19.0.0",
28
+ "react-dom": "^19.0.0"
27
29
  },
28
30
  "devDependencies": {
29
31
  "@types/node": "^20.0.0",
30
32
  "@types/react": "^19.0.0",
31
33
  "@types/react-dom": "^19.0.0",
34
+ "react": "^19.0.0",
35
+ "react-dom": "^19.0.0",
32
36
  "typescript": "^5.0.0",
33
37
  "react-email": "3.0.3",
34
38
  "@cms0/typescript-config": "0.0.1"