@intelligo-dev/core 1.0.0-beta.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 (254) hide show
  1. package/LICENSE +201 -0
  2. package/dist/conversations/errors.d.ts +31 -0
  3. package/dist/conversations/errors.d.ts.map +1 -0
  4. package/dist/conversations/errors.js +25 -0
  5. package/dist/conversations/errors.js.map +1 -0
  6. package/dist/conversations/index.d.ts +13 -0
  7. package/dist/conversations/index.d.ts.map +1 -0
  8. package/dist/conversations/index.js +12 -0
  9. package/dist/conversations/index.js.map +1 -0
  10. package/dist/conversations/service.d.ts +132 -0
  11. package/dist/conversations/service.d.ts.map +1 -0
  12. package/dist/conversations/service.js +347 -0
  13. package/dist/conversations/service.js.map +1 -0
  14. package/dist/conversations/types.d.ts +10 -0
  15. package/dist/conversations/types.d.ts.map +1 -0
  16. package/dist/conversations/types.js +5 -0
  17. package/dist/conversations/types.js.map +1 -0
  18. package/dist/db/client.d.ts +19 -0
  19. package/dist/db/client.d.ts.map +1 -0
  20. package/dist/db/client.js +52 -0
  21. package/dist/db/client.js.map +1 -0
  22. package/dist/db/index.d.ts +4 -0
  23. package/dist/db/index.d.ts.map +1 -0
  24. package/dist/db/index.js +8 -0
  25. package/dist/db/index.js.map +1 -0
  26. package/dist/db/schema/agents.d.ts +400 -0
  27. package/dist/db/schema/agents.d.ts.map +1 -0
  28. package/dist/db/schema/agents.js +39 -0
  29. package/dist/db/schema/agents.js.map +1 -0
  30. package/dist/db/schema/ai.d.ts +2222 -0
  31. package/dist/db/schema/ai.d.ts.map +1 -0
  32. package/dist/db/schema/ai.js +313 -0
  33. package/dist/db/schema/ai.js.map +1 -0
  34. package/dist/db/schema/auth.d.ts +1222 -0
  35. package/dist/db/schema/auth.d.ts.map +1 -0
  36. package/dist/db/schema/auth.js +162 -0
  37. package/dist/db/schema/auth.js.map +1 -0
  38. package/dist/db/schema/billing.d.ts +1199 -0
  39. package/dist/db/schema/billing.d.ts.map +1 -0
  40. package/dist/db/schema/billing.js +150 -0
  41. package/dist/db/schema/billing.js.map +1 -0
  42. package/dist/db/schema/feature-flags.d.ts +143 -0
  43. package/dist/db/schema/feature-flags.d.ts.map +1 -0
  44. package/dist/db/schema/feature-flags.js +25 -0
  45. package/dist/db/schema/feature-flags.js.map +1 -0
  46. package/dist/db/schema/identity.d.ts +1295 -0
  47. package/dist/db/schema/identity.d.ts.map +1 -0
  48. package/dist/db/schema/identity.js +258 -0
  49. package/dist/db/schema/identity.js.map +1 -0
  50. package/dist/db/schema/index.d.ts +16 -0
  51. package/dist/db/schema/index.d.ts.map +1 -0
  52. package/dist/db/schema/index.js +43 -0
  53. package/dist/db/schema/index.js.map +1 -0
  54. package/dist/db/schema/notifications.d.ts +182 -0
  55. package/dist/db/schema/notifications.d.ts.map +1 -0
  56. package/dist/db/schema/notifications.js +38 -0
  57. package/dist/db/schema/notifications.js.map +1 -0
  58. package/dist/db/schema/rag.d.ts +171 -0
  59. package/dist/db/schema/rag.d.ts.map +1 -0
  60. package/dist/db/schema/rag.js +42 -0
  61. package/dist/db/schema/rag.js.map +1 -0
  62. package/dist/db/schema/usage.d.ts +1193 -0
  63. package/dist/db/schema/usage.d.ts.map +1 -0
  64. package/dist/db/schema/usage.js +224 -0
  65. package/dist/db/schema/usage.js.map +1 -0
  66. package/dist/db/validate.d.ts +19 -0
  67. package/dist/db/validate.d.ts.map +1 -0
  68. package/dist/db/validate.js +58 -0
  69. package/dist/db/validate.js.map +1 -0
  70. package/dist/db/workspace-queries.d.ts +75 -0
  71. package/dist/db/workspace-queries.d.ts.map +1 -0
  72. package/dist/db/workspace-queries.js +78 -0
  73. package/dist/db/workspace-queries.js.map +1 -0
  74. package/dist/documents/classifier.d.ts +31 -0
  75. package/dist/documents/classifier.d.ts.map +1 -0
  76. package/dist/documents/classifier.js +41 -0
  77. package/dist/documents/classifier.js.map +1 -0
  78. package/dist/documents/errors.d.ts +32 -0
  79. package/dist/documents/errors.d.ts.map +1 -0
  80. package/dist/documents/errors.js +27 -0
  81. package/dist/documents/errors.js.map +1 -0
  82. package/dist/documents/index.d.ts +14 -0
  83. package/dist/documents/index.d.ts.map +1 -0
  84. package/dist/documents/index.js +13 -0
  85. package/dist/documents/index.js.map +1 -0
  86. package/dist/documents/service.d.ts +54 -0
  87. package/dist/documents/service.d.ts.map +1 -0
  88. package/dist/documents/service.js +146 -0
  89. package/dist/documents/service.js.map +1 -0
  90. package/dist/documents/types.d.ts +27 -0
  91. package/dist/documents/types.d.ts.map +1 -0
  92. package/dist/documents/types.js +5 -0
  93. package/dist/documents/types.js.map +1 -0
  94. package/dist/email/index.d.ts +5 -0
  95. package/dist/email/index.d.ts.map +1 -0
  96. package/dist/email/index.js +5 -0
  97. package/dist/email/index.js.map +1 -0
  98. package/dist/email/provider.d.ts +68 -0
  99. package/dist/email/provider.d.ts.map +1 -0
  100. package/dist/email/provider.js +199 -0
  101. package/dist/email/provider.js.map +1 -0
  102. package/dist/email/send.d.ts +47 -0
  103. package/dist/email/send.d.ts.map +1 -0
  104. package/dist/email/send.js +110 -0
  105. package/dist/email/send.js.map +1 -0
  106. package/dist/email/senders.d.ts +93 -0
  107. package/dist/email/senders.d.ts.map +1 -0
  108. package/dist/email/senders.js +232 -0
  109. package/dist/email/senders.js.map +1 -0
  110. package/dist/email/templates/base-layout.d.ts +7 -0
  111. package/dist/email/templates/base-layout.d.ts.map +1 -0
  112. package/dist/email/templates/base-layout.js +69 -0
  113. package/dist/email/templates/base-layout.js.map +1 -0
  114. package/dist/email/templates/index.d.ts +11 -0
  115. package/dist/email/templates/index.d.ts.map +1 -0
  116. package/dist/email/templates/index.js +17 -0
  117. package/dist/email/templates/index.js.map +1 -0
  118. package/dist/email/templates/password-reset.d.ts +7 -0
  119. package/dist/email/templates/password-reset.d.ts.map +1 -0
  120. package/dist/email/templates/password-reset.js +59 -0
  121. package/dist/email/templates/password-reset.js.map +1 -0
  122. package/dist/email/templates/payment-failed.d.ts +8 -0
  123. package/dist/email/templates/payment-failed.d.ts.map +1 -0
  124. package/dist/email/templates/payment-failed.js +62 -0
  125. package/dist/email/templates/payment-failed.js.map +1 -0
  126. package/dist/email/templates/quota-warning.d.ts +11 -0
  127. package/dist/email/templates/quota-warning.d.ts.map +1 -0
  128. package/dist/email/templates/quota-warning.js +82 -0
  129. package/dist/email/templates/quota-warning.js.map +1 -0
  130. package/dist/email/templates/subscription-confirmed.d.ts +9 -0
  131. package/dist/email/templates/subscription-confirmed.d.ts.map +1 -0
  132. package/dist/email/templates/subscription-confirmed.js +72 -0
  133. package/dist/email/templates/subscription-confirmed.js.map +1 -0
  134. package/dist/email/templates/trial-expiry.d.ts +9 -0
  135. package/dist/email/templates/trial-expiry.d.ts.map +1 -0
  136. package/dist/email/templates/trial-expiry.js +86 -0
  137. package/dist/email/templates/trial-expiry.js.map +1 -0
  138. package/dist/email/templates/trial-warning.d.ts +11 -0
  139. package/dist/email/templates/trial-warning.d.ts.map +1 -0
  140. package/dist/email/templates/trial-warning.js +70 -0
  141. package/dist/email/templates/trial-warning.js.map +1 -0
  142. package/dist/email/templates/verify-email.d.ts +7 -0
  143. package/dist/email/templates/verify-email.d.ts.map +1 -0
  144. package/dist/email/templates/verify-email.js +59 -0
  145. package/dist/email/templates/verify-email.js.map +1 -0
  146. package/dist/email/templates/welcome.d.ts +7 -0
  147. package/dist/email/templates/welcome.d.ts.map +1 -0
  148. package/dist/email/templates/welcome.js +51 -0
  149. package/dist/email/templates/welcome.js.map +1 -0
  150. package/dist/email/templates/workspace-invitation.d.ts +10 -0
  151. package/dist/email/templates/workspace-invitation.d.ts.map +1 -0
  152. package/dist/email/templates/workspace-invitation.js +79 -0
  153. package/dist/email/templates/workspace-invitation.js.map +1 -0
  154. package/dist/env.d.ts +21 -0
  155. package/dist/env.d.ts.map +1 -0
  156. package/dist/env.js +129 -0
  157. package/dist/env.js.map +1 -0
  158. package/dist/identity/audit.d.ts +39 -0
  159. package/dist/identity/audit.d.ts.map +1 -0
  160. package/dist/identity/audit.js +51 -0
  161. package/dist/identity/audit.js.map +1 -0
  162. package/dist/identity/errors.d.ts +32 -0
  163. package/dist/identity/errors.d.ts.map +1 -0
  164. package/dist/identity/errors.js +25 -0
  165. package/dist/identity/errors.js.map +1 -0
  166. package/dist/identity/index.d.ts +16 -0
  167. package/dist/identity/index.d.ts.map +1 -0
  168. package/dist/identity/index.js +15 -0
  169. package/dist/identity/index.js.map +1 -0
  170. package/dist/identity/service.d.ts +70 -0
  171. package/dist/identity/service.d.ts.map +1 -0
  172. package/dist/identity/service.js +179 -0
  173. package/dist/identity/service.js.map +1 -0
  174. package/dist/identity/types.d.ts +27 -0
  175. package/dist/identity/types.d.ts.map +1 -0
  176. package/dist/identity/types.js +5 -0
  177. package/dist/identity/types.js.map +1 -0
  178. package/dist/index.d.ts +3 -0
  179. package/dist/index.d.ts.map +1 -0
  180. package/dist/index.js +11 -0
  181. package/dist/index.js.map +1 -0
  182. package/dist/logger.d.ts +50 -0
  183. package/dist/logger.d.ts.map +1 -0
  184. package/dist/logger.js +183 -0
  185. package/dist/logger.js.map +1 -0
  186. package/dist/notifications/index.d.ts +86 -0
  187. package/dist/notifications/index.d.ts.map +1 -0
  188. package/dist/notifications/index.js +112 -0
  189. package/dist/notifications/index.js.map +1 -0
  190. package/dist/notifications/triggers.d.ts +68 -0
  191. package/dist/notifications/triggers.d.ts.map +1 -0
  192. package/dist/notifications/triggers.js +145 -0
  193. package/dist/notifications/triggers.js.map +1 -0
  194. package/dist/notifications/types.d.ts +19 -0
  195. package/dist/notifications/types.d.ts.map +1 -0
  196. package/dist/notifications/types.js +11 -0
  197. package/dist/notifications/types.js.map +1 -0
  198. package/package.json +101 -0
  199. package/src/db/migrations/0000_sharp_night_nurse.sql +52 -0
  200. package/src/db/migrations/0001_hesitant_vapor.sql +40 -0
  201. package/src/db/migrations/0002_numerous_lady_vermin.sql +235 -0
  202. package/src/db/migrations/0003_mighty_jean_grey.sql +37 -0
  203. package/src/db/migrations/0004_cynical_grandmaster.sql +2 -0
  204. package/src/db/migrations/0005_careful_switch.sql +8 -0
  205. package/src/db/migrations/0006_tense_blue_marvel.sql +16 -0
  206. package/src/db/migrations/0007_next_squadron_sinister.sql +1 -0
  207. package/src/db/migrations/0008_powerful_scream.sql +39 -0
  208. package/src/db/migrations/0009_sad_ink.sql +1 -0
  209. package/src/db/migrations/0010_shocking_omega_flight.sql +2 -0
  210. package/src/db/migrations/0011_ambiguous_otto_octavius.sql +151 -0
  211. package/src/db/migrations/0011_hnsw_vector_index.sql +17 -0
  212. package/src/db/migrations/0012_user_profiles.sql +30 -0
  213. package/src/db/migrations/0013_trending_seasonal_columns.sql +9 -0
  214. package/src/db/migrations/0014_add_product_type_to_agents.sql +6 -0
  215. package/src/db/migrations/0015_new_v1_tables.sql +149 -0
  216. package/src/db/migrations/0016_document_types.sql +30 -0
  217. package/src/db/migrations/0017_document_metadata.sql +2 -0
  218. package/src/db/migrations/0018_identity_graph.sql +200 -0
  219. package/src/db/migrations/0019_db_driven_prompts.sql +20 -0
  220. package/src/db/migrations/0020_pending_extractions.sql +35 -0
  221. package/src/db/migrations/0021_rag_documents.sql +39 -0
  222. package/src/db/migrations/0022_user_quotas_usage_jsonb.sql +70 -0
  223. package/src/db/migrations/0023_user_facts_user_scoped_unique.sql +17 -0
  224. package/src/db/migrations/0024_user_memories_hnsw.sql +23 -0
  225. package/src/db/migrations/0025_audit_trigger_errcode.sql +21 -0
  226. package/src/db/migrations/0026_user_profile_snapshots_composite_pk.sql +17 -0
  227. package/src/db/migrations/0027_billing_settings_mnt_columns.sql +54 -0
  228. package/src/db/migrations/0028_trial_credits_normalized_email.sql +37 -0
  229. package/src/db/migrations/0029_usage_records_conversation_idx.sql +13 -0
  230. package/src/db/migrations/0030_pending_extractions_composite_idx.sql +11 -0
  231. package/src/db/migrations/0031_rag_documents_hnsw.sql +16 -0
  232. package/src/db/migrations/0032_rate_limit_unique_idx.sql +16 -0
  233. package/src/db/migrations/0033_pending_extractions_partial_idx.sql +18 -0
  234. package/src/db/migrations/0034_rate_limit_count.sql +9 -0
  235. package/src/db/migrations/0035_credit_reservations.sql +24 -0
  236. package/src/db/migrations/0036_executions_audit_jobs.sql +96 -0
  237. package/src/db/migrations/0037_rate_limit_minute_bucket.sql +46 -0
  238. package/src/db/migrations/0038_user_quotas_generic_usage.sql +25 -0
  239. package/src/db/migrations/0039_platform_admin_impersonation.sql +27 -0
  240. package/src/db/migrations/0040_ee_audit_chain.sql +23 -0
  241. package/src/db/migrations/README.md +57 -0
  242. package/src/db/migrations/meta/0000_snapshot.json +348 -0
  243. package/src/db/migrations/meta/0001_snapshot.json +631 -0
  244. package/src/db/migrations/meta/0002_snapshot.json +2269 -0
  245. package/src/db/migrations/meta/0003_snapshot.json +2488 -0
  246. package/src/db/migrations/meta/0004_snapshot.json +2500 -0
  247. package/src/db/migrations/meta/0005_snapshot.json +2548 -0
  248. package/src/db/migrations/meta/0006_snapshot.json +2650 -0
  249. package/src/db/migrations/meta/0007_snapshot.json +2657 -0
  250. package/src/db/migrations/meta/0008_snapshot.json +2719 -0
  251. package/src/db/migrations/meta/0009_snapshot.json +2726 -0
  252. package/src/db/migrations/meta/0010_snapshot.json +2739 -0
  253. package/src/db/migrations/meta/0011_snapshot.json +3886 -0
  254. package/src/db/migrations/meta/_journal.json +300 -0
@@ -0,0 +1,110 @@
1
+ import { render } from "@react-email/components";
2
+ import { getEmailProvider } from "./provider";
3
+ const MAX_ATTEMPTS = 3;
4
+ const BASE_DELAY_MS = 1000;
5
+ /**
6
+ * Returns true if the error is a client error (4xx) that should NOT be retried.
7
+ */
8
+ function isClientError(error) {
9
+ if (error && typeof error === "object") {
10
+ const err = error;
11
+ // Check for explicit statusCode (set by ResendProvider / LoopsProvider).
12
+ // 429 is excluded: rate limits are transient and worth retrying.
13
+ if (typeof err.statusCode === "number") {
14
+ return (err.statusCode >= 400 && err.statusCode < 500 && err.statusCode !== 429);
15
+ }
16
+ // Check for status property (some HTTP libraries)
17
+ if (typeof err.status === "number") {
18
+ return err.status >= 400 && err.status < 500 && err.status !== 429;
19
+ }
20
+ // Resend SDK error names that indicate client errors
21
+ const name = err.name;
22
+ if (name === "validation_error" ||
23
+ name === "missing_required_field" ||
24
+ name === "invalid_api_Key") {
25
+ return true;
26
+ }
27
+ }
28
+ return false;
29
+ }
30
+ function delay(ms) {
31
+ return new Promise((resolve) => setTimeout(resolve, ms));
32
+ }
33
+ /**
34
+ * Send an email through the configured provider with retry logic.
35
+ *
36
+ * Accepts either raw HTML via `{ html }` or a React Email component via
37
+ * `{ react }`. When a React element is provided, it is rendered to HTML
38
+ * using `@react-email/components`'s `render()` before sending.
39
+ *
40
+ * This function NEVER throws. All errors are caught and returned as
41
+ * `{ success: false, error: "..." }`. This prevents email failures
42
+ * from crashing the application (TECH-08).
43
+ */
44
+ export async function sendEmail(params) {
45
+ try {
46
+ const provider = getEmailProvider();
47
+ const from = params.from ??
48
+ process.env.EMAIL_FROM ??
49
+ "Intelligo <noreply@intelligo.dev>";
50
+ const recipient = Array.isArray(params.to)
51
+ ? params.to.join(", ")
52
+ : params.to;
53
+ // Resolve HTML content: either use provided html or render React component
54
+ let html;
55
+ if ("react" in params) {
56
+ try {
57
+ html = await render(params.react);
58
+ }
59
+ catch (renderError) {
60
+ const message = renderError instanceof Error
61
+ ? renderError.message
62
+ : String(renderError);
63
+ console.error(`[Email] Failed to render React component: ${message}`);
64
+ return { success: false, error: `Template render failed: ${message}` };
65
+ }
66
+ }
67
+ else {
68
+ html = params.html;
69
+ }
70
+ let lastError;
71
+ for (let attempt = 1; attempt <= MAX_ATTEMPTS; attempt++) {
72
+ try {
73
+ const result = await provider.send({
74
+ to: params.to,
75
+ subject: params.subject,
76
+ html,
77
+ from,
78
+ replyTo: params.replyTo,
79
+ template: params.template,
80
+ });
81
+ return { success: true, id: result.id };
82
+ }
83
+ catch (error) {
84
+ lastError = error;
85
+ const message = error instanceof Error ? error.message : String(error);
86
+ // Do NOT retry client errors (4xx) – they will always fail
87
+ if (isClientError(error)) {
88
+ console.error(`[Email] Send failed for ${recipient} (client error, not retrying): ${message}`);
89
+ return { success: false, error: message };
90
+ }
91
+ console.warn(`[Email] Send attempt ${attempt}/${MAX_ATTEMPTS} failed for ${recipient}: ${message}`);
92
+ // Wait before next attempt (exponential backoff: 1s, 2s, 4s)
93
+ if (attempt < MAX_ATTEMPTS) {
94
+ await delay(BASE_DELAY_MS * Math.pow(2, attempt - 1));
95
+ }
96
+ }
97
+ }
98
+ // All attempts exhausted
99
+ const finalMessage = lastError instanceof Error ? lastError.message : String(lastError);
100
+ console.error(`[Email] All ${MAX_ATTEMPTS} attempts failed for ${recipient}: ${params.subject}`);
101
+ return { success: false, error: finalMessage };
102
+ }
103
+ catch (error) {
104
+ // Catch-all for unexpected errors (e.g., getEmailProvider() failing)
105
+ const message = error instanceof Error ? error.message : String(error);
106
+ console.error(`[Email] Unexpected error: ${message}`);
107
+ return { success: false, error: message };
108
+ }
109
+ }
110
+ //# sourceMappingURL=send.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/email/send.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Email Sender Functions
3
+ *
4
+ * High-level convenience wrappers that compose sendEmail() with React Email
5
+ * templates. Each function accepts typed params and returns SendEmailResult.
6
+ *
7
+ * These are the primary API for sending branded emails throughout the app:
8
+ * - Auth emails: welcome, verify, password reset (wired into Better-Auth)
9
+ * - Team emails: workspace invitation (replaces Phase 10 console.log)
10
+ * - Billing emails: quota warning, trial warning, payment failed, subscription confirmed
11
+ *
12
+ * All functions return Promise<SendEmailResult> and NEVER throw (TECH-08).
13
+ *
14
+ * Every sender attaches a stable `template` key + flat variables so
15
+ * template-based providers (Loops) can send the same email from a
16
+ * provider-side template. HTML-capable providers (Resend) ignore it.
17
+ * Loops mapping: LOOPS_TRANSACTIONAL_ID_<KEY> (e.g. "verify-email" →
18
+ * LOOPS_TRANSACTIONAL_ID_VERIFY_EMAIL). Boolean variants use distinct keys
19
+ * (quota-warning / quota-exceeded, trial-warning / trial-depleted) because
20
+ * template providers branch per template, not per variable.
21
+ */
22
+ import { type SendEmailResult } from "./send";
23
+ /** Send welcome email after signup (EMAIL-03) */
24
+ export declare function sendWelcomeEmail(params: {
25
+ to: string;
26
+ userName: string;
27
+ dashboardUrl: string;
28
+ }): Promise<SendEmailResult>;
29
+ /** Send email verification link (EMAIL-04) */
30
+ export declare function sendVerifyEmail(params: {
31
+ to: string;
32
+ userName: string;
33
+ verificationUrl: string;
34
+ }): Promise<SendEmailResult>;
35
+ /** Send password reset link (EMAIL-05) */
36
+ export declare function sendPasswordResetEmail(params: {
37
+ to: string;
38
+ userName: string;
39
+ resetUrl: string;
40
+ }): Promise<SendEmailResult>;
41
+ /** Send workspace invitation email (EMAIL-06) */
42
+ export declare function sendInvitationEmail(params: {
43
+ to: string;
44
+ inviterName: string;
45
+ workspaceName: string;
46
+ role: string;
47
+ acceptUrl: string;
48
+ declineUrl: string;
49
+ }): Promise<SendEmailResult>;
50
+ /** Send quota warning or exceeded email (EMAIL-09 / EMAIL-10) */
51
+ export declare function sendQuotaWarningEmail(params: {
52
+ to: string;
53
+ workspaceName: string;
54
+ percentageUsed: number;
55
+ tokensUsed: number;
56
+ tokensLimit: number;
57
+ upgradeUrl: string;
58
+ isExceeded: boolean;
59
+ }): Promise<SendEmailResult>;
60
+ /** Send trial warning or depleted email (EMAIL-07 / EMAIL-08) */
61
+ export declare function sendTrialWarningEmail(params: {
62
+ to: string;
63
+ workspaceName: string;
64
+ creditsRemaining: number;
65
+ totalCredits: number;
66
+ percentageRemaining: number;
67
+ upgradeUrl: string;
68
+ isDepleted: boolean;
69
+ }): Promise<SendEmailResult>;
70
+ /** Send payment failed email (EMAIL-11) */
71
+ export declare function sendPaymentFailedEmail(params: {
72
+ to: string;
73
+ workspaceName: string;
74
+ amount: string;
75
+ updatePaymentUrl: string;
76
+ }): Promise<SendEmailResult>;
77
+ /** Send subscription confirmed email (EMAIL-12) */
78
+ export declare function sendSubscriptionConfirmedEmail(params: {
79
+ to: string;
80
+ workspaceName: string;
81
+ planName: string;
82
+ amount: string;
83
+ dashboardUrl: string;
84
+ }): Promise<SendEmailResult>;
85
+ /** Send trial expiry reminder email (EMAIL-13) */
86
+ export declare function sendTrialExpiryEmail(params: {
87
+ to: string;
88
+ workspaceName: string;
89
+ expiryDate: string;
90
+ daysRemaining: number;
91
+ upgradeUrl: string;
92
+ }): Promise<SendEmailResult>;
93
+ //# sourceMappingURL=senders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"senders.d.ts","sourceRoot":"","sources":["../../src/email/senders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,QAAQ,CAAC;AAiBzD,iDAAiD;AACjD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,eAAe,CAAC,CAgB3B;AAED,8CAA8C;AAC9C,wBAAsB,eAAe,CAAC,MAAM,EAAE;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,eAAe,CAAC,CAgB3B;AAED,0CAA0C;AAC1C,wBAAsB,sBAAsB,CAAC,MAAM,EAAE;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,eAAe,CAAC,CAgB3B;AAMD,iDAAiD;AACjD,wBAAsB,mBAAmB,CAAC,MAAM,EAAE;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,eAAe,CAAC,CAsB3B;AAMD,iEAAiE;AACjE,wBAAsB,qBAAqB,CAAC,MAAM,EAAE;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,eAAe,CAAC,CAyB3B;AAED,iEAAiE;AACjE,wBAAsB,qBAAqB,CAAC,MAAM,EAAE;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,eAAe,CAAC,CAyB3B;AAED,2CAA2C;AAC3C,wBAAsB,sBAAsB,CAAC,MAAM,EAAE;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,eAAe,CAAC,CAkB3B;AAED,mDAAmD;AACnD,wBAAsB,8BAA8B,CAAC,MAAM,EAAE;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,eAAe,CAAC,CAoB3B;AAED,kDAAkD;AAClD,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,eAAe,CAAC,CAuB3B"}
@@ -0,0 +1,232 @@
1
+ /**
2
+ * Email Sender Functions
3
+ *
4
+ * High-level convenience wrappers that compose sendEmail() with React Email
5
+ * templates. Each function accepts typed params and returns SendEmailResult.
6
+ *
7
+ * These are the primary API for sending branded emails throughout the app:
8
+ * - Auth emails: welcome, verify, password reset (wired into Better-Auth)
9
+ * - Team emails: workspace invitation (replaces Phase 10 console.log)
10
+ * - Billing emails: quota warning, trial warning, payment failed, subscription confirmed
11
+ *
12
+ * All functions return Promise<SendEmailResult> and NEVER throw (TECH-08).
13
+ *
14
+ * Every sender attaches a stable `template` key + flat variables so
15
+ * template-based providers (Loops) can send the same email from a
16
+ * provider-side template. HTML-capable providers (Resend) ignore it.
17
+ * Loops mapping: LOOPS_TRANSACTIONAL_ID_<KEY> (e.g. "verify-email" →
18
+ * LOOPS_TRANSACTIONAL_ID_VERIFY_EMAIL). Boolean variants use distinct keys
19
+ * (quota-warning / quota-exceeded, trial-warning / trial-depleted) because
20
+ * template providers branch per template, not per variable.
21
+ */
22
+ import * as React from "react";
23
+ import { sendEmail } from "./send";
24
+ import { WelcomeEmail, VerifyEmailEmail, PasswordResetEmail, WorkspaceInvitationEmail, QuotaWarningEmail, TrialWarningEmail, TrialExpiryEmail, PaymentFailedEmail, SubscriptionConfirmedEmail, } from "./templates";
25
+ // ---------------------------------------------------------------------------
26
+ // Auth Emails
27
+ // ---------------------------------------------------------------------------
28
+ /** Send welcome email after signup (EMAIL-03) */
29
+ export async function sendWelcomeEmail(params) {
30
+ return sendEmail({
31
+ to: params.to,
32
+ subject: "Welcome to Intelligo!",
33
+ react: React.createElement(WelcomeEmail, {
34
+ userName: params.userName,
35
+ dashboardUrl: params.dashboardUrl,
36
+ }),
37
+ template: {
38
+ key: "welcome",
39
+ variables: {
40
+ userName: params.userName,
41
+ dashboardUrl: params.dashboardUrl,
42
+ },
43
+ },
44
+ });
45
+ }
46
+ /** Send email verification link (EMAIL-04) */
47
+ export async function sendVerifyEmail(params) {
48
+ return sendEmail({
49
+ to: params.to,
50
+ subject: "Verify your email address",
51
+ react: React.createElement(VerifyEmailEmail, {
52
+ userName: params.userName,
53
+ verificationUrl: params.verificationUrl,
54
+ }),
55
+ template: {
56
+ key: "verify-email",
57
+ variables: {
58
+ userName: params.userName,
59
+ verificationUrl: params.verificationUrl,
60
+ },
61
+ },
62
+ });
63
+ }
64
+ /** Send password reset link (EMAIL-05) */
65
+ export async function sendPasswordResetEmail(params) {
66
+ return sendEmail({
67
+ to: params.to,
68
+ subject: "Reset your password",
69
+ react: React.createElement(PasswordResetEmail, {
70
+ userName: params.userName,
71
+ resetUrl: params.resetUrl,
72
+ }),
73
+ template: {
74
+ key: "password-reset",
75
+ variables: {
76
+ userName: params.userName,
77
+ resetUrl: params.resetUrl,
78
+ },
79
+ },
80
+ });
81
+ }
82
+ // ---------------------------------------------------------------------------
83
+ // Team Emails
84
+ // ---------------------------------------------------------------------------
85
+ /** Send workspace invitation email (EMAIL-06) */
86
+ export async function sendInvitationEmail(params) {
87
+ return sendEmail({
88
+ to: params.to,
89
+ subject: `${params.inviterName} invited you to ${params.workspaceName}`,
90
+ react: React.createElement(WorkspaceInvitationEmail, {
91
+ inviterName: params.inviterName,
92
+ workspaceName: params.workspaceName,
93
+ role: params.role,
94
+ acceptUrl: params.acceptUrl,
95
+ declineUrl: params.declineUrl,
96
+ }),
97
+ template: {
98
+ key: "workspace-invitation",
99
+ variables: {
100
+ inviterName: params.inviterName,
101
+ workspaceName: params.workspaceName,
102
+ role: params.role,
103
+ acceptUrl: params.acceptUrl,
104
+ declineUrl: params.declineUrl,
105
+ },
106
+ },
107
+ });
108
+ }
109
+ // ---------------------------------------------------------------------------
110
+ // Billing / Usage Emails
111
+ // ---------------------------------------------------------------------------
112
+ /** Send quota warning or exceeded email (EMAIL-09 / EMAIL-10) */
113
+ export async function sendQuotaWarningEmail(params) {
114
+ return sendEmail({
115
+ to: params.to,
116
+ subject: params.isExceeded
117
+ ? "Token quota exceeded"
118
+ : `Token quota at ${params.percentageUsed}%`,
119
+ react: React.createElement(QuotaWarningEmail, {
120
+ workspaceName: params.workspaceName,
121
+ percentageUsed: params.percentageUsed,
122
+ tokensUsed: params.tokensUsed,
123
+ tokensLimit: params.tokensLimit,
124
+ upgradeUrl: params.upgradeUrl,
125
+ isExceeded: params.isExceeded,
126
+ }),
127
+ template: {
128
+ key: params.isExceeded ? "quota-exceeded" : "quota-warning",
129
+ variables: {
130
+ workspaceName: params.workspaceName,
131
+ percentageUsed: params.percentageUsed,
132
+ tokensUsed: params.tokensUsed,
133
+ tokensLimit: params.tokensLimit,
134
+ upgradeUrl: params.upgradeUrl,
135
+ },
136
+ },
137
+ });
138
+ }
139
+ /** Send trial warning or depleted email (EMAIL-07 / EMAIL-08) */
140
+ export async function sendTrialWarningEmail(params) {
141
+ return sendEmail({
142
+ to: params.to,
143
+ subject: params.isDepleted
144
+ ? "Trial credits depleted"
145
+ : "Trial credits running low",
146
+ react: React.createElement(TrialWarningEmail, {
147
+ workspaceName: params.workspaceName,
148
+ creditsRemaining: params.creditsRemaining,
149
+ totalCredits: params.totalCredits,
150
+ percentageRemaining: params.percentageRemaining,
151
+ upgradeUrl: params.upgradeUrl,
152
+ isDepleted: params.isDepleted,
153
+ }),
154
+ template: {
155
+ key: params.isDepleted ? "trial-depleted" : "trial-warning",
156
+ variables: {
157
+ workspaceName: params.workspaceName,
158
+ creditsRemaining: params.creditsRemaining,
159
+ totalCredits: params.totalCredits,
160
+ percentageRemaining: params.percentageRemaining,
161
+ upgradeUrl: params.upgradeUrl,
162
+ },
163
+ },
164
+ });
165
+ }
166
+ /** Send payment failed email (EMAIL-11) */
167
+ export async function sendPaymentFailedEmail(params) {
168
+ return sendEmail({
169
+ to: params.to,
170
+ subject: `Payment failed for ${params.workspaceName}`,
171
+ react: React.createElement(PaymentFailedEmail, {
172
+ workspaceName: params.workspaceName,
173
+ amount: params.amount,
174
+ updatePaymentUrl: params.updatePaymentUrl,
175
+ }),
176
+ template: {
177
+ key: "payment-failed",
178
+ variables: {
179
+ workspaceName: params.workspaceName,
180
+ amount: params.amount,
181
+ updatePaymentUrl: params.updatePaymentUrl,
182
+ },
183
+ },
184
+ });
185
+ }
186
+ /** Send subscription confirmed email (EMAIL-12) */
187
+ export async function sendSubscriptionConfirmedEmail(params) {
188
+ return sendEmail({
189
+ to: params.to,
190
+ subject: `Subscription confirmed - ${params.planName} plan`,
191
+ react: React.createElement(SubscriptionConfirmedEmail, {
192
+ workspaceName: params.workspaceName,
193
+ planName: params.planName,
194
+ amount: params.amount,
195
+ dashboardUrl: params.dashboardUrl,
196
+ }),
197
+ template: {
198
+ key: "subscription-confirmed",
199
+ variables: {
200
+ workspaceName: params.workspaceName,
201
+ planName: params.planName,
202
+ amount: params.amount,
203
+ dashboardUrl: params.dashboardUrl,
204
+ },
205
+ },
206
+ });
207
+ }
208
+ /** Send trial expiry reminder email (EMAIL-13) */
209
+ export async function sendTrialExpiryEmail(params) {
210
+ return sendEmail({
211
+ to: params.to,
212
+ subject: params.daysRemaining <= 0
213
+ ? `Your Pro trial for ${params.workspaceName} has expired`
214
+ : `Your Pro trial expires in ${params.daysRemaining} day${params.daysRemaining === 1 ? "" : "s"}`,
215
+ react: React.createElement(TrialExpiryEmail, {
216
+ workspaceName: params.workspaceName,
217
+ expiryDate: params.expiryDate,
218
+ daysRemaining: params.daysRemaining,
219
+ upgradeUrl: params.upgradeUrl,
220
+ }),
221
+ template: {
222
+ key: "trial-expiry",
223
+ variables: {
224
+ workspaceName: params.workspaceName,
225
+ expiryDate: params.expiryDate,
226
+ daysRemaining: params.daysRemaining,
227
+ upgradeUrl: params.upgradeUrl,
228
+ },
229
+ },
230
+ });
231
+ }
232
+ //# sourceMappingURL=senders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"senders.js","sourceRoot":"","sources":["../../src/email/senders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ export interface BaseLayoutProps {
3
+ preview: string;
4
+ children: React.ReactNode;
5
+ }
6
+ export declare function BaseLayout({ preview, children }: BaseLayoutProps): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=base-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-layout.d.ts","sourceRoot":"","sources":["../../../src/email/templates/base-layout.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAYD,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,eAAe,2CAqChE"}
@@ -0,0 +1,69 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Body, Container, Head, Hr, Html, Link, Preview, Section, Text, } from "@react-email/components";
3
+ // Color palette
4
+ const colors = {
5
+ background: "#f4f4f5", // zinc-100
6
+ container: "#ffffff",
7
+ text: "#18181b", // zinc-900
8
+ muted: "#71717a", // zinc-500
9
+ brand: "#7c3aed", // violet-600
10
+ border: "#e4e4e7", // zinc-200
11
+ };
12
+ export function BaseLayout({ preview, children }) {
13
+ return (_jsxs(Html, { lang: "en", children: [_jsx(Head, { children: _jsx("meta", { charSet: "utf-8" }) }), _jsx(Preview, { children: preview }), _jsx(Body, { style: bodyStyle, children: _jsxs(Container, { style: containerStyle, children: [_jsx(Section, { style: headerStyle, children: _jsx(Text, { style: logoStyle, children: "Intelligo" }) }), _jsx(Hr, { style: hrStyle }), _jsx(Section, { style: contentStyle, children: children }), _jsx(Hr, { style: hrStyle }), _jsxs(Section, { style: footerStyle, children: [_jsx(Text, { style: footerTextStyle, children: "Intelligo AI Platform" }), _jsxs(Text, { style: footerMutedStyle, children: ["This is a transactional email from Intelligo. If you believe you received this email in error, please contact", " ", _jsx(Link, { href: "mailto:support@intelligo.dev", style: footerLinkStyle, children: "support@intelligo.dev" }), "."] })] })] }) })] }));
14
+ }
15
+ // ---------------------------------------------------------------------------
16
+ // Inline Styles
17
+ // ---------------------------------------------------------------------------
18
+ const bodyStyle = {
19
+ backgroundColor: colors.background,
20
+ fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
21
+ margin: 0,
22
+ padding: "40px 0",
23
+ };
24
+ const containerStyle = {
25
+ backgroundColor: colors.container,
26
+ borderRadius: "8px",
27
+ maxWidth: "600px",
28
+ margin: "0 auto",
29
+ border: `1px solid ${colors.border}`,
30
+ };
31
+ const headerStyle = {
32
+ padding: "32px 40px 16px",
33
+ };
34
+ const logoStyle = {
35
+ color: colors.brand,
36
+ fontSize: "24px",
37
+ fontWeight: 700,
38
+ margin: 0,
39
+ lineHeight: "32px",
40
+ };
41
+ const hrStyle = {
42
+ borderColor: colors.border,
43
+ borderTop: "none",
44
+ margin: 0,
45
+ };
46
+ const contentStyle = {
47
+ padding: "24px 40px",
48
+ };
49
+ const footerStyle = {
50
+ padding: "16px 40px 32px",
51
+ };
52
+ const footerTextStyle = {
53
+ color: colors.muted,
54
+ fontSize: "13px",
55
+ lineHeight: "20px",
56
+ margin: "0 0 8px",
57
+ fontWeight: 600,
58
+ };
59
+ const footerMutedStyle = {
60
+ color: colors.muted,
61
+ fontSize: "12px",
62
+ lineHeight: "18px",
63
+ margin: 0,
64
+ };
65
+ const footerLinkStyle = {
66
+ color: colors.brand,
67
+ textDecoration: "underline",
68
+ };
69
+ //# sourceMappingURL=base-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-layout.js","sourceRoot":"","sources":["../../../src/email/templates/base-layout.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,EAAE,EACF,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,OAAO,EACP,IAAI,GACL,MAAM,yBAAyB,CAAC;AAmBjC,gBAAgB;AAChB,MAAM,MAAM,GAAG;IACb,UAAU,EAAE,SAAS,EAAE,WAAW;IAClC,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,SAAS,EAAE,WAAW;IAC5B,KAAK,EAAE,SAAS,EAAE,WAAW;IAC7B,KAAK,EAAE,SAAS,EAAE,aAAa;IAC/B,MAAM,EAAE,SAAS,EAAE,WAAW;CACtB,CAAC;AAEX,MAAM,UAAU,UAAU,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAmB;IAC/D,OAAO,CACL,MAAC,IAAI,IAAC,IAAI,EAAC,IAAI,aACb,KAAC,IAAI,cACH,eAAM,OAAO,EAAC,OAAO,GAAG,GACnB,EACP,KAAC,OAAO,cAAE,OAAO,GAAW,EAC5B,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,YACpB,MAAC,SAAS,IAAC,KAAK,EAAE,cAAc,aAE9B,KAAC,OAAO,IAAC,KAAK,EAAE,WAAW,YACzB,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,0BAAkB,GAChC,EAEV,KAAC,EAAE,IAAC,KAAK,EAAE,OAAO,GAAI,EAGtB,KAAC,OAAO,IAAC,KAAK,EAAE,YAAY,YAAG,QAAQ,GAAW,EAElD,KAAC,EAAE,IAAC,KAAK,EAAE,OAAO,GAAI,EAGtB,MAAC,OAAO,IAAC,KAAK,EAAE,WAAW,aACzB,KAAC,IAAI,IAAC,KAAK,EAAE,eAAe,sCAA8B,EAC1D,MAAC,IAAI,IAAC,KAAK,EAAE,gBAAgB,8HAEkB,GAAG,EAChD,KAAC,IAAI,IAAC,IAAI,EAAC,8BAA8B,EAAC,KAAK,EAAE,eAAe,sCAEzD,SAEF,IACC,IACA,GACP,IACF,CACR,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,MAAM,SAAS,GAAwB;IACrC,eAAe,EAAE,MAAM,CAAC,UAAU;IAClC,UAAU,EACR,4FAA4F;IAC9F,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,QAAQ;CAClB,CAAC;AAEF,MAAM,cAAc,GAAwB;IAC1C,eAAe,EAAE,MAAM,CAAC,SAAS;IACjC,YAAY,EAAE,KAAK;IACnB,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,aAAa,MAAM,CAAC,MAAM,EAAE;CACrC,CAAC;AAEF,MAAM,WAAW,GAAwB;IACvC,OAAO,EAAE,gBAAgB;CAC1B,CAAC;AAEF,MAAM,SAAS,GAAwB;IACrC,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,GAAG;IACf,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,MAAM;CACnB,CAAC;AAEF,MAAM,OAAO,GAAwB;IACnC,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE,CAAC;CACV,CAAC;AAEF,MAAM,YAAY,GAAwB;IACxC,OAAO,EAAE,WAAW;CACrB,CAAC;AAEF,MAAM,WAAW,GAAwB;IACvC,OAAO,EAAE,gBAAgB;CAC1B,CAAC;AAEF,MAAM,eAAe,GAAwB;IAC3C,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,SAAS;IACjB,UAAU,EAAE,GAAG;CAChB,CAAC;AAEF,MAAM,gBAAgB,GAAwB;IAC5C,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,CAAC;CACV,CAAC;AAEF,MAAM,eAAe,GAAwB;IAC3C,KAAK,EAAE,MAAM,CAAC,KAAK;IACnB,cAAc,EAAE,WAAW;CAC5B,CAAC"}
@@ -0,0 +1,11 @@
1
+ export { BaseLayout, type BaseLayoutProps } from "./base-layout";
2
+ export { WelcomeEmail, type WelcomeEmailProps } from "./welcome";
3
+ export { VerifyEmailEmail, type VerifyEmailEmailProps } from "./verify-email";
4
+ export { PasswordResetEmail, type PasswordResetEmailProps, } from "./password-reset";
5
+ export { WorkspaceInvitationEmail, type WorkspaceInvitationEmailProps, } from "./workspace-invitation";
6
+ export { QuotaWarningEmail, type QuotaWarningEmailProps, } from "./quota-warning";
7
+ export { TrialWarningEmail, type TrialWarningEmailProps, } from "./trial-warning";
8
+ export { PaymentFailedEmail, type PaymentFailedEmailProps, } from "./payment-failed";
9
+ export { SubscriptionConfirmedEmail, type SubscriptionConfirmedEmailProps, } from "./subscription-confirmed";
10
+ export { TrialExpiryEmail, type TrialExpiryEmailProps } from "./trial-expiry";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/email/templates/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,wBAAwB,EACxB,KAAK,6BAA6B,GACnC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,0BAA0B,EAC1B,KAAK,+BAA+B,GACrC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,17 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Email Templates — Barrel Export
3
+ // ---------------------------------------------------------------------------
4
+ // All React Email templates with Intelligo branding. Each template wraps
5
+ // content in BaseLayout for consistent styling.
6
+ // ---------------------------------------------------------------------------
7
+ export { BaseLayout } from "./base-layout";
8
+ export { WelcomeEmail } from "./welcome";
9
+ export { VerifyEmailEmail } from "./verify-email";
10
+ export { PasswordResetEmail, } from "./password-reset";
11
+ export { WorkspaceInvitationEmail, } from "./workspace-invitation";
12
+ export { QuotaWarningEmail, } from "./quota-warning";
13
+ export { TrialWarningEmail, } from "./trial-warning";
14
+ export { PaymentFailedEmail, } from "./payment-failed";
15
+ export { SubscriptionConfirmedEmail, } from "./subscription-confirmed";
16
+ export { TrialExpiryEmail } from "./trial-expiry";
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/email/templates/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;AAC9E,yEAAyE;AACzE,gDAAgD;AAChD,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAwB,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,YAAY,EAA0B,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAA8B,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EACL,kBAAkB,GAEnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,wBAAwB,GAEzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iBAAiB,GAElB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,GAElB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,GAEnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,0BAA0B,GAE3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAA8B,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export interface PasswordResetEmailProps {
2
+ userName: string;
3
+ resetUrl: string;
4
+ locale?: "en" | "mn";
5
+ }
6
+ export declare function PasswordResetEmail({ userName, resetUrl, locale, }: PasswordResetEmailProps): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=password-reset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password-reset.d.ts","sourceRoot":"","sources":["../../../src/email/templates/password-reset.tsx"],"names":[],"mappings":"AAUA,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,QAAQ,EACR,MAAa,GACd,EAAE,uBAAuB,2CAiCzB"}