@heliyos/heliyos-api-core 1.0.65 → 1.0.67

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.
@@ -6,6 +6,7 @@ export declare const emailTemplates: {
6
6
  forgotPassword: string;
7
7
  passwordResetSuccess: string;
8
8
  notificationImmediate: string;
9
+ notificationImmediateGrouped: string;
9
10
  notificationDailySummary: string;
10
11
  organizationDailySummary: string;
11
12
  };
@@ -38,6 +38,7 @@ exports.emailTemplates = {
38
38
  forgotPassword: "forgot-password.html",
39
39
  passwordResetSuccess: "password-reset-success.html",
40
40
  notificationImmediate: "notification-immediate.html",
41
+ notificationImmediateGrouped: "notification-immediate-grouped.html",
41
42
  notificationDailySummary: "notification-daily-summary.html",
42
43
  organizationDailySummary: "organization-daily-summary.html",
43
44
  };
@@ -0,0 +1,358 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>New Activity - Heliyos</title>
8
+ <style>
9
+ body {
10
+ font-family: Arial, sans-serif;
11
+ line-height: 1.6;
12
+ color: #0e0d0c;
13
+ background-color: #f8f8f6;
14
+ margin: 0;
15
+ padding: 0;
16
+ }
17
+
18
+ .container {
19
+ max-width: 600px;
20
+ margin: 20px auto;
21
+ background-color: #ffffff;
22
+ border: 2px solid #7c3aed;
23
+ border-radius: 12px;
24
+ overflow: hidden;
25
+ }
26
+
27
+ .header {
28
+ background-color: #7c3aed;
29
+ padding: 30px 20px;
30
+ text-align: center;
31
+ }
32
+
33
+ .header img {
34
+ max-width: 180px;
35
+ height: auto;
36
+ margin-bottom: 12px;
37
+ }
38
+
39
+ .header-title {
40
+ color: #ffffff;
41
+ font-size: 24px;
42
+ font-weight: bold;
43
+ margin: 10px 0 4px 0;
44
+ }
45
+
46
+ .header-date {
47
+ color: #ffffff;
48
+ opacity: 0.9;
49
+ font-size: 14px;
50
+ }
51
+
52
+ .content {
53
+ padding: 30px;
54
+ background-color: #ffffff;
55
+ }
56
+
57
+ .greeting {
58
+ font-size: 16px;
59
+ color: #0e0d0c;
60
+ margin-bottom: 20px;
61
+ }
62
+
63
+ .section {
64
+ margin: 20px 0;
65
+ padding: 0;
66
+ background-color: transparent;
67
+ border-radius: 0;
68
+ border-left: none;
69
+ }
70
+
71
+ .section-header {
72
+ margin-bottom: 12px;
73
+ padding-bottom: 8px;
74
+ border-bottom: 1px solid #e5e7eb;
75
+ }
76
+
77
+ .section-title {
78
+ font-size: 16px;
79
+ font-weight: bold;
80
+ color: #111827;
81
+ margin: 0;
82
+ }
83
+
84
+ .section-count {
85
+ background-color: #f3f0ff;
86
+ color: #7c3aed;
87
+ padding: 2px 8px;
88
+ border-radius: 4px;
89
+ font-size: 11px;
90
+ font-weight: bold;
91
+ }
92
+
93
+ .section-content {
94
+ color: #374151;
95
+ }
96
+
97
+ .item {
98
+ margin: 0;
99
+ padding: 12px 0;
100
+ background-color: transparent;
101
+ border-radius: 0;
102
+ border: none;
103
+ border-bottom: 1px solid #f3f4f6;
104
+ }
105
+
106
+ .item:last-child {
107
+ border-bottom: none;
108
+ }
109
+
110
+ .item-title {
111
+ font-weight: 600;
112
+ color: #111827;
113
+ font-size: 14px;
114
+ margin-bottom: 2px;
115
+ }
116
+
117
+ .item-meta {
118
+ font-size: 12px;
119
+ color: #6b7280;
120
+ }
121
+
122
+ .item-details {
123
+ margin-top: 8px;
124
+ background-color: #f9fafb;
125
+ border-radius: 6px;
126
+ padding: 8px 12px;
127
+ }
128
+
129
+ .detail-table {
130
+ width: 100%;
131
+ border-collapse: collapse;
132
+ }
133
+
134
+ .detail-cell {
135
+ padding-right: 12px;
136
+ vertical-align: top;
137
+ }
138
+
139
+ .detail-label {
140
+ font-size: 10px;
141
+ color: #6b7280;
142
+ text-transform: uppercase;
143
+ font-weight: bold;
144
+ }
145
+
146
+ .detail-value {
147
+ font-size: 12px;
148
+ color: #374151;
149
+ }
150
+
151
+ .footer {
152
+ background-color: #7c3aed;
153
+ padding: 20px;
154
+ text-align: center;
155
+ font-size: 12px;
156
+ color: #ffffff;
157
+ }
158
+
159
+ .footer a {
160
+ color: #ffffff;
161
+ text-decoration: none;
162
+ }
163
+
164
+ .divider {
165
+ height: 1px;
166
+ background-color: #ebe7db;
167
+ margin: 24px 0;
168
+ }
169
+ </style>
170
+ </head>
171
+
172
+ <body>
173
+ <div class="container">
174
+ <div class="header">
175
+ <img src="https://assets.heliyos.ai/heliyos-logo-white.png" alt="Heliyos AI">
176
+ <div class="header-title">New Activity</div>
177
+ <div class="header-date">{{date}}</div>
178
+ </div>
179
+ <div class="content">
180
+ <div class="greeting">
181
+ Hello,<br>
182
+ New activities have been recorded in your Heliyos workspace.
183
+ </div>
184
+
185
+ {{#if has_tasks}}
186
+ <div class="section">
187
+ <div class="section-header">
188
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
189
+ <tr>
190
+ <td style="vertical-align: middle; padding-right: 8px; width: 24px; font-size: 20px;">✓</td>
191
+ <td style="vertical-align: middle;"><h2 class="section-title">Tasks</h2></td>
192
+ <td style="vertical-align: middle; text-align: right;"><span class="section-count">{{tasks_count}}</span></td>
193
+ </tr>
194
+ </table>
195
+ </div>
196
+ <div class="section-content">
197
+ {{#each tasks}}
198
+ <div class="item">
199
+ <table style="width: 100%; border-collapse: collapse;">
200
+ <tr>
201
+ <td>
202
+ <div class="item-title">{{this.title}}</div>
203
+ <div class="item-meta">
204
+ <span style="color: #7c3aed; font-weight: 600;">{{this.type}}</span> • {{this.actor}}
205
+ </div>
206
+ </td>
207
+ <td style="text-align: right; vertical-align: top; font-size: 11px; color: #9ca3af;">
208
+ {{this.time}}
209
+ </td>
210
+ </tr>
211
+ </table>
212
+ {{#if this.details}}
213
+ <div class="item-details">
214
+ <table class="detail-table">
215
+ <tr>
216
+ {{#each this.details}}
217
+ <td class="detail-cell">
218
+ <div class="detail-label">{{this.label}}</div>
219
+ <div class="detail-value">{{this.value}}</div>
220
+ </td>
221
+ {{/each}}
222
+ </tr>
223
+ </table>
224
+ </div>
225
+ {{/if}}
226
+ {{#if this.view_url}}
227
+ <div style="margin-top: 6px;">
228
+ <a href="{{this.view_url}}" style="font-size: 11px; color: #7c3aed; text-decoration: none; font-weight: bold;">View Details →</a>
229
+ </div>
230
+ {{/if}}
231
+ </div>
232
+ {{/each}}
233
+ </div>
234
+ </div>
235
+ {{/if}}
236
+
237
+ {{#if has_deals}}
238
+ <div class="section">
239
+ <div class="section-header">
240
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
241
+ <tr>
242
+ <td style="vertical-align: middle; padding-right: 8px; width: 24px; font-size: 20px;">💰</td>
243
+ <td style="vertical-align: middle;"><h2 class="section-title">Deals</h2></td>
244
+ <td style="vertical-align: middle; text-align: right;"><span class="section-count">{{deals_count}}</span></td>
245
+ </tr>
246
+ </table>
247
+ </div>
248
+ <div class="section-content">
249
+ {{#each deals}}
250
+ <div class="item">
251
+ <table style="width: 100%; border-collapse: collapse;">
252
+ <tr>
253
+ <td>
254
+ <div class="item-title">{{this.title}}</div>
255
+ <div class="item-meta">
256
+ <span style="color: #7c3aed; font-weight: 600;">{{this.type}}</span> • {{this.actor}}
257
+ </div>
258
+ </td>
259
+ <td style="text-align: right; vertical-align: top; font-size: 11px; color: #9ca3af;">
260
+ {{this.time}}
261
+ </td>
262
+ </tr>
263
+ </table>
264
+ {{#if this.details}}
265
+ <div class="item-details">
266
+ <table class="detail-table">
267
+ <tr>
268
+ {{#each this.details}}
269
+ <td class="detail-cell">
270
+ <div class="detail-label">{{this.label}}</div>
271
+ <div class="detail-value">{{this.value}}</div>
272
+ </td>
273
+ {{/each}}
274
+ </tr>
275
+ </table>
276
+ </div>
277
+ {{/if}}
278
+ {{#if this.view_url}}
279
+ <div style="margin-top: 6px;">
280
+ <a href="{{this.view_url}}" style="font-size: 11px; color: #7c3aed; text-decoration: none; font-weight: bold;">View Details →</a>
281
+ </div>
282
+ {{/if}}
283
+ </div>
284
+ {{/each}}
285
+ </div>
286
+ </div>
287
+ {{/if}}
288
+
289
+ {{#if has_approvals}}
290
+ <div class="section">
291
+ <div class="section-header">
292
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
293
+ <tr>
294
+ <td style="vertical-align: middle; padding-right: 8px; width: 24px; font-size: 20px;">✔️</td>
295
+ <td style="vertical-align: middle;"><h2 class="section-title">Reviews</h2></td>
296
+ <td style="vertical-align: middle; text-align: right;"><span class="section-count">{{approvals_count}}</span></td>
297
+ </tr>
298
+ </table>
299
+ </div>
300
+ <div class="section-content">
301
+ {{#each approvals}}
302
+ <div class="item">
303
+ <table style="width: 100%; border-collapse: collapse;">
304
+ <tr>
305
+ <td>
306
+ <div class="item-title">{{this.title}}</div>
307
+ <div class="item-meta">
308
+ <span style="color: #7c3aed; font-weight: 600;">{{this.status}}</span> • {{this.actor}}
309
+ </div>
310
+ </td>
311
+ <td style="text-align: right; vertical-align: top; font-size: 11px; color: #9ca3af;">
312
+ {{this.time}}
313
+ </td>
314
+ </tr>
315
+ </table>
316
+ {{#if this.details}}
317
+ <div class="item-details">
318
+ <table class="detail-table">
319
+ <tr>
320
+ {{#each this.details}}
321
+ <td class="detail-cell">
322
+ <div class="detail-label">{{this.label}}</div>
323
+ <div class="detail-value">{{this.value}}</div>
324
+ </td>
325
+ {{/each}}
326
+ </tr>
327
+ </table>
328
+ </div>
329
+ {{/if}}
330
+ {{#if this.view_url}}
331
+ <div style="margin-top: 6px;">
332
+ <a href="{{this.view_url}}" style="font-size: 11px; color: #7c3aed; text-decoration: none; font-weight: bold;">View Details →</a>
333
+ </div>
334
+ {{/if}}
335
+ </div>
336
+ {{/each}}
337
+ </div>
338
+ </div>
339
+ {{/if}}
340
+
341
+ <div class="divider"></div>
342
+
343
+ <p style="text-align: center; color: #5c5545; font-size: 14px;">
344
+ You received this email because you have immediate notifications enabled for these activities.<br>
345
+ <a href="{{settings_url}}" style="color: #7c3aed;">Manage your notification preferences</a>
346
+ </p>
347
+ </div>
348
+ <div class="footer">
349
+ <p>© {{year}} {{company_name}}. All rights reserved.</p>
350
+ <p>
351
+ <a href="{{settings_url}}">Notification Settings</a> |
352
+ This is an automated message, please do not reply.
353
+ </p>
354
+ </div>
355
+ </div>
356
+ </body>
357
+
358
+ </html>
@@ -65,6 +65,17 @@
65
65
  font-weight: bold;
66
66
  color: #111827;
67
67
  margin: 0 0 12px 0;
68
+ word-break: break-word;
69
+ overflow-wrap: anywhere;
70
+ }
71
+
72
+ .event-summary {
73
+ margin: 0 0 12px 0;
74
+ font-size: 14px;
75
+ color: #374151;
76
+ line-height: 1.55;
77
+ word-break: break-word;
78
+ overflow-wrap: anywhere;
68
79
  }
69
80
 
70
81
  .event-details {
@@ -77,6 +88,7 @@
77
88
  .detail-table {
78
89
  width: 100%;
79
90
  border-collapse: collapse;
91
+ table-layout: fixed;
80
92
  }
81
93
 
82
94
  .detail-label {
@@ -90,6 +102,8 @@
90
102
  .detail-value {
91
103
  font-size: 13px;
92
104
  color: #111827;
105
+ word-break: break-word;
106
+ overflow-wrap: anywhere;
93
107
  }
94
108
 
95
109
  .detail-cell {
@@ -157,6 +171,9 @@
157
171
  <div class="event-card">
158
172
  <div class="event-badge">{{event_type_label}}</div>
159
173
  <div class="event-title">{{{object_name}}}</div>
174
+ {{#if summary}}
175
+ <div class="event-summary">{{{summary}}}</div>
176
+ {{/if}}
160
177
  {{#if details}}
161
178
  <div class="event-details">
162
179
  <table class="detail-table">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heliyos/heliyos-api-core",
3
- "version": "1.0.65",
3
+ "version": "1.0.67",
4
4
  "description": "Heliyos's core api functions and middlewares. Its a private package hosted on npm.",
5
5
  "main": "./dist/index.js",
6
6
  "scripts": {
@@ -10,6 +10,7 @@ export const emailTemplates = {
10
10
  forgotPassword: "forgot-password.html",
11
11
  passwordResetSuccess: "password-reset-success.html",
12
12
  notificationImmediate: "notification-immediate.html",
13
+ notificationImmediateGrouped: "notification-immediate-grouped.html",
13
14
  notificationDailySummary: "notification-daily-summary.html",
14
15
  organizationDailySummary: "organization-daily-summary.html",
15
16
  };
@@ -0,0 +1,358 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>New Activity - Heliyos</title>
8
+ <style>
9
+ body {
10
+ font-family: Arial, sans-serif;
11
+ line-height: 1.6;
12
+ color: #0e0d0c;
13
+ background-color: #f8f8f6;
14
+ margin: 0;
15
+ padding: 0;
16
+ }
17
+
18
+ .container {
19
+ max-width: 600px;
20
+ margin: 20px auto;
21
+ background-color: #ffffff;
22
+ border: 2px solid #7c3aed;
23
+ border-radius: 12px;
24
+ overflow: hidden;
25
+ }
26
+
27
+ .header {
28
+ background-color: #7c3aed;
29
+ padding: 30px 20px;
30
+ text-align: center;
31
+ }
32
+
33
+ .header img {
34
+ max-width: 180px;
35
+ height: auto;
36
+ margin-bottom: 12px;
37
+ }
38
+
39
+ .header-title {
40
+ color: #ffffff;
41
+ font-size: 24px;
42
+ font-weight: bold;
43
+ margin: 10px 0 4px 0;
44
+ }
45
+
46
+ .header-date {
47
+ color: #ffffff;
48
+ opacity: 0.9;
49
+ font-size: 14px;
50
+ }
51
+
52
+ .content {
53
+ padding: 30px;
54
+ background-color: #ffffff;
55
+ }
56
+
57
+ .greeting {
58
+ font-size: 16px;
59
+ color: #0e0d0c;
60
+ margin-bottom: 20px;
61
+ }
62
+
63
+ .section {
64
+ margin: 20px 0;
65
+ padding: 0;
66
+ background-color: transparent;
67
+ border-radius: 0;
68
+ border-left: none;
69
+ }
70
+
71
+ .section-header {
72
+ margin-bottom: 12px;
73
+ padding-bottom: 8px;
74
+ border-bottom: 1px solid #e5e7eb;
75
+ }
76
+
77
+ .section-title {
78
+ font-size: 16px;
79
+ font-weight: bold;
80
+ color: #111827;
81
+ margin: 0;
82
+ }
83
+
84
+ .section-count {
85
+ background-color: #f3f0ff;
86
+ color: #7c3aed;
87
+ padding: 2px 8px;
88
+ border-radius: 4px;
89
+ font-size: 11px;
90
+ font-weight: bold;
91
+ }
92
+
93
+ .section-content {
94
+ color: #374151;
95
+ }
96
+
97
+ .item {
98
+ margin: 0;
99
+ padding: 12px 0;
100
+ background-color: transparent;
101
+ border-radius: 0;
102
+ border: none;
103
+ border-bottom: 1px solid #f3f4f6;
104
+ }
105
+
106
+ .item:last-child {
107
+ border-bottom: none;
108
+ }
109
+
110
+ .item-title {
111
+ font-weight: 600;
112
+ color: #111827;
113
+ font-size: 14px;
114
+ margin-bottom: 2px;
115
+ }
116
+
117
+ .item-meta {
118
+ font-size: 12px;
119
+ color: #6b7280;
120
+ }
121
+
122
+ .item-details {
123
+ margin-top: 8px;
124
+ background-color: #f9fafb;
125
+ border-radius: 6px;
126
+ padding: 8px 12px;
127
+ }
128
+
129
+ .detail-table {
130
+ width: 100%;
131
+ border-collapse: collapse;
132
+ }
133
+
134
+ .detail-cell {
135
+ padding-right: 12px;
136
+ vertical-align: top;
137
+ }
138
+
139
+ .detail-label {
140
+ font-size: 10px;
141
+ color: #6b7280;
142
+ text-transform: uppercase;
143
+ font-weight: bold;
144
+ }
145
+
146
+ .detail-value {
147
+ font-size: 12px;
148
+ color: #374151;
149
+ }
150
+
151
+ .footer {
152
+ background-color: #7c3aed;
153
+ padding: 20px;
154
+ text-align: center;
155
+ font-size: 12px;
156
+ color: #ffffff;
157
+ }
158
+
159
+ .footer a {
160
+ color: #ffffff;
161
+ text-decoration: none;
162
+ }
163
+
164
+ .divider {
165
+ height: 1px;
166
+ background-color: #ebe7db;
167
+ margin: 24px 0;
168
+ }
169
+ </style>
170
+ </head>
171
+
172
+ <body>
173
+ <div class="container">
174
+ <div class="header">
175
+ <img src="https://assets.heliyos.ai/heliyos-logo-white.png" alt="Heliyos AI">
176
+ <div class="header-title">New Activity</div>
177
+ <div class="header-date">{{date}}</div>
178
+ </div>
179
+ <div class="content">
180
+ <div class="greeting">
181
+ Hello,<br>
182
+ New activities have been recorded in your Heliyos workspace.
183
+ </div>
184
+
185
+ {{#if has_tasks}}
186
+ <div class="section">
187
+ <div class="section-header">
188
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
189
+ <tr>
190
+ <td style="vertical-align: middle; padding-right: 8px; width: 24px; font-size: 20px;">✓</td>
191
+ <td style="vertical-align: middle;"><h2 class="section-title">Tasks</h2></td>
192
+ <td style="vertical-align: middle; text-align: right;"><span class="section-count">{{tasks_count}}</span></td>
193
+ </tr>
194
+ </table>
195
+ </div>
196
+ <div class="section-content">
197
+ {{#each tasks}}
198
+ <div class="item">
199
+ <table style="width: 100%; border-collapse: collapse;">
200
+ <tr>
201
+ <td>
202
+ <div class="item-title">{{this.title}}</div>
203
+ <div class="item-meta">
204
+ <span style="color: #7c3aed; font-weight: 600;">{{this.type}}</span> • {{this.actor}}
205
+ </div>
206
+ </td>
207
+ <td style="text-align: right; vertical-align: top; font-size: 11px; color: #9ca3af;">
208
+ {{this.time}}
209
+ </td>
210
+ </tr>
211
+ </table>
212
+ {{#if this.details}}
213
+ <div class="item-details">
214
+ <table class="detail-table">
215
+ <tr>
216
+ {{#each this.details}}
217
+ <td class="detail-cell">
218
+ <div class="detail-label">{{this.label}}</div>
219
+ <div class="detail-value">{{this.value}}</div>
220
+ </td>
221
+ {{/each}}
222
+ </tr>
223
+ </table>
224
+ </div>
225
+ {{/if}}
226
+ {{#if this.view_url}}
227
+ <div style="margin-top: 6px;">
228
+ <a href="{{this.view_url}}" style="font-size: 11px; color: #7c3aed; text-decoration: none; font-weight: bold;">View Details →</a>
229
+ </div>
230
+ {{/if}}
231
+ </div>
232
+ {{/each}}
233
+ </div>
234
+ </div>
235
+ {{/if}}
236
+
237
+ {{#if has_deals}}
238
+ <div class="section">
239
+ <div class="section-header">
240
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
241
+ <tr>
242
+ <td style="vertical-align: middle; padding-right: 8px; width: 24px; font-size: 20px;">💰</td>
243
+ <td style="vertical-align: middle;"><h2 class="section-title">Deals</h2></td>
244
+ <td style="vertical-align: middle; text-align: right;"><span class="section-count">{{deals_count}}</span></td>
245
+ </tr>
246
+ </table>
247
+ </div>
248
+ <div class="section-content">
249
+ {{#each deals}}
250
+ <div class="item">
251
+ <table style="width: 100%; border-collapse: collapse;">
252
+ <tr>
253
+ <td>
254
+ <div class="item-title">{{this.title}}</div>
255
+ <div class="item-meta">
256
+ <span style="color: #7c3aed; font-weight: 600;">{{this.type}}</span> • {{this.actor}}
257
+ </div>
258
+ </td>
259
+ <td style="text-align: right; vertical-align: top; font-size: 11px; color: #9ca3af;">
260
+ {{this.time}}
261
+ </td>
262
+ </tr>
263
+ </table>
264
+ {{#if this.details}}
265
+ <div class="item-details">
266
+ <table class="detail-table">
267
+ <tr>
268
+ {{#each this.details}}
269
+ <td class="detail-cell">
270
+ <div class="detail-label">{{this.label}}</div>
271
+ <div class="detail-value">{{this.value}}</div>
272
+ </td>
273
+ {{/each}}
274
+ </tr>
275
+ </table>
276
+ </div>
277
+ {{/if}}
278
+ {{#if this.view_url}}
279
+ <div style="margin-top: 6px;">
280
+ <a href="{{this.view_url}}" style="font-size: 11px; color: #7c3aed; text-decoration: none; font-weight: bold;">View Details →</a>
281
+ </div>
282
+ {{/if}}
283
+ </div>
284
+ {{/each}}
285
+ </div>
286
+ </div>
287
+ {{/if}}
288
+
289
+ {{#if has_approvals}}
290
+ <div class="section">
291
+ <div class="section-header">
292
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
293
+ <tr>
294
+ <td style="vertical-align: middle; padding-right: 8px; width: 24px; font-size: 20px;">✔️</td>
295
+ <td style="vertical-align: middle;"><h2 class="section-title">Reviews</h2></td>
296
+ <td style="vertical-align: middle; text-align: right;"><span class="section-count">{{approvals_count}}</span></td>
297
+ </tr>
298
+ </table>
299
+ </div>
300
+ <div class="section-content">
301
+ {{#each approvals}}
302
+ <div class="item">
303
+ <table style="width: 100%; border-collapse: collapse;">
304
+ <tr>
305
+ <td>
306
+ <div class="item-title">{{this.title}}</div>
307
+ <div class="item-meta">
308
+ <span style="color: #7c3aed; font-weight: 600;">{{this.status}}</span> • {{this.actor}}
309
+ </div>
310
+ </td>
311
+ <td style="text-align: right; vertical-align: top; font-size: 11px; color: #9ca3af;">
312
+ {{this.time}}
313
+ </td>
314
+ </tr>
315
+ </table>
316
+ {{#if this.details}}
317
+ <div class="item-details">
318
+ <table class="detail-table">
319
+ <tr>
320
+ {{#each this.details}}
321
+ <td class="detail-cell">
322
+ <div class="detail-label">{{this.label}}</div>
323
+ <div class="detail-value">{{this.value}}</div>
324
+ </td>
325
+ {{/each}}
326
+ </tr>
327
+ </table>
328
+ </div>
329
+ {{/if}}
330
+ {{#if this.view_url}}
331
+ <div style="margin-top: 6px;">
332
+ <a href="{{this.view_url}}" style="font-size: 11px; color: #7c3aed; text-decoration: none; font-weight: bold;">View Details →</a>
333
+ </div>
334
+ {{/if}}
335
+ </div>
336
+ {{/each}}
337
+ </div>
338
+ </div>
339
+ {{/if}}
340
+
341
+ <div class="divider"></div>
342
+
343
+ <p style="text-align: center; color: #5c5545; font-size: 14px;">
344
+ You received this email because you have immediate notifications enabled for these activities.<br>
345
+ <a href="{{settings_url}}" style="color: #7c3aed;">Manage your notification preferences</a>
346
+ </p>
347
+ </div>
348
+ <div class="footer">
349
+ <p>© {{year}} {{company_name}}. All rights reserved.</p>
350
+ <p>
351
+ <a href="{{settings_url}}">Notification Settings</a> |
352
+ This is an automated message, please do not reply.
353
+ </p>
354
+ </div>
355
+ </div>
356
+ </body>
357
+
358
+ </html>
@@ -65,6 +65,17 @@
65
65
  font-weight: bold;
66
66
  color: #111827;
67
67
  margin: 0 0 12px 0;
68
+ word-break: break-word;
69
+ overflow-wrap: anywhere;
70
+ }
71
+
72
+ .event-summary {
73
+ margin: 0 0 12px 0;
74
+ font-size: 14px;
75
+ color: #374151;
76
+ line-height: 1.55;
77
+ word-break: break-word;
78
+ overflow-wrap: anywhere;
68
79
  }
69
80
 
70
81
  .event-details {
@@ -77,6 +88,7 @@
77
88
  .detail-table {
78
89
  width: 100%;
79
90
  border-collapse: collapse;
91
+ table-layout: fixed;
80
92
  }
81
93
 
82
94
  .detail-label {
@@ -90,6 +102,8 @@
90
102
  .detail-value {
91
103
  font-size: 13px;
92
104
  color: #111827;
105
+ word-break: break-word;
106
+ overflow-wrap: anywhere;
93
107
  }
94
108
 
95
109
  .detail-cell {
@@ -157,6 +171,9 @@
157
171
  <div class="event-card">
158
172
  <div class="event-badge">{{event_type_label}}</div>
159
173
  <div class="event-title">{{{object_name}}}</div>
174
+ {{#if summary}}
175
+ <div class="event-summary">{{{summary}}}</div>
176
+ {{/if}}
160
177
  {{#if details}}
161
178
  <div class="event-details">
162
179
  <table class="detail-table">