puffin-app/server/templates/admin-notification.hbs
Matt 7bdd462be9
Some checks failed
Build and Push Docker Images / docker (push) Has been cancelled
Implement comprehensive email templates with SMTP integration
- Add beautiful HTML email templates for receipts, admin notifications, and contact forms
- Implement SMTP email service with Nodemailer and Handlebars templating
- Add carbon equivalency calculations with EPA/DEFRA/IMO 2024 conversion factors
- Add portfolio color palette system for project visualization
- Integrate Wren API portfolio fetching in webhook handler
- Add light mode enforcement for email client compatibility
- Include Puffin logo from MinIO S3 in all templates
- Add test email endpoint for template validation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 20:09:31 +01:00

204 lines
5.5 KiB
Handlebars

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="color-scheme" content="light only">
<meta name="supported-color-schemes" content="light">
<title>New Order Notification - Puffin Offset</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
line-height: 1.6;
color: #1e293b;
background-color: #f8fafc;
margin: 0;
padding: 0;
color-scheme: light only;
}
.container {
max-width: 600px;
margin: 0 auto;
background-color: #ffffff;
}
.header {
background: linear-gradient(135deg, #10b981 0%, #059669 100%);
padding: 30px 20px;
text-align: center;
color: #ffffff;
}
.logo {
width: 100px;
height: auto;
margin-bottom: 15px;
}
.header h1 {
margin: 0 0 5px 0;
font-size: 26px;
font-weight: bold;
}
.header p {
margin: 0;
font-size: 14px;
opacity: 0.9;
}
.content {
padding: 30px;
}
.alert-box {
background: linear-gradient(135deg, #d1fae5 0%, #a7f3d0 100%);
border-left: 4px solid #10b981;
border-radius: 8px;
padding: 20px;
margin: 20px 0;
}
.alert-box h2 {
margin: 0 0 10px 0;
color: #065f46;
font-size: 20px;
}
.alert-box .amount {
font-size: 36px;
font-weight: bold;
color: #047857;
margin: 10px 0;
}
.order-details {
background-color: #f8fafc;
border-radius: 8px;
padding: 20px;
margin: 20px 0;
}
.detail-row {
display: flex;
justify-content: space-between;
padding: 10px 0;
border-bottom: 1px solid #e2e8f0;
}
.detail-row:last-child {
border-bottom: none;
}
.detail-label {
color: #64748b;
font-weight: 500;
}
.detail-value {
color: #1e293b;
font-weight: 600;
text-align: right;
}
.customer-box {
background-color: #ffffff;
border: 2px solid #e0e7ff;
border-radius: 8px;
padding: 20px;
margin: 20px 0;
}
.customer-box h3 {
margin: 0 0 15px 0;
color: #4f46e5;
font-size: 16px;
}
.customer-email {
color: #3b82f6;
text-decoration: none;
font-size: 16px;
font-weight: 600;
}
.customer-email:hover {
text-decoration: underline;
}
.footer {
background-color: #f8fafc;
padding: 20px;
text-align: center;
color: #94a3b8;
font-size: 12px;
}
.timestamp {
color: #94a3b8;
font-size: 12px;
text-align: center;
margin-top: 20px;
}
/* Force light mode for email clients */
@media (prefers-color-scheme: dark) {
body {
background-color: #f8fafc !important;
color: #1e293b !important;
}
.container {
background-color: #ffffff !important;
}
.alert-box {
background: linear-gradient(135deg, #d1fae5 0%, #a7f3d0 100%) !important;
}
.order-details, .customer-box {
background-color: #f8fafc !important;
}
.detail-label, .detail-value {
color: #0f172a !important;
}
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<img src="https://s3.puffinoffset.com/public/puffinOffset.png" alt="Puffin Offset" class="logo">
<h1>🎉 New Order Received!</h1>
<p>A customer just completed a carbon offset purchase</p>
</div>
<div class="content">
<div class="alert-box">
<h2>Order Value</h2>
<div class="amount">${{totalAmount}}</div>
<p style="margin: 5px 0 0 0; color: #047857; font-size: 14px;">
{{tons}} tons CO₂ offset
</p>
</div>
<div class="order-details" style="background-color: #f8fafc !important;">
<div class="detail-row">
<span class="detail-label" style="color: #475569 !important;">Portfolio</span>
<span class="detail-value" style="color: #0f172a !important;">#{{portfolioId}}</span>
</div>
<div class="detail-row">
<span class="detail-label" style="color: #475569 !important;">Order ID</span>
<span class="detail-value" style="color: #0f172a !important;">{{orderId}}</span>
</div>
<div class="detail-row">
<span class="detail-label" style="color: #475569 !important;">Carbon Offset</span>
<span class="detail-value" style="color: #0f172a !important;">{{tons}} tons CO₂</span>
</div>
<div class="detail-row">
<span class="detail-label" style="color: #475569 !important;">Total Amount</span>
<span class="detail-value" style="color: #0f172a !important;">${{totalAmount}}</span>
</div>
</div>
<div class="customer-box">
<h3>Customer Information</h3>
<p>
<a href="mailto:{{customerEmail}}" class="customer-email">{{customerEmail}}</a>
</p>
</div>
<p style="color: #64748b; font-size: 14px; text-align: center; margin-top: 30px;">
The order has been processed successfully and the customer will receive their receipt email shortly.
</p>
<div class="timestamp">
Order received: {{timestamp}}
</div>
</div>
<div class="footer">
<p>This is an automated notification from Puffin Offset.</p>
<p>&copy; 2025 Puffin Offset</p>
</div>
</div>
</body>
</html>