feat: Email templates, bulk delete, communication credits, plan features
- Add email template presets for Browse Templates tab (12 templates) - Add bulk selection and deletion for My Templates tab - Add communication credits system with Twilio integration - Add payment views for credit purchases and auto-reload - Add SMS reminder and masked calling plan permissions - Fix appointment status mapping (frontend/backend mismatch) - Clear masquerade stack on login/logout for session hygiene - Update platform settings with credit configuration - Add new migrations for Twilio and Stripe payment fields 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
38
email_templates/reminder/personal_note.html
Normal file
38
email_templates/reminder/personal_note.html
Normal file
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Reminder - Personal Note</title>
|
||||
</head>
|
||||
<body style="margin: 0; padding: 0; background-color: #fdfbf7; font-family: 'Georgia', serif;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td align="center" style="padding: 60px 20px;">
|
||||
<table width="500" cellpadding="0" cellspacing="0" role="presentation" style="background-color: #ffffff; border: 1px solid #e7e5e4; padding: 60px 40px; box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);">
|
||||
<tr>
|
||||
<td>
|
||||
<p style="margin: 0 0 20px; font-size: 16px; color: #44403c; line-height: 1.6;">
|
||||
Dear {{CUSTOMER_NAME}},
|
||||
</p>
|
||||
<p style="margin: 0 0 20px; font-size: 16px; color: #44403c; line-height: 1.6;">
|
||||
I'm writing to confirm that we're still on for your <strong>{{APPOINTMENT_SERVICE}}</strong> tomorrow, <strong>{{APPOINTMENT_DATE}}</strong> at <strong>{{APPOINTMENT_TIME}}</strong>.
|
||||
</p>
|
||||
<p style="margin: 0 0 40px; font-size: 16px; color: #44403c; line-height: 1.6;">
|
||||
Looking forward to our session.
|
||||
</p>
|
||||
<p style="margin: 0; font-size: 16px; color: #44403c; line-height: 1.6;">
|
||||
Warmly,<br><br>
|
||||
<span style="font-style: italic; font-size: 18px; color: #1c1917;">{{BUSINESS_NAME}}</span>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p style="margin-top: 20px; font-family: sans-serif; font-size: 12px; color: #a8a29e; text-align: center;">
|
||||
<a href="#" style="color: #a8a29e; text-decoration: underline;">Reschedule</a> or <a href="#" style="color: #a8a29e; text-decoration: underline;">Cancel</a>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
56
email_templates/reminder/soft_clean.html
Normal file
56
email_templates/reminder/soft_clean.html
Normal file
@@ -0,0 +1,56 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Reminder - Soft & Clean</title>
|
||||
</head>
|
||||
<body style="margin: 0; padding: 0; background-color: #fff1f2; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td align="center" style="padding: 60px 0;">
|
||||
<table width="500" cellpadding="0" cellspacing="0" role="presentation" style="background-color: #ffffff; border-radius: 20px; box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.05), 0 10px 10px -5px rgba(0, 0, 0, 0.01);">
|
||||
<!-- Circle Image Top -->
|
||||
<tr>
|
||||
<td align="center" style="padding-top: 40px;">
|
||||
<img src="https://placehold.co/120x120/fb7185/ffffff?text=Soon&font=playfair-display" alt="Soon" style="width: 120px; height: 120px; border-radius: 50%; object-fit: cover; display: block;">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<!-- Content -->
|
||||
<tr>
|
||||
<td style="padding: 30px 50px 50px; text-align: center;">
|
||||
<h1 style="margin: 0 0 16px; color: #881337; font-size: 24px; font-weight: 600;">
|
||||
Just a Friendly Reminder
|
||||
</h1>
|
||||
<p style="margin: 0 0 32px; color: #4c0519; font-size: 16px; line-height: 1.6;">
|
||||
Hi {{CUSTOMER_NAME}}, your appointment with {{BUSINESS_NAME}} is coming up soon!
|
||||
</p>
|
||||
|
||||
<div style="background-color: #fff1f2; border-radius: 12px; padding: 20px; display: inline-block; width: 100%; box-sizing: border-box;">
|
||||
<p style="margin: 0 0 8px; color: #be123c; font-size: 18px; font-weight: 700;">{{APPOINTMENT_DATE}}</p>
|
||||
<p style="margin: 0; color: #9f1239; font-size: 24px; font-weight: 300;">{{APPOINTMENT_TIME}}</p>
|
||||
</div>
|
||||
|
||||
<p style="margin: 32px 0 0; color: #9ca3af; font-size: 13px;">
|
||||
Need to make changes? <a href="#" style="color: #fb7185; text-decoration: underline;">Reschedule here</a>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<!-- Simple Footer -->
|
||||
<table width="500" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td style="padding-top: 20px; text-align: center;">
|
||||
<p style="margin: 0; color: #f43f5e; font-size: 12px;">
|
||||
{{BUSINESS_NAME}}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
47
email_templates/reminder/urgent_bold.html
Normal file
47
email_templates/reminder/urgent_bold.html
Normal file
@@ -0,0 +1,47 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Reminder - Urgent</title>
|
||||
</head>
|
||||
<body style="margin: 0; padding: 0; background-color: #fef2f2; font-family: 'Arial Black', 'Arial Bold', sans-serif;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td align="center" style="padding: 20px;">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" role="presentation" style="max-width: 600px; border-left: 8px solid #ef4444; background-color: #ffffff;">
|
||||
<tr>
|
||||
<td style="padding: 40px;">
|
||||
<p style="margin: 0 0 10px; color: #ef4444; font-size: 14px; letter-spacing: 1px; text-transform: uppercase;">Action Required</p>
|
||||
<h1 style="margin: 0 0 30px; color: #111827; font-size: 36px; line-height: 1;">
|
||||
Don't Forget<br>Your Visit.
|
||||
</h1>
|
||||
|
||||
<img src="https://placehold.co/520x250/ef4444/ffffff?text=TOMORROW&font=oswald" alt="Tomorrow" style="width: 100%; height: auto; display: block; margin-bottom: 30px;">
|
||||
|
||||
<p style="margin: 0 0 20px; color: #374151; font-family: 'Arial', sans-serif; font-size: 16px; line-height: 1.6;">
|
||||
<strong>{{CUSTOMER_NAME}}</strong>, we're holding your spot for <strong>{{APPOINTMENT_SERVICE}}</strong>.
|
||||
</p>
|
||||
|
||||
<table width="100%" cellpadding="0" cellspacing="0" role="presentation" style="background-color: #111827; color: #ffffff; padding: 20px;">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<p style="margin: 0; font-size: 20px;">{{APPOINTMENT_DATE}} @ {{APPOINTMENT_TIME}}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="background-color: #f3f4f6; padding: 20px; text-align: center;">
|
||||
<p style="margin: 0; color: #6b7280; font-family: 'Arial', sans-serif; font-size: 12px;">
|
||||
{{BUSINESS_NAME}} - {{BUSINESS_PHONE}}
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user