Tonne of updates
This commit is contained in:
112
api/src/templates/email/admin-response-submitted-alert.html
Normal file
112
api/src/templates/email/admin-response-submitted-alert.html
Normal file
@@ -0,0 +1,112 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>New Response Submitted — {{ORGANIZATION_NAME}}</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
.container {
|
||||
background-color: #f9f9f9;
|
||||
border-radius: 8px;
|
||||
padding: 30px;
|
||||
border: 1px solid #e0e0e0;
|
||||
}
|
||||
.header {
|
||||
text-align: center;
|
||||
margin-bottom: 30px;
|
||||
border-bottom: 2px solid #d97706;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.logo {
|
||||
color: #d97706;
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.content {
|
||||
background-color: white;
|
||||
padding: 25px;
|
||||
border-radius: 6px;
|
||||
margin-bottom: 20px;
|
||||
border-left: 4px solid #d97706;
|
||||
}
|
||||
.info-section {
|
||||
background-color: #fffbeb;
|
||||
padding: 15px;
|
||||
border-radius: 4px;
|
||||
margin: 16px 0;
|
||||
border: 1px solid #fde68a;
|
||||
}
|
||||
.info-item {
|
||||
margin: 6px 0;
|
||||
}
|
||||
.info-label {
|
||||
font-weight: bold;
|
||||
color: #92400e;
|
||||
}
|
||||
.btn {
|
||||
display: inline-block;
|
||||
padding: 14px 32px;
|
||||
border-radius: 6px;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
background: linear-gradient(135deg, #d97706, #b45309);
|
||||
color: white;
|
||||
}
|
||||
.btn-container {
|
||||
text-align: center;
|
||||
margin: 24px 0;
|
||||
}
|
||||
.footer {
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
color: #6c757d;
|
||||
margin-top: 30px;
|
||||
padding-top: 20px;
|
||||
border-top: 1px solid #e9ecef;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<div class="logo">{{ORGANIZATION_NAME}}</div>
|
||||
<p style="margin: 10px 0 0 0; color: #6c757d;">New Response Submitted</p>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<p>A new response has been submitted to the response wall and is awaiting moderation:</p>
|
||||
|
||||
<div class="info-section">
|
||||
<div class="info-item">
|
||||
<span class="info-label">Campaign:</span> {{CAMPAIGN_TITLE}}
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Representative:</span> {{REPRESENTATIVE_NAME}}
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Response Type:</span> {{RESPONSE_TYPE}}
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Submitted By:</span> {{SUBMITTER_NAME}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="btn-container">
|
||||
<a href="{{ADMIN_URL}}" class="btn">Review Responses</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p>This is an admin notification from <strong>{{ORGANIZATION_NAME}}</strong></p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
12
api/src/templates/email/admin-response-submitted-alert.txt
Normal file
12
api/src/templates/email/admin-response-submitted-alert.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
{{ORGANIZATION_NAME}} — New Response Submitted
|
||||
|
||||
A new response has been submitted to the response wall and is awaiting moderation:
|
||||
|
||||
Campaign: {{CAMPAIGN_TITLE}}
|
||||
Representative: {{REPRESENTATIVE_NAME}}
|
||||
Response Type: {{RESPONSE_TYPE}}
|
||||
Submitted By: {{SUBMITTER_NAME}}
|
||||
|
||||
Review responses: {{ADMIN_URL}}
|
||||
|
||||
— {{ORGANIZATION_NAME}}
|
||||
115
api/src/templates/email/admin-shift-cancellation-alert.html
Normal file
115
api/src/templates/email/admin-shift-cancellation-alert.html
Normal file
@@ -0,0 +1,115 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Shift Cancellation — {{ORGANIZATION_NAME}}</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
.container {
|
||||
background-color: #f9f9f9;
|
||||
border-radius: 8px;
|
||||
padding: 30px;
|
||||
border: 1px solid #e0e0e0;
|
||||
}
|
||||
.header {
|
||||
text-align: center;
|
||||
margin-bottom: 30px;
|
||||
border-bottom: 2px solid #dc3545;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.logo {
|
||||
color: #dc3545;
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.content {
|
||||
background-color: white;
|
||||
padding: 25px;
|
||||
border-radius: 6px;
|
||||
margin-bottom: 20px;
|
||||
border-left: 4px solid #dc3545;
|
||||
}
|
||||
.info-section {
|
||||
background-color: #fff5f5;
|
||||
padding: 15px;
|
||||
border-radius: 4px;
|
||||
margin: 16px 0;
|
||||
border: 1px solid #fed7d7;
|
||||
}
|
||||
.info-item {
|
||||
margin: 6px 0;
|
||||
}
|
||||
.info-label {
|
||||
font-weight: bold;
|
||||
color: #9b2c2c;
|
||||
}
|
||||
.btn {
|
||||
display: inline-block;
|
||||
padding: 14px 32px;
|
||||
border-radius: 6px;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
background: linear-gradient(135deg, #dc3545, #b02a37);
|
||||
color: white;
|
||||
}
|
||||
.btn-container {
|
||||
text-align: center;
|
||||
margin: 24px 0;
|
||||
}
|
||||
.footer {
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
color: #6c757d;
|
||||
margin-top: 30px;
|
||||
padding-top: 20px;
|
||||
border-top: 1px solid #e9ecef;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<div class="logo">{{ORGANIZATION_NAME}}</div>
|
||||
<p style="margin: 10px 0 0 0; color: #6c757d;">Shift Cancellation</p>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<p>A volunteer has cancelled their shift signup:</p>
|
||||
|
||||
<div class="info-section">
|
||||
<div class="info-item">
|
||||
<span class="info-label">Shift:</span> {{SHIFT_TITLE}}
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Date:</span> {{SHIFT_DATE}}
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Volunteer:</span> {{VOLUNTEER_NAME}}
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Email:</span> {{VOLUNTEER_EMAIL}}
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Source:</span> {{CANCELLATION_SOURCE}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="btn-container">
|
||||
<a href="{{ADMIN_URL}}" class="btn">View in Admin</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p>This is an admin notification from <strong>{{ORGANIZATION_NAME}}</strong></p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
13
api/src/templates/email/admin-shift-cancellation-alert.txt
Normal file
13
api/src/templates/email/admin-shift-cancellation-alert.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
{{ORGANIZATION_NAME}} — Shift Cancellation
|
||||
|
||||
A volunteer has cancelled their shift signup:
|
||||
|
||||
Shift: {{SHIFT_TITLE}}
|
||||
Date: {{SHIFT_DATE}}
|
||||
Volunteer: {{VOLUNTEER_NAME}}
|
||||
Email: {{VOLUNTEER_EMAIL}}
|
||||
Source: {{CANCELLATION_SOURCE}}
|
||||
|
||||
View in admin: {{ADMIN_URL}}
|
||||
|
||||
— {{ORGANIZATION_NAME}}
|
||||
115
api/src/templates/email/admin-shift-signup-alert.html
Normal file
115
api/src/templates/email/admin-shift-signup-alert.html
Normal file
@@ -0,0 +1,115 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>New Shift Signup — {{ORGANIZATION_NAME}}</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
.container {
|
||||
background-color: #f9f9f9;
|
||||
border-radius: 8px;
|
||||
padding: 30px;
|
||||
border: 1px solid #e0e0e0;
|
||||
}
|
||||
.header {
|
||||
text-align: center;
|
||||
margin-bottom: 30px;
|
||||
border-bottom: 2px solid #d97706;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.logo {
|
||||
color: #d97706;
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.content {
|
||||
background-color: white;
|
||||
padding: 25px;
|
||||
border-radius: 6px;
|
||||
margin-bottom: 20px;
|
||||
border-left: 4px solid #d97706;
|
||||
}
|
||||
.info-section {
|
||||
background-color: #fffbeb;
|
||||
padding: 15px;
|
||||
border-radius: 4px;
|
||||
margin: 16px 0;
|
||||
border: 1px solid #fde68a;
|
||||
}
|
||||
.info-item {
|
||||
margin: 6px 0;
|
||||
}
|
||||
.info-label {
|
||||
font-weight: bold;
|
||||
color: #92400e;
|
||||
}
|
||||
.btn {
|
||||
display: inline-block;
|
||||
padding: 14px 32px;
|
||||
border-radius: 6px;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
background: linear-gradient(135deg, #d97706, #b45309);
|
||||
color: white;
|
||||
}
|
||||
.btn-container {
|
||||
text-align: center;
|
||||
margin: 24px 0;
|
||||
}
|
||||
.footer {
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
color: #6c757d;
|
||||
margin-top: 30px;
|
||||
padding-top: 20px;
|
||||
border-top: 1px solid #e9ecef;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<div class="logo">{{ORGANIZATION_NAME}}</div>
|
||||
<p style="margin: 10px 0 0 0; color: #6c757d;">New Shift Signup</p>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<p>A volunteer has signed up for a shift:</p>
|
||||
|
||||
<div class="info-section">
|
||||
<div class="info-item">
|
||||
<span class="info-label">Shift:</span> {{SHIFT_TITLE}}
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Date:</span> {{SHIFT_DATE}}
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Volunteer:</span> {{VOLUNTEER_NAME}}
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Email:</span> {{VOLUNTEER_EMAIL}}
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Source:</span> {{SIGNUP_SOURCE}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="btn-container">
|
||||
<a href="{{ADMIN_URL}}" class="btn">View in Admin</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p>This is an admin notification from <strong>{{ORGANIZATION_NAME}}</strong></p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
13
api/src/templates/email/admin-shift-signup-alert.txt
Normal file
13
api/src/templates/email/admin-shift-signup-alert.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
{{ORGANIZATION_NAME}} — New Shift Signup
|
||||
|
||||
A volunteer has signed up for a shift:
|
||||
|
||||
Shift: {{SHIFT_TITLE}}
|
||||
Date: {{SHIFT_DATE}}
|
||||
Volunteer: {{VOLUNTEER_NAME}}
|
||||
Email: {{VOLUNTEER_EMAIL}}
|
||||
Source: {{SIGNUP_SOURCE}}
|
||||
|
||||
View in admin: {{ADMIN_URL}}
|
||||
|
||||
— {{ORGANIZATION_NAME}}
|
||||
112
api/src/templates/email/admin-sign-requested-alert.html
Normal file
112
api/src/templates/email/admin-sign-requested-alert.html
Normal file
@@ -0,0 +1,112 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Sign Requested — {{ORGANIZATION_NAME}}</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
.container {
|
||||
background-color: #f9f9f9;
|
||||
border-radius: 8px;
|
||||
padding: 30px;
|
||||
border: 1px solid #e0e0e0;
|
||||
}
|
||||
.header {
|
||||
text-align: center;
|
||||
margin-bottom: 30px;
|
||||
border-bottom: 2px solid #dc2626;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.logo {
|
||||
color: #dc2626;
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.content {
|
||||
background-color: white;
|
||||
padding: 25px;
|
||||
border-radius: 6px;
|
||||
margin-bottom: 20px;
|
||||
border-left: 4px solid #dc2626;
|
||||
}
|
||||
.info-section {
|
||||
background-color: #fef2f2;
|
||||
padding: 15px;
|
||||
border-radius: 4px;
|
||||
margin: 16px 0;
|
||||
border: 1px solid #fecaca;
|
||||
}
|
||||
.info-item {
|
||||
margin: 6px 0;
|
||||
}
|
||||
.info-label {
|
||||
font-weight: bold;
|
||||
color: #991b1b;
|
||||
}
|
||||
.btn {
|
||||
display: inline-block;
|
||||
padding: 14px 32px;
|
||||
border-radius: 6px;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
background: linear-gradient(135deg, #dc2626, #b91c1c);
|
||||
color: white;
|
||||
}
|
||||
.btn-container {
|
||||
text-align: center;
|
||||
margin: 24px 0;
|
||||
}
|
||||
.footer {
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
color: #6c757d;
|
||||
margin-top: 30px;
|
||||
padding-top: 20px;
|
||||
border-top: 1px solid #e9ecef;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<div class="logo">{{ORGANIZATION_NAME}}</div>
|
||||
<p style="margin: 10px 0 0 0; color: #6c757d;">Sign Requested</p>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<p>A resident has requested a yard sign during canvassing:</p>
|
||||
|
||||
<div class="info-section">
|
||||
<div class="info-item">
|
||||
<span class="info-label">Address:</span> {{ADDRESS}}
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Sign Size:</span> {{SIGN_SIZE}}
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Canvasser:</span> {{VOLUNTEER_NAME}}
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Shift:</span> {{SHIFT_TITLE}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="btn-container">
|
||||
<a href="{{ADMIN_URL}}" class="btn">View in Admin</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p>This is an admin notification from <strong>{{ORGANIZATION_NAME}}</strong></p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
12
api/src/templates/email/admin-sign-requested-alert.txt
Normal file
12
api/src/templates/email/admin-sign-requested-alert.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
{{ORGANIZATION_NAME}} — Sign Requested
|
||||
|
||||
A resident has requested a yard sign during canvassing:
|
||||
|
||||
Address: {{ADDRESS}}
|
||||
Sign Size: {{SIGN_SIZE}}
|
||||
Canvasser: {{VOLUNTEER_NAME}}
|
||||
Shift: {{SHIFT_TITLE}}
|
||||
|
||||
View in admin: {{ADMIN_URL}}
|
||||
|
||||
— {{ORGANIZATION_NAME}}
|
||||
112
api/src/templates/email/volunteer-cancellation-ack.html
Normal file
112
api/src/templates/email/volunteer-cancellation-ack.html
Normal file
@@ -0,0 +1,112 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Signup Cancelled — {{ORGANIZATION_NAME}}</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
.container {
|
||||
background-color: #f9f9f9;
|
||||
border-radius: 8px;
|
||||
padding: 30px;
|
||||
border: 1px solid #e0e0e0;
|
||||
}
|
||||
.header {
|
||||
text-align: center;
|
||||
margin-bottom: 30px;
|
||||
border-bottom: 2px solid #6b7280;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.logo {
|
||||
color: #6b7280;
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.content {
|
||||
background-color: white;
|
||||
padding: 25px;
|
||||
border-radius: 6px;
|
||||
margin-bottom: 20px;
|
||||
border-left: 4px solid #6b7280;
|
||||
}
|
||||
.info-section {
|
||||
background-color: #f9fafb;
|
||||
padding: 15px;
|
||||
border-radius: 4px;
|
||||
margin: 16px 0;
|
||||
border: 1px solid #e5e7eb;
|
||||
}
|
||||
.info-item {
|
||||
margin: 6px 0;
|
||||
}
|
||||
.info-label {
|
||||
font-weight: bold;
|
||||
color: #374151;
|
||||
}
|
||||
.btn {
|
||||
display: inline-block;
|
||||
padding: 14px 32px;
|
||||
border-radius: 6px;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
background: linear-gradient(135deg, #2563eb, #1d4ed8);
|
||||
color: white;
|
||||
}
|
||||
.btn-container {
|
||||
text-align: center;
|
||||
margin: 24px 0;
|
||||
}
|
||||
.footer {
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
color: #6c757d;
|
||||
margin-top: 30px;
|
||||
padding-top: 20px;
|
||||
border-top: 1px solid #e9ecef;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<div class="logo">{{ORGANIZATION_NAME}}</div>
|
||||
<p style="margin: 10px 0 0 0; color: #6c757d;">Signup Cancelled</p>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<p>Hi {{VOLUNTEER_NAME}},</p>
|
||||
<p>Your shift signup has been cancelled. Here are the details:</p>
|
||||
|
||||
<div class="info-section">
|
||||
<div class="info-item">
|
||||
<span class="info-label">Shift:</span> {{SHIFT_TITLE}}
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Date:</span> {{SHIFT_DATE}}
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Time:</span> {{SHIFT_TIME}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p>If this was a mistake, you can sign up again:</p>
|
||||
|
||||
<div class="btn-container">
|
||||
<a href="{{SIGNUP_URL}}" class="btn">View Available Shifts</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p>This email was sent by <strong>{{ORGANIZATION_NAME}}</strong></p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
13
api/src/templates/email/volunteer-cancellation-ack.txt
Normal file
13
api/src/templates/email/volunteer-cancellation-ack.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
{{ORGANIZATION_NAME}} — Signup Cancelled
|
||||
|
||||
Hi {{VOLUNTEER_NAME}},
|
||||
|
||||
Your shift signup has been cancelled:
|
||||
|
||||
Shift: {{SHIFT_TITLE}}
|
||||
Date: {{SHIFT_DATE}}
|
||||
Time: {{SHIFT_TIME}}
|
||||
|
||||
If this was a mistake, you can sign up again: {{SIGNUP_URL}}
|
||||
|
||||
— {{ORGANIZATION_NAME}}
|
||||
145
api/src/templates/email/volunteer-session-summary.html
Normal file
145
api/src/templates/email/volunteer-session-summary.html
Normal file
@@ -0,0 +1,145 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Canvass Session Summary — {{ORGANIZATION_NAME}}</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
}
|
||||
.container {
|
||||
background-color: #f9f9f9;
|
||||
border-radius: 8px;
|
||||
padding: 30px;
|
||||
border: 1px solid #e0e0e0;
|
||||
}
|
||||
.header {
|
||||
text-align: center;
|
||||
margin-bottom: 30px;
|
||||
border-bottom: 2px solid #2563eb;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.logo {
|
||||
color: #2563eb;
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.content {
|
||||
background-color: white;
|
||||
padding: 25px;
|
||||
border-radius: 6px;
|
||||
margin-bottom: 20px;
|
||||
border-left: 4px solid #2563eb;
|
||||
}
|
||||
.info-section {
|
||||
background-color: #eff6ff;
|
||||
padding: 15px;
|
||||
border-radius: 4px;
|
||||
margin: 16px 0;
|
||||
border: 1px solid #bfdbfe;
|
||||
}
|
||||
.info-item {
|
||||
margin: 6px 0;
|
||||
}
|
||||
.info-label {
|
||||
font-weight: bold;
|
||||
color: #1e40af;
|
||||
}
|
||||
.stats-grid {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
flex-wrap: wrap;
|
||||
margin: 16px 0;
|
||||
}
|
||||
.stat-box {
|
||||
flex: 1;
|
||||
min-width: 100px;
|
||||
background-color: #f0f9ff;
|
||||
border: 1px solid #bae6fd;
|
||||
border-radius: 6px;
|
||||
padding: 12px;
|
||||
text-align: center;
|
||||
}
|
||||
.stat-number {
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
color: #2563eb;
|
||||
}
|
||||
.stat-label {
|
||||
font-size: 12px;
|
||||
color: #64748b;
|
||||
margin-top: 4px;
|
||||
}
|
||||
.outcome-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin: 16px 0;
|
||||
}
|
||||
.outcome-table th, .outcome-table td {
|
||||
padding: 8px 12px;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid #e2e8f0;
|
||||
}
|
||||
.outcome-table th {
|
||||
background-color: #f8fafc;
|
||||
font-weight: bold;
|
||||
color: #475569;
|
||||
}
|
||||
.footer {
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
color: #6c757d;
|
||||
margin-top: 30px;
|
||||
padding-top: 20px;
|
||||
border-top: 1px solid #e9ecef;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<div class="logo">{{ORGANIZATION_NAME}}</div>
|
||||
<p style="margin: 10px 0 0 0; color: #6c757d;">Canvass Session Summary</p>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<p>Great work, {{VOLUNTEER_NAME}}! Here's a summary of your canvassing session:</p>
|
||||
|
||||
<div class="info-section">
|
||||
<div class="info-item">
|
||||
<span class="info-label">Area:</span> {{CUT_NAME}}
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Date:</span> {{SESSION_DATE}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="stats-grid">
|
||||
<div class="stat-box">
|
||||
<div class="stat-number">{{VISIT_COUNT}}</div>
|
||||
<div class="stat-label">Doors Visited</div>
|
||||
</div>
|
||||
<div class="stat-box">
|
||||
<div class="stat-number">{{DURATION_MINUTES}}</div>
|
||||
<div class="stat-label">Minutes</div>
|
||||
</div>
|
||||
<div class="stat-box">
|
||||
<div class="stat-number">{{DISTANCE_KM}}</div>
|
||||
<div class="stat-label">km Walked</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{OUTCOME_BREAKDOWN}}
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p>Thank you for volunteering with <strong>{{ORGANIZATION_NAME}}</strong></p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
13
api/src/templates/email/volunteer-session-summary.txt
Normal file
13
api/src/templates/email/volunteer-session-summary.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
{{ORGANIZATION_NAME}} — Canvass Session Summary
|
||||
|
||||
Great work, {{VOLUNTEER_NAME}}! Here's a summary of your canvassing session:
|
||||
|
||||
Area: {{CUT_NAME}}
|
||||
Date: {{SESSION_DATE}}
|
||||
Doors Visited: {{VISIT_COUNT}}
|
||||
Duration: {{DURATION_MINUTES}} minutes
|
||||
Distance: {{DISTANCE_KM}} km
|
||||
|
||||
{{OUTCOME_BREAKDOWN}}
|
||||
|
||||
Thank you for volunteering with {{ORGANIZATION_NAME}}!
|
||||
Reference in New Issue
Block a user