mirror of https://github.com/buster-so/buster.git
Added some templates
This commit is contained in:
parent
299ed5d697
commit
31ce0574cd
|
@ -120,10 +120,26 @@ max_frequency = "1s"
|
|||
# admin_email = "admin@email.com"
|
||||
# sender_name = "Admin"
|
||||
|
||||
# Uncomment to customize email template
|
||||
# [auth.email.template.invite]
|
||||
# subject = "You have been invited"
|
||||
# content_path = "./supabase/templates/invite.html"
|
||||
# Email templates
|
||||
[auth.email.template.invite]
|
||||
subject = "You've been invited to join Buster"
|
||||
content_path = "./supabase/templates/invite.html"
|
||||
|
||||
[auth.email.template.confirmation]
|
||||
subject = "Confirm your email address - Buster"
|
||||
content_path = "./supabase/templates/confirmation.html"
|
||||
|
||||
[auth.email.template.recovery]
|
||||
subject = "Reset your password - Buster"
|
||||
content_path = "./supabase/templates/recovery.html"
|
||||
|
||||
[auth.email.template.magic_link]
|
||||
subject = "Your magic link to sign in - Buster"
|
||||
content_path = "./supabase/templates/magic_link.html"
|
||||
|
||||
[auth.email.template.email_change]
|
||||
subject = "Confirm your email change - Buster"
|
||||
content_path = "./supabase/templates/email_change.html"
|
||||
|
||||
[auth.sms]
|
||||
# Allow/disallow new user signups via SMS to your project.
|
||||
|
|
|
@ -0,0 +1,149 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Confirm your email address - Buster</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
|
||||
margin: 0;
|
||||
padding: 20px;
|
||||
}
|
||||
.container {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: #ffffff;
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
|
||||
overflow: hidden;
|
||||
}
|
||||
.header {
|
||||
background: linear-gradient(135deg, #ffffff 0%, #f1f3f4 100%);
|
||||
padding: 40px 40px 20px;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid #e9ecef;
|
||||
}
|
||||
.logo {
|
||||
font-size: 28px;
|
||||
font-weight: 700;
|
||||
color: #1a1a1a;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.subtitle {
|
||||
color: #6c757d;
|
||||
font-size: 16px;
|
||||
margin: 0;
|
||||
}
|
||||
.content {
|
||||
padding: 40px;
|
||||
}
|
||||
.greeting {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
color: #1a1a1a;
|
||||
margin: 0 0 20px;
|
||||
}
|
||||
.message {
|
||||
font-size: 16px;
|
||||
color: #495057;
|
||||
margin: 0 0 30px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.cta-button {
|
||||
display: inline-block;
|
||||
background: #28a745;
|
||||
color: #ffffff !important;
|
||||
text-decoration: none;
|
||||
padding: 14px 30px;
|
||||
border-radius: 8px;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
margin: 20px 0;
|
||||
transition: background-color 0.3s ease;
|
||||
}
|
||||
.cta-button:hover {
|
||||
background: #1e7e34;
|
||||
}
|
||||
.footer {
|
||||
background: #f8f9fa;
|
||||
padding: 30px 40px;
|
||||
text-align: center;
|
||||
border-top: 1px solid #e9ecef;
|
||||
}
|
||||
.footer-text {
|
||||
color: #6c757d;
|
||||
font-size: 14px;
|
||||
margin: 0 0 10px;
|
||||
}
|
||||
.footer-link {
|
||||
color: #007bff;
|
||||
text-decoration: none;
|
||||
}
|
||||
.security-note {
|
||||
background: #f8f9fa;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 6px;
|
||||
padding: 15px;
|
||||
margin: 20px 0;
|
||||
font-size: 14px;
|
||||
color: #6c757d;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.container {
|
||||
border-radius: 0;
|
||||
margin: 0 -20px;
|
||||
}
|
||||
.header,
|
||||
.content,
|
||||
.footer {
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<div class="logo">Buster</div>
|
||||
<p class="subtitle">Please confirm your email address</p>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<h1 class="greeting">Almost there!</h1>
|
||||
|
||||
<p class="message">
|
||||
Thanks for signing up for Buster! To complete your registration, please confirm your email address by clicking the button below.
|
||||
</p>
|
||||
|
||||
<div style="text-align: center;">
|
||||
<a href="{{ .RedirectTo }}" class="cta-button">Confirm Email Address</a>
|
||||
</div>
|
||||
|
||||
<div class="security-note">
|
||||
<strong>Security note:</strong> This confirmation link will expire in 24 hours. If you didn't create an account with us, you can safely ignore this email.
|
||||
</div>
|
||||
|
||||
<p class="message">
|
||||
If the button doesn't work, you can copy and paste this link into your browser:<br>
|
||||
<a href="{{ .RedirectTo }}" style="color: #007bff; word-break: break-all;">{{ .RedirectTo }}</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p class="footer-text">
|
||||
This email was sent by Buster. If you have any questions, please contact our support team.
|
||||
</p>
|
||||
<p class="footer-text">
|
||||
<a href="#" class="footer-link">Privacy Policy</a> •
|
||||
<a href="#" class="footer-link">Terms of Service</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,153 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Confirm your email change - Buster</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
|
||||
margin: 0;
|
||||
padding: 20px;
|
||||
}
|
||||
.container {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: #ffffff;
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
|
||||
overflow: hidden;
|
||||
}
|
||||
.header {
|
||||
background: linear-gradient(135deg, #ffffff 0%, #f1f3f4 100%);
|
||||
padding: 40px 40px 20px;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid #e9ecef;
|
||||
}
|
||||
.logo {
|
||||
font-size: 28px;
|
||||
font-weight: 700;
|
||||
color: #1a1a1a;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.subtitle {
|
||||
color: #6c757d;
|
||||
font-size: 16px;
|
||||
margin: 0;
|
||||
}
|
||||
.content {
|
||||
padding: 40px;
|
||||
}
|
||||
.greeting {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
color: #1a1a1a;
|
||||
margin: 0 0 20px;
|
||||
}
|
||||
.message {
|
||||
font-size: 16px;
|
||||
color: #495057;
|
||||
margin: 0 0 30px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.cta-button {
|
||||
display: inline-block;
|
||||
background: #fd7e14;
|
||||
color: #ffffff !important;
|
||||
text-decoration: none;
|
||||
padding: 14px 30px;
|
||||
border-radius: 8px;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
margin: 20px 0;
|
||||
transition: background-color 0.3s ease;
|
||||
}
|
||||
.cta-button:hover {
|
||||
background: #e8590c;
|
||||
}
|
||||
.footer {
|
||||
background: #f8f9fa;
|
||||
padding: 30px 40px;
|
||||
text-align: center;
|
||||
border-top: 1px solid #e9ecef;
|
||||
}
|
||||
.footer-text {
|
||||
color: #6c757d;
|
||||
font-size: 14px;
|
||||
margin: 0 0 10px;
|
||||
}
|
||||
.footer-link {
|
||||
color: #007bff;
|
||||
text-decoration: none;
|
||||
}
|
||||
.security-note {
|
||||
background: #fff3cd;
|
||||
border: 1px solid #ffeaa7;
|
||||
border-radius: 6px;
|
||||
padding: 15px;
|
||||
margin: 20px 0;
|
||||
font-size: 14px;
|
||||
color: #856404;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.container {
|
||||
border-radius: 0;
|
||||
margin: 0 -20px;
|
||||
}
|
||||
.header,
|
||||
.content,
|
||||
.footer {
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<div class="logo">Buster</div>
|
||||
<p class="subtitle">Confirm your email address change</p>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<h1 class="greeting">Confirm email change</h1>
|
||||
|
||||
<p class="message">
|
||||
You've requested to change your email address on your Buster account. To complete this change, please confirm your new email address by clicking the button below.
|
||||
</p>
|
||||
|
||||
<div style="text-align: center;">
|
||||
<a href="{{ .ConfirmationURL }}" class="cta-button">Confirm New Email</a>
|
||||
</div>
|
||||
|
||||
<div class="security-note">
|
||||
<strong>Important:</strong> This confirmation link will expire in 24 hours. If you didn't request this email change, please contact our support team immediately.
|
||||
</div>
|
||||
|
||||
<p class="message">
|
||||
If the button doesn't work, you can copy and paste this link into your browser:<br>
|
||||
<a href="{{ .ConfirmationURL }}" style="color: #007bff; word-break: break-all;">{{ .ConfirmationURL }}</a>
|
||||
</p>
|
||||
|
||||
<p class="message">
|
||||
After confirming, you'll need to use your new email address to sign in to your account.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p class="footer-text">
|
||||
This email was sent by Buster. If you have any questions, please contact our support team.
|
||||
</p>
|
||||
<p class="footer-text">
|
||||
<a href="#" class="footer-link">Privacy Policy</a> •
|
||||
<a href="#" class="footer-link">Terms of Service</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,149 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>You've been invited to join Buster</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
|
||||
margin: 0;
|
||||
padding: 20px;
|
||||
}
|
||||
.container {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: #ffffff;
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
|
||||
overflow: hidden;
|
||||
}
|
||||
.header {
|
||||
background: linear-gradient(135deg, #ffffff 0%, #f1f3f4 100%);
|
||||
padding: 40px 40px 20px;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid #e9ecef;
|
||||
}
|
||||
.logo {
|
||||
font-size: 28px;
|
||||
font-weight: 700;
|
||||
color: #1a1a1a;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.subtitle {
|
||||
color: #6c757d;
|
||||
font-size: 16px;
|
||||
margin: 0;
|
||||
}
|
||||
.content {
|
||||
padding: 40px;
|
||||
}
|
||||
.greeting {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
color: #1a1a1a;
|
||||
margin: 0 0 20px;
|
||||
}
|
||||
.message {
|
||||
font-size: 16px;
|
||||
color: #495057;
|
||||
margin: 0 0 30px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.cta-button {
|
||||
display: inline-block;
|
||||
background: #007bff;
|
||||
color: #ffffff !important;
|
||||
text-decoration: none;
|
||||
padding: 14px 30px;
|
||||
border-radius: 8px;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
margin: 20px 0;
|
||||
transition: background-color 0.3s ease;
|
||||
}
|
||||
.cta-button:hover {
|
||||
background: #0056b3;
|
||||
}
|
||||
.footer {
|
||||
background: #f8f9fa;
|
||||
padding: 30px 40px;
|
||||
text-align: center;
|
||||
border-top: 1px solid #e9ecef;
|
||||
}
|
||||
.footer-text {
|
||||
color: #6c757d;
|
||||
font-size: 14px;
|
||||
margin: 0 0 10px;
|
||||
}
|
||||
.footer-link {
|
||||
color: #007bff;
|
||||
text-decoration: none;
|
||||
}
|
||||
.security-note {
|
||||
background: #f8f9fa;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 6px;
|
||||
padding: 15px;
|
||||
margin: 20px 0;
|
||||
font-size: 14px;
|
||||
color: #6c757d;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.container {
|
||||
border-radius: 0;
|
||||
margin: 0 -20px;
|
||||
}
|
||||
.header,
|
||||
.content,
|
||||
.footer {
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<div class="logo">Buster</div>
|
||||
<p class="subtitle">You've been invited to join our platform</p>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<h1 class="greeting">Welcome!</h1>
|
||||
|
||||
<p class="message">
|
||||
You've been invited to join Buster. Click the button below to accept your invitation and set up your account.
|
||||
</p>
|
||||
|
||||
<div style="text-align: center;">
|
||||
<a href="{{ .RedirectTo }}" class="cta-button">Accept Invitation</a>
|
||||
</div>
|
||||
|
||||
<div class="security-note">
|
||||
<strong>Security note:</strong> This invitation link will expire in 24 hours. If you didn't expect this invitation, you can safely ignore this email.
|
||||
</div>
|
||||
|
||||
<p class="message">
|
||||
If the button doesn't work, you can copy and paste this link into your browser:<br>
|
||||
<a href="{{ .RedirectTo }}" style="color: #007bff; word-break: break-all;">{{ .RedirectTo }}</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p class="footer-text">
|
||||
This email was sent by Buster. If you have any questions, please contact our support team.
|
||||
</p>
|
||||
<p class="footer-text">
|
||||
<a href="#" class="footer-link">Privacy Policy</a> •
|
||||
<a href="#" class="footer-link">Terms of Service</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,153 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Your magic link to sign in - Buster</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
|
||||
margin: 0;
|
||||
padding: 20px;
|
||||
}
|
||||
.container {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: #ffffff;
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
|
||||
overflow: hidden;
|
||||
}
|
||||
.header {
|
||||
background: linear-gradient(135deg, #ffffff 0%, #f1f3f4 100%);
|
||||
padding: 40px 40px 20px;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid #e9ecef;
|
||||
}
|
||||
.logo {
|
||||
font-size: 28px;
|
||||
font-weight: 700;
|
||||
color: #1a1a1a;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.subtitle {
|
||||
color: #6c757d;
|
||||
font-size: 16px;
|
||||
margin: 0;
|
||||
}
|
||||
.content {
|
||||
padding: 40px;
|
||||
}
|
||||
.greeting {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
color: #1a1a1a;
|
||||
margin: 0 0 20px;
|
||||
}
|
||||
.message {
|
||||
font-size: 16px;
|
||||
color: #495057;
|
||||
margin: 0 0 30px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.cta-button {
|
||||
display: inline-block;
|
||||
background: #6f42c1;
|
||||
color: #ffffff !important;
|
||||
text-decoration: none;
|
||||
padding: 14px 30px;
|
||||
border-radius: 8px;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
margin: 20px 0;
|
||||
transition: background-color 0.3s ease;
|
||||
}
|
||||
.cta-button:hover {
|
||||
background: #5a32a3;
|
||||
}
|
||||
.footer {
|
||||
background: #f8f9fa;
|
||||
padding: 30px 40px;
|
||||
text-align: center;
|
||||
border-top: 1px solid #e9ecef;
|
||||
}
|
||||
.footer-text {
|
||||
color: #6c757d;
|
||||
font-size: 14px;
|
||||
margin: 0 0 10px;
|
||||
}
|
||||
.footer-link {
|
||||
color: #007bff;
|
||||
text-decoration: none;
|
||||
}
|
||||
.security-note {
|
||||
background: #e7e3ff;
|
||||
border: 1px solid #c3b5f7;
|
||||
border-radius: 6px;
|
||||
padding: 15px;
|
||||
margin: 20px 0;
|
||||
font-size: 14px;
|
||||
color: #4c2c92;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.container {
|
||||
border-radius: 0;
|
||||
margin: 0 -20px;
|
||||
}
|
||||
.header,
|
||||
.content,
|
||||
.footer {
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<div class="logo">Buster</div>
|
||||
<p class="subtitle">Your magic link to sign in</p>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<h1 class="greeting">Sign in to Buster</h1>
|
||||
|
||||
<p class="message">
|
||||
Click the button below to securely sign in to your Buster account. No password required!
|
||||
</p>
|
||||
|
||||
<div style="text-align: center;">
|
||||
<a href="{{ .ConfirmationURL }}" class="cta-button">Sign In with Magic Link</a>
|
||||
</div>
|
||||
|
||||
<div class="security-note">
|
||||
<strong>Security note:</strong> This magic link will expire in 5 minutes for your security. If you didn't request this sign-in link, you can safely ignore this email.
|
||||
</div>
|
||||
|
||||
<p class="message">
|
||||
If the button doesn't work, you can copy and paste this link into your browser:<br>
|
||||
<a href="{{ .ConfirmationURL }}" style="color: #007bff; word-break: break-all;">{{ .ConfirmationURL }}</a>
|
||||
</p>
|
||||
|
||||
<p class="message">
|
||||
For security reasons, this link can only be used once and will expire automatically.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p class="footer-text">
|
||||
This email was sent by Buster. If you have any questions, please contact our support team.
|
||||
</p>
|
||||
<p class="footer-text">
|
||||
<a href="#" class="footer-link">Privacy Policy</a> •
|
||||
<a href="#" class="footer-link">Terms of Service</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,153 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Reset your password - Buster</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
|
||||
margin: 0;
|
||||
padding: 20px;
|
||||
}
|
||||
.container {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: #ffffff;
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
|
||||
overflow: hidden;
|
||||
}
|
||||
.header {
|
||||
background: linear-gradient(135deg, #ffffff 0%, #f1f3f4 100%);
|
||||
padding: 40px 40px 20px;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid #e9ecef;
|
||||
}
|
||||
.logo {
|
||||
font-size: 28px;
|
||||
font-weight: 700;
|
||||
color: #1a1a1a;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.subtitle {
|
||||
color: #6c757d;
|
||||
font-size: 16px;
|
||||
margin: 0;
|
||||
}
|
||||
.content {
|
||||
padding: 40px;
|
||||
}
|
||||
.greeting {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
color: #1a1a1a;
|
||||
margin: 0 0 20px;
|
||||
}
|
||||
.message {
|
||||
font-size: 16px;
|
||||
color: #495057;
|
||||
margin: 0 0 30px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.cta-button {
|
||||
display: inline-block;
|
||||
background: #dc3545;
|
||||
color: #ffffff !important;
|
||||
text-decoration: none;
|
||||
padding: 14px 30px;
|
||||
border-radius: 8px;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
margin: 20px 0;
|
||||
transition: background-color 0.3s ease;
|
||||
}
|
||||
.cta-button:hover {
|
||||
background: #c82333;
|
||||
}
|
||||
.footer {
|
||||
background: #f8f9fa;
|
||||
padding: 30px 40px;
|
||||
text-align: center;
|
||||
border-top: 1px solid #e9ecef;
|
||||
}
|
||||
.footer-text {
|
||||
color: #6c757d;
|
||||
font-size: 14px;
|
||||
margin: 0 0 10px;
|
||||
}
|
||||
.footer-link {
|
||||
color: #007bff;
|
||||
text-decoration: none;
|
||||
}
|
||||
.security-note {
|
||||
background: #fff3cd;
|
||||
border: 1px solid #ffeaa7;
|
||||
border-radius: 6px;
|
||||
padding: 15px;
|
||||
margin: 20px 0;
|
||||
font-size: 14px;
|
||||
color: #856404;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.container {
|
||||
border-radius: 0;
|
||||
margin: 0 -20px;
|
||||
}
|
||||
.header,
|
||||
.content,
|
||||
.footer {
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<div class="logo">Buster</div>
|
||||
<p class="subtitle">Password reset request</p>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<h1 class="greeting">Reset your password</h1>
|
||||
|
||||
<p class="message">
|
||||
We received a request to reset the password for your Buster account. If you made this request, click the button below to create a new password.
|
||||
</p>
|
||||
|
||||
<div style="text-align: center;">
|
||||
<a href="{{ .RedirectTo }}" class="cta-button">Reset Password</a>
|
||||
</div>
|
||||
|
||||
<div class="security-note">
|
||||
<strong>Important:</strong> This password reset link will expire in 1 hour for security reasons. If you didn't request a password reset, please ignore this email and your password will remain unchanged.
|
||||
</div>
|
||||
|
||||
<p class="message">
|
||||
If the button doesn't work, you can copy and paste this link into your browser:<br>
|
||||
<a href="{{ .RedirectTo }}" style="color: #007bff; word-break: break-all;">{{ .RedirectTo }}</a>
|
||||
</p>
|
||||
|
||||
<p class="message">
|
||||
If you continue to have problems, please contact our support team.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p class="footer-text">
|
||||
This email was sent by Buster. If you have any questions, please contact our support team.
|
||||
</p>
|
||||
<p class="footer-text">
|
||||
<a href="#" class="footer-link">Privacy Policy</a> •
|
||||
<a href="#" class="footer-link">Terms of Service</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,4 +1,3 @@
|
|||
import type { UserResponse } from '@buster/server-shared/user';
|
||||
import type { User } from '@supabase/supabase-js';
|
||||
import { useRouter } from '@tanstack/react-router';
|
||||
import type React from 'react';
|
||||
|
|
Loading…
Reference in New Issue