@plutonhq/core-backend 0.1.0 → 0.1.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 (49) hide show
  1. package/dist/createApp.js +1 -1
  2. package/dist/createApp.js.map +1 -1
  3. package/dist/notifications/BackupNotification.d.ts +2 -0
  4. package/dist/notifications/BackupNotification.d.ts.map +1 -1
  5. package/dist/notifications/BackupNotification.js +1 -1
  6. package/dist/notifications/BackupNotification.js.map +1 -1
  7. package/dist/notifications/BaseNotification.d.ts.map +1 -1
  8. package/dist/notifications/BaseNotification.js +1 -1
  9. package/dist/notifications/BaseNotification.js.map +1 -1
  10. package/dist/notifications/channels/NotificationChannelResolver.d.ts +2 -2
  11. package/dist/notifications/channels/NotificationChannelResolver.d.ts.map +1 -1
  12. package/dist/notifications/channels/NotificationChannelResolver.js +1 -1
  13. package/dist/notifications/channels/NotificationChannelResolver.js.map +1 -1
  14. package/dist/notifications/channels/SMTPChannel.js.map +1 -1
  15. package/dist/notifications/templateLoader.d.ts +15 -0
  16. package/dist/notifications/templateLoader.d.ts.map +1 -0
  17. package/dist/notifications/templateLoader.js +1 -0
  18. package/dist/notifications/templateLoader.js.map +1 -0
  19. package/dist/notifications/templates/email/backup/BackupFailedNotification.d.ts.map +1 -1
  20. package/dist/notifications/templates/email/backup/BackupFailedNotification.ejs +109 -0
  21. package/dist/notifications/templates/email/backup/BackupFailedNotification.js +1 -1
  22. package/dist/notifications/templates/email/backup/BackupFailedNotification.js.map +1 -1
  23. package/dist/notifications/templates/email/backup/BackupFailedNotification.ts +110 -0
  24. package/dist/notifications/templates/email/backup/BackupStartedNotification.d.ts.map +1 -1
  25. package/dist/notifications/templates/email/backup/BackupStartedNotification.ejs +159 -0
  26. package/dist/notifications/templates/email/backup/BackupStartedNotification.js +1 -1
  27. package/dist/notifications/templates/email/backup/BackupStartedNotification.js.map +1 -1
  28. package/dist/notifications/templates/email/backup/BackupStartedNotification.ts +87 -0
  29. package/dist/notifications/templates/email/backup/BackupSuccessNotification.d.ts.map +1 -1
  30. package/dist/notifications/templates/email/backup/BackupSuccessNotification.ejs +163 -0
  31. package/dist/notifications/templates/email/backup/BackupSuccessNotification.js +1 -1
  32. package/dist/notifications/templates/email/backup/BackupSuccessNotification.js.map +1 -1
  33. package/dist/notifications/templates/email/backup/BackupSuccessNotification.ts +97 -0
  34. package/dist/notifications/templates/email/email.html +801 -0
  35. package/dist/notifications/templates/email/test-email/TestEmailNotification.ts +27 -0
  36. package/dist/services/SettingsService.d.ts +2 -0
  37. package/dist/services/SettingsService.d.ts.map +1 -1
  38. package/dist/services/SettingsService.js +1 -1
  39. package/dist/services/SettingsService.js.map +1 -1
  40. package/dist/stores/PlanStore.d.ts.map +1 -1
  41. package/dist/stores/PlanStore.js +1 -1
  42. package/dist/stores/PlanStore.js.map +1 -1
  43. package/dist/stores/SettingsStore.d.ts +3 -1
  44. package/dist/stores/SettingsStore.d.ts.map +1 -1
  45. package/dist/stores/SettingsStore.js +1 -1
  46. package/dist/stores/SettingsStore.js.map +1 -1
  47. package/dist/types/notifications.d.ts +11 -0
  48. package/dist/types/notifications.d.ts.map +1 -1
  49. package/package.json +4 -3
@@ -0,0 +1,801 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
5
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6
+ <title>Pluton Notification Email</title>
7
+ <style>
8
+ /* -------------------------------------
9
+ GLOBAL RESETS
10
+ ------------------------------------- */
11
+
12
+ /*All the styling goes here*/
13
+
14
+ img {
15
+ border: none;
16
+ -ms-interpolation-mode: bicubic;
17
+ max-width: 100%;
18
+ }
19
+
20
+ body {
21
+ background-color: #edeffb;
22
+ font-family: sans-serif;
23
+ -webkit-font-smoothing: antialiased;
24
+ font-size: 13px;
25
+ line-height: 1.4;
26
+ margin: 0;
27
+ padding: 0;
28
+ -ms-text-size-adjust: 100%;
29
+ -webkit-text-size-adjust: 100%;
30
+ }
31
+
32
+ table {
33
+ border-collapse: separate;
34
+ width: 100%;
35
+ }
36
+ table td {
37
+ font-family: sans-serif;
38
+ font-size: 12px;
39
+ vertical-align: top;
40
+ }
41
+
42
+ /* -------------------------------------
43
+ BODY & CONTAINER
44
+ ------------------------------------- */
45
+
46
+ .body {
47
+ background-color: #edeffb;
48
+ width: 100%;
49
+ }
50
+
51
+ /* Set a max-width, and make it display as block so it will automatically stretch to that width, but will also shrink down on a phone or something */
52
+ .container {
53
+ display: block;
54
+ margin: 0 auto !important;
55
+ max-width: 580px;
56
+ width: 580px;
57
+ border-radius: 8px;
58
+ padding-top: 20px;
59
+ padding-bottom: 20px;
60
+ }
61
+
62
+ /* This should also be a block element, so that it will fill 100% of the .container */
63
+ .content {
64
+ box-sizing: border-box;
65
+ display: block;
66
+ margin: 0 auto;
67
+ margin-top: 30px;
68
+ max-width: 580px;
69
+ padding-bottom: 30px;
70
+ background: #fff;
71
+ border-radius: 8px;
72
+ position: relative;
73
+ }
74
+
75
+ /* -------------------------------------
76
+ HEADER, FOOTER, MAIN
77
+ ------------------------------------- */
78
+ .topbar {
79
+ padding: 15px 20px;
80
+ border-bottom: 1px solid #eee;
81
+ }
82
+ .topbar table td {
83
+ font-size: 12px;
84
+ color: #777777;
85
+ }
86
+ .topbar img {
87
+ width: 20px;
88
+ height: 20px;
89
+ vertical-align: bottom;
90
+ border-radius: 50%;
91
+ }
92
+
93
+ .main {
94
+ background: #ffffff;
95
+ border-radius: 3px;
96
+ width: 100%;
97
+ border: 1px solid #e7e9f5;
98
+ }
99
+
100
+ .wrapper {
101
+ box-sizing: border-box;
102
+ padding: 20px;
103
+ }
104
+
105
+ .content-block {
106
+ padding-bottom: 10px;
107
+ padding-top: 10px;
108
+ }
109
+ .emailBody {
110
+ color: #6e6f92;
111
+ font-size: 13px;
112
+ margin-top: 40px;
113
+ }
114
+ .notificationMsg {
115
+ text-align: center;
116
+ padding: 20px;
117
+ padding-bottom: 0;
118
+ border-top: 1px solid #eee;
119
+ margin-top: 40px;
120
+ }
121
+ .notificationMsg p {
122
+ margin-bottom: 0;
123
+ font-size: 11px;
124
+ }
125
+ .notificationMsg a {
126
+ color: inherit;
127
+ text-decoration: underline;
128
+ }
129
+ .footer {
130
+ clear: both;
131
+ margin-top: 10px;
132
+ text-align: center;
133
+ width: 100%;
134
+ }
135
+ .footer td,
136
+ .footer p,
137
+ .footer span,
138
+ .footer a {
139
+ color: #999999;
140
+ font-size: 12px;
141
+ text-align: center;
142
+ }
143
+ .footer i {
144
+ margin: 0 8px;
145
+ }
146
+ /* -------------------------------------
147
+ TYPOGRAPHY
148
+ ------------------------------------- */
149
+ h1,
150
+ h2,
151
+ h3,
152
+ h4 {
153
+ color: #414158;
154
+ font-family: sans-serif;
155
+ line-height: 1.4;
156
+ margin: 0;
157
+ margin-bottom: 15px;
158
+ font-weight: 600;
159
+ }
160
+
161
+ h1 {
162
+ font-size: 35px;
163
+ font-weight: 300;
164
+ text-align: center;
165
+ text-transform: capitalize;
166
+ }
167
+ h2 {
168
+ font-size: 18px;
169
+ }
170
+ h3 {
171
+ font-size: 16px;
172
+ }
173
+ h1 i,
174
+ h2 i,
175
+ h3 i,
176
+ h4 i {
177
+ color: #575aff;
178
+ font-style: normal;
179
+ }
180
+ p,
181
+ ul,
182
+ ol {
183
+ font-family: sans-serif;
184
+ font-size: 13px;
185
+ font-weight: normal;
186
+ margin: 0;
187
+ margin-bottom: 15px;
188
+ }
189
+ p li,
190
+ ul li,
191
+ ol li {
192
+ list-style-position: inside;
193
+ margin-left: 5px;
194
+ }
195
+
196
+ a {
197
+ color: #575aff;
198
+ text-decoration: none;
199
+ }
200
+ .highlight {
201
+ background-color: #eff4ff;
202
+ color: #6e6f92;
203
+ padding: 2px 6px;
204
+ border-radius: 4px;
205
+ font-style: normal;
206
+ font-weight: 600;
207
+ font-size: 12px;
208
+ }
209
+ .label {
210
+ font-size: 12px;
211
+ color: #575aff;
212
+ background-color: #e4ecff;
213
+ padding: 3px 10px;
214
+ border-radius: 4px;
215
+ font-weight: 600;
216
+ display: inline-block;
217
+ }
218
+ .label-success {
219
+ color: #06ba9f;
220
+ background-color: #dcfffa;
221
+ }
222
+ .label-error {
223
+ color: #8d2f2f;
224
+ background-color: #ffecec;
225
+ }
226
+ .errorMsg {
227
+ color: #f12b2b;
228
+ background: #ffeeee;
229
+ font-weight: 600;
230
+ margin: 30px;
231
+ border-radius: 6px;
232
+ text-align: left;
233
+ padding: 16px;
234
+ margin-bottom: 24px;
235
+ }
236
+ .errorMsg p {
237
+ margin-top: 8px;
238
+ margin-bottom: 0;
239
+ }
240
+ .title {
241
+ margin-bottom: 40px;
242
+ }
243
+ .title-error,
244
+ .title-error a {
245
+ color: #f12b2b;
246
+ }
247
+ .title .icon--check {
248
+ vertical-align: middle;
249
+ width: 18px;
250
+ height: 18px;
251
+ line-height: 18px;
252
+ }
253
+ .icon {
254
+ font-weight: bold;
255
+ font-style: normal;
256
+ opacity: 0.6;
257
+ text-transform: none;
258
+ }
259
+ .icon--check {
260
+ width: 15px;
261
+ height: 15px;
262
+ display: inline-block;
263
+ background: #18cd94;
264
+ color: #fff;
265
+ text-align: center;
266
+ border-radius: 50%;
267
+ font-size: 9px;
268
+ line-height: 16px;
269
+ }
270
+ .img-icon img {
271
+ vertical-align: sub;
272
+ }
273
+
274
+ /* -------------------------------------
275
+ BUTTONS
276
+ ------------------------------------- */
277
+ .btn {
278
+ box-sizing: border-box;
279
+ width: 100%;
280
+ }
281
+ .btn > tbody > tr > td {
282
+ padding-bottom: 15px;
283
+ }
284
+ .btn table {
285
+ width: auto;
286
+ }
287
+ .btn table td {
288
+ background-color: #ffffff;
289
+ border-radius: 5px;
290
+ text-align: center;
291
+ }
292
+ .btn a {
293
+ background-color: #ffffff;
294
+ border: solid 1px #3498db;
295
+ border-radius: 5px;
296
+ box-sizing: border-box;
297
+ color: #3498db;
298
+ cursor: pointer;
299
+ display: inline-block;
300
+ font-size: 14px;
301
+ font-weight: bold;
302
+ margin: 0;
303
+ padding: 12px 25px;
304
+ text-decoration: none;
305
+ text-transform: capitalize;
306
+ }
307
+
308
+ .btn-primary table td {
309
+ background-color: #3498db;
310
+ }
311
+
312
+ .btn-primary a {
313
+ background-color: #3498db;
314
+ border-color: #3498db;
315
+ color: #ffffff;
316
+ }
317
+
318
+ /* -------------------------------------
319
+ Backups
320
+ ------------------------------------- */
321
+
322
+ .backupSummary,
323
+ .backupDateTime {
324
+ background-color: #f8faff;
325
+ margin: 20px 30px;
326
+ border-radius: 6px;
327
+ }
328
+
329
+ .backupDateTime {
330
+ padding: 8px 0;
331
+ }
332
+
333
+ tr.backupSummary_title td {
334
+ padding: 10px 15px;
335
+ border-bottom: 3px solid #fff;
336
+ }
337
+
338
+ tr.backupSummary_details td {
339
+ padding: 15px;
340
+ width: 48%;
341
+ }
342
+
343
+ tr.backupSummary_details td span {
344
+ display: block;
345
+ margin-bottom: 5px;
346
+ }
347
+
348
+ tr.backupSummary_date td {
349
+ padding: 10px 15px;
350
+ }
351
+
352
+ .backupSummary_arrow {
353
+ font-size: 20px;
354
+ opacity: 0.6;
355
+ }
356
+
357
+ .backupDetails {
358
+ margin: 20px 30px;
359
+ }
360
+
361
+ .backupDetailsCard {
362
+ background-color: #f8faff;
363
+ border-radius: 8px;
364
+ }
365
+
366
+ .backupDetailsTitle {
367
+ font-size: 12px;
368
+ font-weight: bold;
369
+ color: #9dadd0;
370
+ margin-bottom: 15px;
371
+ text-transform: uppercase;
372
+ }
373
+
374
+ .backupDetailsValue {
375
+ font-size: 16px;
376
+ font-weight: bold;
377
+ line-height: 1.2;
378
+ margin-bottom: 5px;
379
+ }
380
+
381
+ .backupDetailsLabel {
382
+ font-size: 11px;
383
+ margin-bottom: 0;
384
+ }
385
+
386
+ .backupError {
387
+ margin: 30px;
388
+ background: #fff2f2;
389
+ padding: 15px;
390
+ border-radius: 6px;
391
+ padding-bottom: 8px;
392
+ }
393
+
394
+ .backupErrorTitle {
395
+ display: block;
396
+ margin-bottom: 12px;
397
+ color: #f12b2b;
398
+ }
399
+
400
+ /* Weekly Backup Report Specific Styles */
401
+ .planReportDayStatus {
402
+ display: inline-block;
403
+ margin-left: 10px;
404
+ }
405
+
406
+ .planReportDayStatus span {
407
+ display: block;
408
+ }
409
+
410
+ span.planReportDayStatusCount {
411
+ width: 24px;
412
+ height: 24px;
413
+ border-radius: 50%;
414
+ background: #e4eaf7;
415
+ text-align: center;
416
+ line-height: 24px;
417
+ font-size: 10px;
418
+ margin-top: 5px;
419
+ }
420
+
421
+ span.planReportDayStatusLabel {
422
+ text-transform: uppercase;
423
+ font-size: 10px;
424
+ }
425
+
426
+ .planReportDayStatus--Completed .planReportDayStatusCount {
427
+ background: #59d0b5;
428
+ color: #fff;
429
+ }
430
+
431
+ .planReportDayStatus--Failed .planReportDayStatusCount {
432
+ background: #f99292;
433
+ color: #fff;
434
+ }
435
+
436
+ .planReportDayStatus--monthly {
437
+ margin-left: 5px;
438
+ }
439
+ .planReportDayStatus--monthly .planReportDayStatusCount {
440
+ width: 15px;
441
+ height: 15px;
442
+ line-height: 15px;
443
+ }
444
+
445
+ @media screen and (max-width: 600px) {
446
+ tr.backupSummary_date td {
447
+ display: block;
448
+ text-align: left !important;
449
+ }
450
+ .backupDetailsColumnsWrapper,
451
+ .backupDetailsColumnsWrapper tbody,
452
+ .backupDetailsColumnsWrapper tr {
453
+ width: 100% !important;
454
+ display: block !important;
455
+ }
456
+ .backupDetailsColumn {
457
+ width: 100% !important;
458
+ display: block !important;
459
+ padding-right: 0 !important;
460
+ padding-left: 0 !important;
461
+ margin-bottom: 20px; /* Add vertical spacing when stacked */
462
+ }
463
+ .backupDetailsCardContent {
464
+ display: block;
465
+ }
466
+ .backupDetailsStat {
467
+ display: inline-block;
468
+ width: 48%;
469
+ }
470
+ .backupDetailsChange {
471
+ display: inline-block;
472
+ width: 32.3%;
473
+ }
474
+ }
475
+
476
+ /* -------------------------------------
477
+ Backup Integrity Section
478
+ ------------------------------------- */
479
+ .integrityCheck .errorMsg {
480
+ font-size: 13px;
481
+ text-align: center;
482
+ }
483
+ .integrityLogs {
484
+ border-radius: 6px;
485
+ border: 1px solid #eee;
486
+ box-sizing: border-box;
487
+ margin: 30px;
488
+ }
489
+ .integrityLogsHeader {
490
+ font-weight: 600;
491
+ padding: 12px;
492
+ border-bottom: 1px solid #eee;
493
+ }
494
+ .integrityLogMessages {
495
+ font-family: monospace;
496
+ background-color: #f9f2f2;
497
+ line-height: 1.3rem;
498
+ max-height: 300px;
499
+ overflow: auto;
500
+ }
501
+ .integrityLogMessages span {
502
+ display: block;
503
+ padding: 4px 12px;
504
+ line-break: anywhere;
505
+ }
506
+ .integrityLogMessages span:nth-child(even) {
507
+ background: rgba(0, 0, 0, 0.03);
508
+ }
509
+
510
+ /* -------------------------------------
511
+ OTHER STYLES THAT MIGHT BE USEFUL
512
+ ------------------------------------- */
513
+ .center {
514
+ text-align: center;
515
+ }
516
+ .last {
517
+ margin-bottom: 0;
518
+ }
519
+
520
+ .first {
521
+ margin-top: 0;
522
+ }
523
+
524
+ .align-center {
525
+ text-align: center;
526
+ }
527
+
528
+ .align-right {
529
+ text-align: right;
530
+ }
531
+
532
+ .align-left {
533
+ text-align: left;
534
+ }
535
+
536
+ .clear {
537
+ clear: both;
538
+ }
539
+
540
+ .mt0 {
541
+ margin-top: 0;
542
+ }
543
+
544
+ .mb0 {
545
+ margin-bottom: 0;
546
+ }
547
+
548
+ .preheader {
549
+ color: transparent;
550
+ display: none;
551
+ height: 0;
552
+ max-height: 0;
553
+ max-width: 0;
554
+ opacity: 0;
555
+ overflow: hidden;
556
+ visibility: hidden;
557
+ width: 0;
558
+ }
559
+
560
+ .powered-by a {
561
+ text-decoration: none;
562
+ }
563
+
564
+ /* -------------------------------------
565
+ Daily Report Styles
566
+ ------------------------------------- */
567
+ /* Container & Layout */
568
+ .planReportContainer {
569
+ max-width: 600px;
570
+ width: 100%;
571
+ border-collapse: collapse;
572
+ table-layout: fixed;
573
+ margin: 0 auto;
574
+ }
575
+
576
+ .planReportInfoTable {
577
+ padding: 10px;
578
+ }
579
+
580
+ .planReportLabelText {
581
+ font-size: 12px;
582
+ color: #9393c3;
583
+ }
584
+ .planReportBodyText {
585
+ font-size: 12px;
586
+ color: #9dadd0;
587
+ }
588
+ .planReportBodyTextBold {
589
+ font-weight: bold;
590
+ color: #6e6f92;
591
+ }
592
+ .planReportBodyTextBold a {
593
+ color: #6e6f92;
594
+ }
595
+
596
+ .planReportStatsTable {
597
+ padding: 6px 10px;
598
+ padding-bottom: 3px;
599
+ border-radius: 4px;
600
+ background: #eff4ff;
601
+ }
602
+
603
+ /* Status & Colors */
604
+ .planReportStatusSuccess {
605
+ font-size: 12px;
606
+ }
607
+ .planReportSuccessIcon {
608
+ font-size: 16px;
609
+ line-height: 1;
610
+ color: #00b894;
611
+ }
612
+ .planReportIconHolder {
613
+ width: 24px;
614
+ text-align: center;
615
+ vertical-align: middle;
616
+ padding-right: 10px;
617
+ }
618
+ .planReportIcon {
619
+ font-size: 28px;
620
+ line-height: 1;
621
+ color: #c6d5f3;
622
+ }
623
+ .planReportIcon .icon-cloudArrow {
624
+ font-size: 18px;
625
+ margin-top: -20px;
626
+ display: block;
627
+ opacity: 1;
628
+ color: #afbcd5;
629
+ z-index: 2;
630
+ position: relative;
631
+ }
632
+ .planReportArrowIcon {
633
+ font-size: 16px;
634
+ line-height: 1;
635
+ color: #9dadd0;
636
+ }
637
+
638
+ /* Card Backgrounds */
639
+ .planReportMainCardBg {
640
+ background-color: #f8faff;
641
+ border-radius: 6px;
642
+ }
643
+
644
+ /* Responsive Columns (for modern clients) */
645
+ @media screen and (max-width: 600px) {
646
+ .planReportContainer {
647
+ width: 100% !important;
648
+ }
649
+ .planReportColumnWrap {
650
+ width: 100% !important;
651
+ display: block !important;
652
+ padding-right: 0 !important;
653
+ padding-left: 0 !important;
654
+ margin-bottom: 20px;
655
+ }
656
+ .planReportStackPaddingBottom {
657
+ padding-bottom: 20px !important;
658
+ }
659
+ .planReportInfoTable .planReportCardCell {
660
+ display: block;
661
+ width: 100% !important;
662
+ text-align: left !important;
663
+ }
664
+ .planReportInfoTable .planReportCardCell--right {
665
+ margin-top: 15px;
666
+ border-top: 1px solid #e5e8ef;
667
+ padding-top: 10px;
668
+ text-align: center !important;
669
+ }
670
+ }
671
+ /* -------------------------------------
672
+ RESPONSIVE AND MOBILE FRIENDLY STYLES
673
+ ------------------------------------- */
674
+ @media only screen and (max-width: 620px) {
675
+ table.body h1 {
676
+ font-size: 28px !important;
677
+ margin-bottom: 10px !important;
678
+ }
679
+ table.body .wrapper,
680
+ table.body .article {
681
+ padding: 10px !important;
682
+ }
683
+
684
+ table.body .container {
685
+ padding: 0 !important;
686
+ width: 90% !important;
687
+ }
688
+ table.body .main {
689
+ border-left-width: 0 !important;
690
+ border-radius: 0 !important;
691
+ border-right-width: 0 !important;
692
+ }
693
+ table.body .btn table {
694
+ width: 100% !important;
695
+ }
696
+ table.body .btn a {
697
+ width: 100% !important;
698
+ }
699
+ table.body .img-responsive {
700
+ height: auto !important;
701
+ max-width: 100% !important;
702
+ width: auto !important;
703
+ }
704
+ .stat {
705
+ display: none;
706
+ }
707
+ .backupBlockItem {
708
+ width: 65%;
709
+ margin-bottom: 15px;
710
+ padding: 20px;
711
+ }
712
+ }
713
+
714
+ /* -------------------------------------
715
+ PRESERVE THESE STYLES IN THE HEAD
716
+ ------------------------------------- */
717
+ @media all {
718
+ .ExternalClass {
719
+ width: 100%;
720
+ }
721
+ .ExternalClass,
722
+ .ExternalClass p,
723
+ .ExternalClass span,
724
+ .ExternalClass font,
725
+ .ExternalClass td,
726
+ .ExternalClass div {
727
+ line-height: 100%;
728
+ }
729
+ .apple-link a {
730
+ color: inherit !important;
731
+ font-family: inherit !important;
732
+ font-size: inherit !important;
733
+ font-weight: inherit !important;
734
+ line-height: inherit !important;
735
+ text-decoration: none !important;
736
+ }
737
+ #MessageViewBody a {
738
+ color: inherit;
739
+ text-decoration: none;
740
+ font-size: inherit;
741
+ font-family: inherit;
742
+ font-weight: inherit;
743
+ line-height: inherit;
744
+ }
745
+ .btn-primary table td:hover {
746
+ background-color: #34495e !important;
747
+ }
748
+ .btn-primary a:hover {
749
+ background-color: #34495e !important;
750
+ border-color: #34495e !important;
751
+ }
752
+ }
753
+ </style>
754
+ </head>
755
+ <body>
756
+ <span class="preheader">{{PRE_HEADER}}</span>
757
+ <table role="presentation" border="0" cellpadding="0" cellspacing="0" class="body">
758
+ <tr>
759
+ <td>&nbsp;</td>
760
+ <td class="container">
761
+ <div class="content {{CLASSNAME}}">
762
+ <div class="topbar">
763
+ <table role="presentation" border="0" cellpadding="0" cellspacing="0">
764
+ <tr>
765
+ <td align="right" style="vertical-align: bottom; text-align: left">
766
+ <img
767
+ class="logo_img"
768
+ src="https://pluton.b-cdn.net/logo.png"
769
+ alt="Pluton Logo"
770
+ width="70"
771
+ height="70"
772
+ />
773
+ {{APP_TITLE}}
774
+ </td>
775
+ <td align="right" style="vertical-align: bottom">{{CURRENT_DATE}}</td>
776
+ </tr>
777
+ </table>
778
+ </div>
779
+ <!-- START EMAIL BODY -->
780
+ <div class="emailBody">{{EMAIL_BODY_CONTENT}}</div>
781
+ <!-- END EMAIL BODY -->
782
+ </div>
783
+ <!-- START FOOTER -->
784
+ <div class="footer">
785
+ <table role="presentation" border="0" cellpadding="0" cellspacing="0">
786
+ <tr>
787
+ <td class="content-block powered-by">
788
+ <a href="https://plutonbackup.com">Pluton</a> <i>|</i>
789
+ <a href="{{APP_URL}}">Visit Dashboard</a> <i>|</i>
790
+ <a href="{{DOCS_URL}}">Help</a>
791
+ </td>
792
+ </tr>
793
+ </table>
794
+ </div>
795
+ <!-- END FOOTER -->
796
+ </td>
797
+ <td>&nbsp;</td>
798
+ </tr>
799
+ </table>
800
+ </body>
801
+ </html>