diff --git a/src/app/locales/en.json b/src/app/locales/en.json index 02cf5f5..a98f7ac 100644 --- a/src/app/locales/en.json +++ b/src/app/locales/en.json @@ -19,6 +19,14 @@ "title": "Welcome to Ideological Atlas!", "verify_text": "To get started, please verify your email address by clicking the button below:" }, + "register_google": { + "button": "Go to App", + "intro": "You have successfully registered using your Google account. Your identity has been automatically verified, so you can now access all features.", + "salutation": "Best regards,", + "subject": "Welcome to Ideological Atlas!", + "team": "The Ideological Atlas Team", + "title": "Registration Successful" + }, "registration_reminder_30_days": { "button": "Verify and Save Account", "fallback_text": "Direct link:", diff --git a/src/app/locales/es.json b/src/app/locales/es.json index b496b78..54a60ca 100644 --- a/src/app/locales/es.json +++ b/src/app/locales/es.json @@ -19,6 +19,14 @@ "title": "\u00a1Bienvenido a Ideological Atlas!", "verify_text": "Para comenzar, por favor verifica tu direcci\u00f3n de correo electr\u00f3nico haciendo clic en el bot\u00f3n de abajo:" }, + "register_google": { + "button": "Ir a la aplicaci\u00f3n", + "intro": "Te has registrado correctamente utilizando tu cuenta de Google. Tu identidad ha sido verificada autom\u00e1ticamente, por lo que ya puedes acceder a todas las funcionalidades.", + "salutation": "Un saludo,", + "subject": "\u00a1Bienvenido a Ideological Atlas!", + "team": "El equipo de Ideological Atlas", + "title": "Registro Exitoso" + }, "registration_reminder_30_days": { "button": "Verificar y Salvar Cuenta", "fallback_text": "Enlace directo:", diff --git a/src/app/services/email_engine.py b/src/app/services/email_engine.py index 0e78327..0019967 100644 --- a/src/app/services/email_engine.py +++ b/src/app/services/email_engine.py @@ -1,5 +1,6 @@ import json import logging +from datetime import datetime from pathlib import Path import resend @@ -56,6 +57,7 @@ def _render_template( "site_url": settings.BASE_SITE_URL, "project_name": settings.PROJECT_NAME, "t": translations, + "year": datetime.now().year, } final_context = {**global_context, **specific_context} diff --git a/src/templates/register_google/content.html b/src/templates/register_google/content.html new file mode 100644 index 0000000..cc3dac4 --- /dev/null +++ b/src/templates/register_google/content.html @@ -0,0 +1,19 @@ +{% extends "base.html" %} + +{% block subject %}{{ t.register_google.subject }}{% endblock %} + +{% block content %} +

{{ t.register_google.title }}

+

+ {{ t.register_google.intro|safe }} +

+

+ + {{ t.register_google.button }} + +

+

+ {{ t.register_google.salutation }}
+ {{ t.register_google.team }} +

+{% endblock %} diff --git a/src/templates/styles.css b/src/templates/styles.css new file mode 100644 index 0000000..b2e6a1b --- /dev/null +++ b/src/templates/styles.css @@ -0,0 +1,67 @@ +/* Global Colors */ +:root { + --primary-color: #1F4E79; + --danger-color: #D9534F; + --neutral-color: #555555; + --white-color: #ffffff; + --bg-body: #f4f4f4; + --text-main: #333333; + --border-color: #eeeeee; +} + +body { + background-color: #f4f4f4; + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; +} + +/* Headings */ +h1 { + margin-top: 0; +} + +.text-primary { color: #1F4E79; } +.text-danger { color: #D9534F; } +.text-neutral { color: #555555; } + +/* Buttons */ +.btn { + color: #ffffff !important; + padding: 12px 25px; + text-decoration: none; + border-radius: 5px; + font-weight: bold; + display: inline-block; +} + +.btn-primary { background-color: #1F4E79; } +.btn-danger { background-color: #D9534F; } +.btn-neutral { background-color: #555555; } + +/* Links */ +.link-fallback { + word-break: break-all; + font-size: 14px; +} + +/* Utilities */ +.text-center { text-align: center; } +.py-20 { padding: 20px 0; } +.mt-30 { margin-top: 30px; } +.border-top { border-top: 1px solid #eeeeee; } +.pt-20 { padding-top: 20px; } + +/* Layout specific */ +.email-container { + background-color: #ffffff; + max-width: 600px; + width: 100%; + border-radius: 8px; + overflow: hidden; + box-shadow: 0px 2px 8px rgba(0,0,0,0.05); +} + +.content-cell { + padding: 30px; + color: #333333; + font-size: 16px; +}