@jhits/plugin-newsletter 0.0.8 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/data/locales/en/common.json +12 -0
  2. package/data/locales/nl/common.json +12 -0
  3. package/data/locales/sv/common.json +12 -0
  4. package/dist/api/email-utils.d.ts +6 -0
  5. package/dist/api/email-utils.d.ts.map +1 -0
  6. package/dist/api/email-utils.js +134 -0
  7. package/dist/api/handler.d.ts +2 -47
  8. package/dist/api/handler.d.ts.map +1 -1
  9. package/dist/api/handler.js +2 -523
  10. package/dist/api/handlers/index.d.ts +12 -0
  11. package/dist/api/handlers/index.d.ts.map +1 -0
  12. package/dist/api/handlers/index.js +11 -0
  13. package/dist/api/handlers/newsletters.d.ts +11 -0
  14. package/dist/api/handlers/newsletters.d.ts.map +1 -0
  15. package/dist/api/handlers/newsletters.js +250 -0
  16. package/dist/api/handlers/send-newsletter.d.ts +8 -0
  17. package/dist/api/handlers/send-newsletter.d.ts.map +1 -0
  18. package/dist/api/handlers/send-newsletter.js +206 -0
  19. package/dist/api/handlers/settings.d.ts +11 -0
  20. package/dist/api/handlers/settings.d.ts.map +1 -0
  21. package/dist/api/handlers/settings.js +304 -0
  22. package/dist/api/handlers/subscribers.d.ts +10 -0
  23. package/dist/api/handlers/subscribers.d.ts.map +1 -0
  24. package/dist/api/handlers/subscribers.js +96 -0
  25. package/dist/api/handlers/upload.d.ts +7 -0
  26. package/dist/api/handlers/upload.d.ts.map +1 -0
  27. package/dist/api/handlers/upload.js +32 -0
  28. package/dist/api/handlers/welcome-email.d.ts +13 -0
  29. package/dist/api/handlers/welcome-email.d.ts.map +1 -0
  30. package/dist/api/handlers/welcome-email.js +142 -0
  31. package/dist/api/router.d.ts.map +1 -1
  32. package/dist/api/router.js +45 -6
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +42 -16
  35. package/dist/lib/email/EmailRenderer.d.ts.map +1 -1
  36. package/dist/lib/email/EmailRenderer.js +3 -7
  37. package/dist/lib/i18n.d.ts +16 -0
  38. package/dist/lib/i18n.d.ts.map +1 -0
  39. package/dist/lib/i18n.js +60 -0
  40. package/dist/state/EditorContext.d.ts +3 -1
  41. package/dist/state/EditorContext.d.ts.map +1 -1
  42. package/dist/state/EditorContext.js +1 -5
  43. package/dist/state/reducer.js +5 -5
  44. package/dist/types/newsletter.d.ts +1 -0
  45. package/dist/types/newsletter.d.ts.map +1 -1
  46. package/dist/views/CanvasEditor/CanvasEditorView.d.ts +4 -2
  47. package/dist/views/CanvasEditor/CanvasEditorView.d.ts.map +1 -1
  48. package/dist/views/CanvasEditor/CanvasEditorView.js +73 -10
  49. package/dist/views/CanvasEditor/EditorHeader.d.ts +6 -1
  50. package/dist/views/CanvasEditor/EditorHeader.d.ts.map +1 -1
  51. package/dist/views/CanvasEditor/EditorHeader.js +66 -11
  52. package/dist/views/CanvasEditor/components/EditorSidebar.d.ts +6 -2
  53. package/dist/views/CanvasEditor/components/EditorSidebar.d.ts.map +1 -1
  54. package/dist/views/CanvasEditor/components/EditorSidebar.js +3 -3
  55. package/dist/views/CanvasEditor/hooks/useNewsletterLoader.d.ts +1 -1
  56. package/dist/views/CanvasEditor/hooks/useNewsletterLoader.d.ts.map +1 -1
  57. package/dist/views/CanvasEditor/hooks/useNewsletterLoader.js +41 -5
  58. package/dist/views/NewsletterEditor.d.ts +4 -2
  59. package/dist/views/NewsletterEditor.d.ts.map +1 -1
  60. package/dist/views/NewsletterEditor.js +2 -2
  61. package/dist/views/NewsletterManager.d.ts.map +1 -1
  62. package/dist/views/NewsletterManager.js +137 -8
  63. package/dist/views/components/SendNewsletterModal.d.ts +18 -0
  64. package/dist/views/components/SendNewsletterModal.d.ts.map +1 -0
  65. package/dist/views/components/SendNewsletterModal.js +107 -0
  66. package/dist/views/components/SmtpSettingsModal.d.ts +10 -0
  67. package/dist/views/components/SmtpSettingsModal.d.ts.map +1 -0
  68. package/dist/views/components/SmtpSettingsModal.js +145 -0
  69. package/dist/views/components/TestEmailModal.d.ts +10 -0
  70. package/dist/views/components/TestEmailModal.d.ts.map +1 -0
  71. package/dist/views/components/TestEmailModal.js +99 -0
  72. package/package.json +20 -9
  73. package/templates/logo.png +0 -0
  74. package/templates/test-email.hbs +221 -0
  75. package/templates/welcome-email-legacy.hbs +35 -0
@@ -0,0 +1,221 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <style>
7
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap');
8
+
9
+ body {
10
+ background-color: #fafaf9;
11
+ margin: 0;
12
+ padding: 0;
13
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
14
+ }
15
+
16
+ .container {
17
+ max-width: 520px;
18
+ margin: 40px auto;
19
+ background-color: #ffffff;
20
+ border-radius: 24px;
21
+ border: 1px solid #e5e5e5;
22
+ overflow: hidden;
23
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
24
+ }
25
+
26
+ .header {
27
+ padding: 32px 40px 28px 40px;
28
+ text-align: center;
29
+ background: linear-gradient(135deg, #5b21b6 0%, #7c3aed 100%);
30
+ }
31
+
32
+ .logo-container {
33
+ display: inline-flex;
34
+ align-items: center;
35
+ }
36
+
37
+ .logo-frame {
38
+ width: 66px;
39
+ height: 66px;
40
+ background: rgba(255, 255, 255, 0.15);
41
+ border: 1px solid rgba(255, 255, 255, 0.3);
42
+ border-radius: 14px;
43
+ display: flex;
44
+ align-items: center;
45
+ justify-content: center;
46
+ }
47
+
48
+ .logo-img {
49
+ width: 66px;
50
+ height: 66px;
51
+ }
52
+
53
+ .logo-text {
54
+ text-align: left;
55
+ margin-left: 12px;
56
+ }
57
+
58
+ .logo-jhits {
59
+ font-size: 36px;
60
+ font-weight: 700;
61
+ color: white;
62
+ line-height: 1;
63
+ letter-spacing: 0.02em;
64
+ }
65
+
66
+ .logo-sub {
67
+ display: flex;
68
+ align-items: center;
69
+ gap: 8px;
70
+ margin-top: 6px;
71
+ }
72
+
73
+ .logo-platform {
74
+ font-size: 10px;
75
+ font-weight: 700;
76
+ letter-spacing: 0.35em;
77
+ color: rgba(255, 255, 255, 0.6);
78
+ text-transform: uppercase;
79
+ }
80
+
81
+ .logo-v2 {
82
+ font-size: 10px;
83
+ font-weight: 700;
84
+ font-style: italic;
85
+ color: #c4b5fd;
86
+ text-transform: uppercase;
87
+ }
88
+
89
+ .content {
90
+ padding: 32px 40px 40px 40px;
91
+ color: #18181b;
92
+ line-height: 1.6;
93
+ font-size: 14px;
94
+ }
95
+
96
+ .footer {
97
+ padding: 24px 40px;
98
+ text-align: center;
99
+ font-size: 11px;
100
+ color: #71717a;
101
+ border-top: 1px solid #f4f4f5;
102
+ background-color: #fafaf9;
103
+ }
104
+
105
+ h1 {
106
+ font-weight: 800;
107
+ font-size: 24px;
108
+ margin-bottom: 20px;
109
+ color: #18181b;
110
+ text-align: center;
111
+ letter-spacing: -0.025em;
112
+ }
113
+
114
+ .highlight {
115
+ background: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 100%);
116
+ border: 1px solid #22c55e;
117
+ border-radius: 12px;
118
+ padding: 20px;
119
+ margin: 24px 0;
120
+ text-align: center;
121
+ }
122
+
123
+ .highlight-icon {
124
+ font-size: 32px;
125
+ margin-bottom: 8px;
126
+ }
127
+
128
+ .highlight-text {
129
+ font-size: 14px;
130
+ color: #166534;
131
+ font-weight: 600;
132
+ }
133
+
134
+ .badge {
135
+ display: inline-block;
136
+ background: linear-gradient(135deg, #5b21b6 0%, #7c3aed 100%);
137
+ color: white;
138
+ font-size: 10px;
139
+ font-weight: 800;
140
+ text-transform: uppercase;
141
+ letter-spacing: 0.1em;
142
+ padding: 6px 12px;
143
+ border-radius: 6px;
144
+ margin-bottom: 20px;
145
+ }
146
+
147
+ .recipient {
148
+ background-color: #f4f4f5;
149
+ padding: 8px 16px;
150
+ border-radius: 8px;
151
+ font-family: monospace;
152
+ font-size: 13px;
153
+ color: #5b21b6;
154
+ }
155
+
156
+ .divider {
157
+ height: 1px;
158
+ background: linear-gradient(to right, transparent, #e5e5e5, transparent);
159
+ margin: 24px 0;
160
+ }
161
+ </style>
162
+ </head>
163
+
164
+ <body>
165
+ <div class="container">
166
+ <div class="header">
167
+ <div class="logo-container">
168
+ <div class="logo-frame">
169
+ <img src="cid:logo" alt="JHITS" class="logo-img">
170
+ </div>
171
+ <div class="logo-text">
172
+ <div class="logo-jhits">JHITS</div>
173
+ <div class="logo-sub">
174
+ <span class="logo-platform">Platform</span>
175
+ <span class="logo-v2">V2</span>
176
+ </div>
177
+ </div>
178
+ </div>
179
+ </div>
180
+ <div class="content">
181
+ <div style="text-align: center;">
182
+ <span class="badge">Test Email</span>
183
+ </div>
184
+
185
+ <h1>{{title}}</h1>
186
+
187
+ <p>{{greeting}}</p>
188
+
189
+ <p>{{description}}</p>
190
+
191
+ <div class="highlight">
192
+ <div class="highlight-icon">✓</div>
193
+ <div class="highlight-text">
194
+ {{successTitle}} {{successMessage}}
195
+ </div>
196
+ </div>
197
+
198
+ <p>{{recipientLabel}}</p>
199
+ <div style="text-align: center;">
200
+ <span class="recipient">{{recipientEmail}}</span>
201
+ </div>
202
+
203
+ <div class="divider"></div>
204
+
205
+ <p style="text-align: center; font-size: 12px; color: #71717a;">
206
+ {{footerText}}<br />
207
+ <strong>{{fromName}}</strong>
208
+ </p>
209
+
210
+ <p style="text-align: center; font-size: 11px; color: #a1a1aa; margin-top: 20px;">
211
+ {{ignoreText}}
212
+ </p>
213
+ </div>
214
+ <div class="footer">
215
+ © {{currentYear}} {{fromName}}. All rights reserved.<br />
216
+ <span style="color: #5b21b6; font-weight: 600;">Powered by JHITS</span>
217
+ </div>
218
+ </div>
219
+ </body>
220
+
221
+ </html>
@@ -0,0 +1,35 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <style>
6
+ body { background-color: #faf9f6; margin: 0; padding: 0; font-family: 'Georgia', serif; }
7
+ .container { max-width: 600px; margin: 20px auto; background-color: #ffffff; border-radius: 40px; border: 1px solid #1a2e260d; overflow: hidden; }
8
+ .header { padding: 40px 0 20px 0; text-align: center; }
9
+ .logo { width: 180px; height: auto; }
10
+ .content { padding: 0 50px 40px 50px; color: #1a2e26; line-height: 1.8; font-size: 15px; }
11
+ .footer { padding: 40px 50px; text-align: center; font-family: sans-serif; font-size: 10px; color: #a1a1aa; letter-spacing: 1px; border-top: 1px solid #faf9f6; }
12
+ h1 { font-weight: normal; font-style: italic; font-size: 30px; margin-bottom: 30px; color: #1a2e26; text-align: center; }
13
+ .divider { height: 1px; width: 40px; background-color: #1a2e2620; margin: 30px auto; }
14
+ </style>
15
+ </head>
16
+ <body>
17
+ <div class="container">
18
+ <div class="header">
19
+ <img src="cid:botanics-logo" alt="{{fromName}}" class="logo">
20
+ </div>
21
+ <div class="content">
22
+ <h1>{{title}}</h1>
23
+ <div class="divider"></div>
24
+ <div>{{{message}}}</div>
25
+ </div>
26
+ <div class="footer">
27
+ <strong>{{fromName}}</strong> &copy; {{currentYear}}<br/>
28
+ {{tagline}}<br/><br/>
29
+ <a href="{{unsubscribeUrl}}" style="color: #a1a1aa; text-decoration: underline;">
30
+ {{unsubscribeText}}
31
+ </a>
32
+ </div>
33
+ </div>
34
+ </body>
35
+ </html>