Update routes/emails.py
Browse files- routes/emails.py +210 -8
routes/emails.py
CHANGED
@@ -836,15 +836,217 @@ def generate_email_html(email_type: str, to: str) -> str:
|
|
836 |
</body>
|
837 |
</html>
|
838 |
"""
|
839 |
-
elif email_type == "
|
840 |
return """
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
848 |
"""
|
849 |
# Template padrão
|
850 |
return f"""
|
|
|
836 |
</body>
|
837 |
</html>
|
838 |
"""
|
839 |
+
elif email_type == "newsubscriber":
|
840 |
return """
|
841 |
+
<!DOCTYPE html>
|
842 |
+
<html lang="en">
|
843 |
+
<head>
|
844 |
+
<meta charset="UTF-8">
|
845 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
846 |
+
<title>New Subscriber! - ClosetCoach</title>
|
847 |
+
<style>
|
848 |
+
* {
|
849 |
+
margin: 0;
|
850 |
+
padding: 0;
|
851 |
+
box-sizing: border-box;
|
852 |
+
}
|
853 |
+
|
854 |
+
body {
|
855 |
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
|
856 |
+
background-color: #ffffff;
|
857 |
+
color: #1d1d1f;
|
858 |
+
line-height: 1.6;
|
859 |
+
}
|
860 |
+
|
861 |
+
.email-container {
|
862 |
+
max-width: 600px;
|
863 |
+
margin: 0 auto;
|
864 |
+
background-color: #ffffff;
|
865 |
+
}
|
866 |
+
|
867 |
+
.header {
|
868 |
+
text-align: center;
|
869 |
+
padding: 60px 40px 40px;
|
870 |
+
}
|
871 |
+
|
872 |
+
.logo {
|
873 |
+
font-size: 28px;
|
874 |
+
font-weight: 700;
|
875 |
+
color: #6b46c1;
|
876 |
+
letter-spacing: -0.5px;
|
877 |
+
}
|
878 |
+
|
879 |
+
.hero-section {
|
880 |
+
text-align: center;
|
881 |
+
padding: 0 40px 60px;
|
882 |
+
}
|
883 |
+
|
884 |
+
.hero-image {
|
885 |
+
width: 100%;
|
886 |
+
max-width: 280px;
|
887 |
+
height: 200px;
|
888 |
+
object-fit: cover;
|
889 |
+
margin: 0 auto 50px;
|
890 |
+
border-radius: 20px;
|
891 |
+
box-shadow: 0 20px 40px rgba(107, 70, 193, 0.1);
|
892 |
+
}
|
893 |
+
|
894 |
+
.headline {
|
895 |
+
font-size: 36px;
|
896 |
+
font-weight: 700;
|
897 |
+
color: #1d1d1f;
|
898 |
+
margin-bottom: 24px;
|
899 |
+
line-height: 1.2;
|
900 |
+
letter-spacing: -0.8px;
|
901 |
+
}
|
902 |
+
|
903 |
+
.subheadline {
|
904 |
+
font-size: 20px;
|
905 |
+
font-weight: 400;
|
906 |
+
color: #6e6e73;
|
907 |
+
margin-bottom: 30px;
|
908 |
+
line-height: 1.4;
|
909 |
+
max-width: 480px;
|
910 |
+
margin-left: auto;
|
911 |
+
margin-right: auto;
|
912 |
+
}
|
913 |
+
|
914 |
+
.status-box {
|
915 |
+
background-color: #f0f9ff;
|
916 |
+
border: 1px solid #3b82f6;
|
917 |
+
border-radius: 12px;
|
918 |
+
padding: 20px;
|
919 |
+
margin: 30px 0;
|
920 |
+
max-width: 480px;
|
921 |
+
margin-left: auto;
|
922 |
+
margin-right: auto;
|
923 |
+
}
|
924 |
+
|
925 |
+
.status-title {
|
926 |
+
font-size: 18px;
|
927 |
+
font-weight: 600;
|
928 |
+
color: #1e40af;
|
929 |
+
margin-bottom: 8px;
|
930 |
+
}
|
931 |
+
|
932 |
+
.status-text {
|
933 |
+
font-size: 16px;
|
934 |
+
color: #1e40af;
|
935 |
+
line-height: 1.5;
|
936 |
+
}
|
937 |
+
|
938 |
+
.next-steps {
|
939 |
+
font-size: 18px;
|
940 |
+
font-weight: 400;
|
941 |
+
color: #6e6e73;
|
942 |
+
margin: 30px 0;
|
943 |
+
line-height: 1.4;
|
944 |
+
max-width: 480px;
|
945 |
+
margin-left: auto;
|
946 |
+
margin-right: auto;
|
947 |
+
}
|
948 |
+
|
949 |
+
.cta-button {
|
950 |
+
display: inline-block;
|
951 |
+
background: linear-gradient(135deg, #6b46c1 0%, #8b5cf6 100%);
|
952 |
+
color: #ffffff;
|
953 |
+
text-decoration: none;
|
954 |
+
padding: 16px 40px;
|
955 |
+
border-radius: 50px;
|
956 |
+
font-size: 18px;
|
957 |
+
font-weight: 600;
|
958 |
+
letter-spacing: 0.2px;
|
959 |
+
transition: all 0.3s ease;
|
960 |
+
box-shadow: 0 8px 24px rgba(107, 70, 193, 0.3);
|
961 |
+
margin-bottom: 60px;
|
962 |
+
}
|
963 |
+
|
964 |
+
.cta-button:hover {
|
965 |
+
transform: translateY(-2px);
|
966 |
+
box-shadow: 0 12px 32px rgba(107, 70, 193, 0.4);
|
967 |
+
}
|
968 |
+
|
969 |
+
.footer {
|
970 |
+
text-align: center;
|
971 |
+
padding: 40px;
|
972 |
+
border-top: 1px solid #f5f5f7;
|
973 |
+
margin-top: 40px;
|
974 |
+
}
|
975 |
+
|
976 |
+
.footer-text {
|
977 |
+
font-size: 14px;
|
978 |
+
color: #86868b;
|
979 |
+
margin-bottom: 16px;
|
980 |
+
}
|
981 |
+
|
982 |
+
@media (max-width: 480px) {
|
983 |
+
.header {
|
984 |
+
padding: 40px 20px 20px;
|
985 |
+
}
|
986 |
+
|
987 |
+
.hero-section {
|
988 |
+
padding: 0 20px 40px;
|
989 |
+
}
|
990 |
+
|
991 |
+
.headline {
|
992 |
+
font-size: 28px;
|
993 |
+
}
|
994 |
+
|
995 |
+
.subheadline {
|
996 |
+
font-size: 18px;
|
997 |
+
}
|
998 |
+
|
999 |
+
.footer {
|
1000 |
+
padding: 30px 20px;
|
1001 |
+
}
|
1002 |
+
}
|
1003 |
+
</style>
|
1004 |
+
</head>
|
1005 |
+
<body>
|
1006 |
+
<div class="email-container">
|
1007 |
+
<!-- Header -->
|
1008 |
+
<div class="header">
|
1009 |
+
<div class="logo">ClosetCoach</div>
|
1010 |
+
</div>
|
1011 |
+
|
1012 |
+
<!-- Hero Section -->
|
1013 |
+
<div class="hero-section">
|
1014 |
+
<img src="https://huggingface.co/spaces/habulaj/connect/resolve/main/approve.png" alt="New subscriber illustration" class="hero-image">
|
1015 |
+
|
1016 |
+
<h1 class="headline">You have a new subscriber!</h1>
|
1017 |
+
|
1018 |
+
<p class="subheadline">
|
1019 |
+
Great news! Someone just subscribed to your styling services. Your expertise is in demand and your styling journey continues to grow.
|
1020 |
+
</p>
|
1021 |
+
|
1022 |
+
<div class="status-box">
|
1023 |
+
<div class="status-title">🎉 New Subscriber Alert</div>
|
1024 |
+
<div class="status-text">
|
1025 |
+
A new client has subscribed to your styling services and is ready to work with you. Time to showcase your styling skills!
|
1026 |
+
</div>
|
1027 |
+
</div>
|
1028 |
+
|
1029 |
+
<p class="next-steps">
|
1030 |
+
Open the ClosetCoach app to view your new subscriber's profile, preferences, and start planning their perfect styling experience.
|
1031 |
+
</p>
|
1032 |
+
|
1033 |
+
<a href="https://ameddes.com/app" class="cta-button">Open App to See Details</a>
|
1034 |
+
</div>
|
1035 |
+
|
1036 |
+
<!-- Footer -->
|
1037 |
+
<div class="footer">
|
1038 |
+
<p class="footer-text">
|
1039 |
+
You're receiving this notification because you have a new subscriber on ClosetCoach.<br>
|
1040 |
+
Keep up the great work building your styling business!
|
1041 |
+
</p>
|
1042 |
+
|
1043 |
+
<p class="footer-text" style="margin-top: 24px;">
|
1044 |
+
© 2025 ClosetCoach. All rights reserved.
|
1045 |
+
</p>
|
1046 |
+
</div>
|
1047 |
+
</div>
|
1048 |
+
</body>
|
1049 |
+
</html>
|
1050 |
"""
|
1051 |
# Template padrão
|
1052 |
return f"""
|