@lastbrain/module-auth 2.0.27 → 2.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/README.md +55 -7
  2. package/dist/api/admin/signup-stats.d.ts.map +1 -1
  3. package/dist/api/admin/signup-stats.js +2 -1
  4. package/dist/api/admin/storage/usage.d.ts +18 -0
  5. package/dist/api/admin/storage/usage.d.ts.map +1 -0
  6. package/dist/api/admin/storage/usage.js +100 -0
  7. package/dist/api/admin/users/[id]/notifications.d.ts.map +1 -1
  8. package/dist/api/admin/users/[id]/notifications.js +3 -2
  9. package/dist/api/admin/users/[id].d.ts.map +1 -1
  10. package/dist/api/admin/users/[id].js +3 -2
  11. package/dist/api/admin/users/reactivate/[id].d.ts +16 -0
  12. package/dist/api/admin/users/reactivate/[id].d.ts.map +1 -0
  13. package/dist/api/admin/users/reactivate/[id].js +59 -0
  14. package/dist/api/admin/users/suspend/[id].d.ts +16 -0
  15. package/dist/api/admin/users/suspend/[id].d.ts.map +1 -0
  16. package/dist/api/admin/users/suspend/[id].js +59 -0
  17. package/dist/api/admin/users-by-source.d.ts.map +1 -1
  18. package/dist/api/admin/users-by-source.js +2 -1
  19. package/dist/api/admin/users.d.ts.map +1 -1
  20. package/dist/api/admin/users.js +53 -2
  21. package/dist/api/auth/account/email-change.d.ts +7 -0
  22. package/dist/api/auth/account/email-change.d.ts.map +1 -0
  23. package/dist/api/auth/account/email-change.js +39 -0
  24. package/dist/api/auth/account/reset-password.d.ts +7 -0
  25. package/dist/api/auth/account/reset-password.d.ts.map +1 -0
  26. package/dist/api/auth/account/reset-password.js +36 -0
  27. package/dist/api/auth/check-username.d.ts +9 -0
  28. package/dist/api/auth/check-username.d.ts.map +1 -0
  29. package/dist/api/auth/check-username.js +35 -0
  30. package/dist/api/auth/establish-session.d.ts +2 -0
  31. package/dist/api/auth/establish-session.d.ts.map +1 -0
  32. package/dist/api/auth/establish-session.js +23 -0
  33. package/dist/api/auth/me.d.ts +4 -4
  34. package/dist/api/auth/me.d.ts.map +1 -1
  35. package/dist/api/auth/me.js +28 -6
  36. package/dist/api/auth/profile.d.ts.map +1 -1
  37. package/dist/api/auth/profile.js +6 -3
  38. package/dist/api/auth/storage/recalculate.d.ts +15 -0
  39. package/dist/api/auth/storage/recalculate.d.ts.map +1 -0
  40. package/dist/api/auth/storage/recalculate.js +68 -0
  41. package/dist/api/auth/storage/usage.d.ts +10 -0
  42. package/dist/api/auth/storage/usage.d.ts.map +1 -0
  43. package/dist/api/auth/storage/usage.js +86 -0
  44. package/dist/api/public/add-welcome-bonus.d.ts +16 -0
  45. package/dist/api/public/add-welcome-bonus.d.ts.map +1 -0
  46. package/dist/api/public/add-welcome-bonus.js +177 -0
  47. package/dist/api/public/callback.d.ts +3 -0
  48. package/dist/api/public/callback.d.ts.map +1 -0
  49. package/dist/api/public/callback.js +197 -0
  50. package/dist/api/public/reset-password.d.ts +3 -0
  51. package/dist/api/public/reset-password.d.ts.map +1 -0
  52. package/dist/api/public/reset-password.js +43 -0
  53. package/dist/api/public/set-session.d.ts +7 -0
  54. package/dist/api/public/set-session.d.ts.map +1 -0
  55. package/dist/api/public/set-session.js +55 -0
  56. package/dist/api/public/signin.d.ts.map +1 -1
  57. package/dist/api/public/signin.js +31 -0
  58. package/dist/api/public/signup.d.ts.map +1 -1
  59. package/dist/api/public/signup.js +38 -27
  60. package/dist/api/public/webhook/storage-addon.d.ts +9 -0
  61. package/dist/api/public/webhook/storage-addon.d.ts.map +1 -0
  62. package/dist/api/public/webhook/storage-addon.js +155 -0
  63. package/dist/api/storage.js +2 -2
  64. package/dist/auth.build.config.d.ts.map +1 -1
  65. package/dist/auth.build.config.js +126 -11
  66. package/dist/components/AccountButton.d.ts.map +1 -1
  67. package/dist/components/AccountButton.js +54 -28
  68. package/dist/components/Doc.d.ts.map +1 -1
  69. package/dist/components/Doc.js +1 -1
  70. package/dist/components/HasProfil.d.ts +4 -0
  71. package/dist/components/HasProfil.d.ts.map +1 -0
  72. package/dist/components/HasProfil.js +39 -0
  73. package/dist/components/auth/dashboard.d.ts +1 -1
  74. package/dist/components/auth/dashboard.d.ts.map +1 -1
  75. package/dist/components/auth/dashboard.js +34 -7
  76. package/dist/index.d.ts +2 -0
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +2 -0
  79. package/dist/lib/app-branding-data.d.ts +22 -0
  80. package/dist/lib/app-branding-data.d.ts.map +1 -0
  81. package/dist/lib/app-branding-data.js +49 -0
  82. package/dist/lib/auth-email-service.d.ts +57 -0
  83. package/dist/lib/auth-email-service.d.ts.map +1 -0
  84. package/dist/lib/auth-email-service.js +382 -0
  85. package/dist/lib/auth-email-templates.d.ts +2 -0
  86. package/dist/lib/auth-email-templates.d.ts.map +1 -0
  87. package/dist/lib/auth-email-templates.js +1 -0
  88. package/dist/lib/site-url.d.ts +3 -0
  89. package/dist/lib/site-url.d.ts.map +1 -0
  90. package/dist/lib/site-url.js +11 -0
  91. package/dist/sitemap/manifest.d.ts +9 -0
  92. package/dist/sitemap/manifest.d.ts.map +1 -0
  93. package/dist/sitemap/manifest.js +14 -0
  94. package/dist/web/admin/signup-stats.js +3 -3
  95. package/dist/web/admin/user-detail.d.ts.map +1 -1
  96. package/dist/web/admin/user-detail.js +135 -14
  97. package/dist/web/admin/users-by-signup-source.js +2 -2
  98. package/dist/web/admin/users.d.ts.map +1 -1
  99. package/dist/web/admin/users.js +26 -7
  100. package/dist/web/auth/folder.d.ts.map +1 -1
  101. package/dist/web/auth/folder.js +4 -3
  102. package/dist/web/auth/profile.d.ts.map +1 -1
  103. package/dist/web/auth/profile.js +132 -13
  104. package/dist/web/auth/reglage.d.ts.map +1 -1
  105. package/dist/web/auth/reglage.js +15 -8
  106. package/dist/web/public/ResetPassword.d.ts.map +1 -1
  107. package/dist/web/public/ResetPassword.js +172 -2
  108. package/dist/web/public/SignInPage.d.ts.map +1 -1
  109. package/dist/web/public/SignInPage.js +39 -3
  110. package/dist/web/public/SignUpPage.d.ts.map +1 -1
  111. package/dist/web/public/SignUpPage.js +7 -2
  112. package/dist/web/public/auth-code-error.d.ts +2 -0
  113. package/dist/web/public/auth-code-error.d.ts.map +1 -0
  114. package/dist/web/public/auth-code-error.js +14 -0
  115. package/dist/web/public/confirm.d.ts +2 -0
  116. package/dist/web/public/confirm.d.ts.map +1 -0
  117. package/dist/web/public/confirm.js +157 -0
  118. package/package.json +10 -5
  119. package/src/api/admin/signup-stats.ts +2 -1
  120. package/src/api/admin/storage/usage.ts +141 -0
  121. package/src/api/admin/users/[id]/notifications.ts +3 -2
  122. package/src/api/admin/users/[id].ts +3 -2
  123. package/src/api/admin/users/reactivate/[id].ts +88 -0
  124. package/src/api/admin/users/suspend/[id].ts +85 -0
  125. package/src/api/admin/users-by-source.ts +2 -1
  126. package/src/api/admin/users.ts +59 -2
  127. package/src/api/auth/account/email-change.ts +54 -0
  128. package/src/api/auth/account/reset-password.ts +47 -0
  129. package/src/api/auth/check-username.ts +52 -0
  130. package/src/api/auth/establish-session.ts +32 -0
  131. package/src/api/auth/me.ts +29 -7
  132. package/src/api/auth/profile.ts +6 -2
  133. package/src/api/auth/storage/recalculate.ts +108 -0
  134. package/src/api/auth/storage/usage.ts +113 -0
  135. package/src/api/public/add-welcome-bonus.ts +229 -0
  136. package/src/api/public/callback.ts +307 -0
  137. package/src/api/public/reset-password.ts +52 -0
  138. package/src/api/public/set-session.ts +73 -0
  139. package/src/api/public/signin.ts +36 -0
  140. package/src/api/public/signup.ts +44 -37
  141. package/src/api/public/webhook/storage-addon.ts +267 -0
  142. package/src/api/storage.ts +2 -2
  143. package/src/auth.build.config.ts +126 -11
  144. package/src/components/AccountButton.tsx +114 -90
  145. package/src/components/Doc.tsx +47 -9
  146. package/src/components/HasProfil.tsx +63 -0
  147. package/src/components/auth/dashboard.tsx +54 -13
  148. package/src/i18n/en.json +76 -8
  149. package/src/i18n/es.json +330 -0
  150. package/src/i18n/fr.json +74 -8
  151. package/src/index.ts +2 -0
  152. package/src/lib/app-branding-data.ts +90 -0
  153. package/src/lib/auth-email-service.ts +508 -0
  154. package/src/lib/auth-email-templates.ts +5 -0
  155. package/src/lib/site-url.ts +17 -0
  156. package/src/sitemap/manifest.ts +26 -0
  157. package/src/web/admin/signup-stats.tsx +3 -3
  158. package/src/web/admin/user-detail.tsx +314 -15
  159. package/src/web/admin/users-by-signup-source.tsx +2 -2
  160. package/src/web/admin/users.tsx +50 -14
  161. package/src/web/auth/folder.tsx +23 -5
  162. package/src/web/auth/profile.tsx +227 -13
  163. package/src/web/auth/reglage.tsx +55 -24
  164. package/src/web/public/ResetPassword.tsx +301 -1
  165. package/src/web/public/SignInPage.tsx +43 -3
  166. package/src/web/public/SignUpPage.tsx +14 -5
  167. package/src/web/public/auth-code-error.tsx +49 -0
  168. package/src/web/public/confirm.tsx +195 -0
  169. package/supabase/migrations/20251112000001_auto_profile_and_admin_view.sql +3 -1
  170. package/supabase/migrations/20251127100000_rename_body_to_message.sql +8 -3
  171. package/supabase/migrations/20260120150001_add_user_storage.sql +105 -0
  172. package/supabase/migrations/20260122131200_add_global_addons_system.sql +305 -0
  173. package/supabase/migrations/20260123100000_enable_vector_extension.sql +9 -0
  174. package/supabase/migrations/20260123140000_module_auth_fix_get_user_limits_null.sql +93 -0
  175. package/supabase/migrations/20260123145000_module_auth_fix_circular_storage_base.sql +89 -0
  176. package/supabase/migrations/20260129400000_add_username_to_user_profil.sql +33 -0
  177. package/dist/web/auth/dashboard.d.ts +0 -2
  178. package/dist/web/auth/dashboard.d.ts.map +0 -1
  179. package/dist/web/auth/dashboard.js +0 -48
@@ -0,0 +1,330 @@
1
+ {
2
+ "welcome": "Bienvenido",
3
+ "signin": "Iniciar sesión",
4
+ "signup": "Registrarse",
5
+ "signout": "Cerrar sesión",
6
+ "email": "Correo electrónico",
7
+ "password": "Contraseña",
8
+ "submit": "Enviar",
9
+ "cancel": "Cancelar",
10
+ "save": "Guardar",
11
+ "delete": "Eliminar",
12
+ "edit": "Editar",
13
+ "back": "Volver",
14
+ "loading": "Cargando...",
15
+ "error": "Error",
16
+ "success": "Éxito",
17
+ "hello": "Hola",
18
+ "menu.notifications": "Notificaciones",
19
+ "menu.notifications_desc": "Tus notificaciones",
20
+ "module-auth.folder.storage_usage": "Utilisation du stockage",
21
+
22
+ "menu.account": "Cuenta",
23
+ "menu.account_desc": "Gestiona tu cuenta",
24
+ "menu.theme": "Tema",
25
+ "module-auth.or": "O",
26
+ "menu.theme_desc": "Cambiar el tema",
27
+ "menu.dashboard": "Panel",
28
+ "menu.dashboard_desc": "Accede a tu panel",
29
+ "menu.folder": "Carpeta",
30
+ "menu.folder_desc": "Accede a tu carpeta personal",
31
+ "menu.users_management": "Gestión de usuarios",
32
+ "menu.users_management_desc": "Gestionar usuarios de la plataforma",
33
+ "menu.signup_stats": "Estadísticas de registro",
34
+ "menu.signup_stats_desc": "Seguimiento de registros por origen",
35
+ "menu.signout": "Cerrar sesión",
36
+ "menu.settings": "Ajustes",
37
+ "menu.settings_desc": "Configura tu cuenta",
38
+ "menu.profile": "Mi perfil",
39
+ "menu.profile_desc": "Gestiona tu información personal",
40
+ "menu.admin-panel": "Panel de administración",
41
+ "menu.administration": "Administración",
42
+ "menu.my-space": "Mi espacio",
43
+ "menu.menu": "Menú",
44
+ "menu.open": "Abrir",
45
+ "menu.public": "Páginas públicas",
46
+ "menu.close": "Cerrar",
47
+ "signin.title": "Bienvenido de nuevo",
48
+ "signin.subtitle": "Inicia sesión para acceder a tu espacio",
49
+ "signin.email_placeholder": "tu@correo.com",
50
+ "signin.password_placeholder": "Contraseña",
51
+ "signin.submit": "Iniciar sesión",
52
+ "signin.accept_terms": "Al iniciar sesión, aceptas nuestros",
53
+ "signin.term": "términos de uso",
54
+ "signup.terms": "términos de uso",
55
+ "signup.legal_prefix": "Al registrarte, aceptas nuestros",
56
+ "signup.legal_and": "y nuestra",
57
+ "signup.privacy": "política de privacidad",
58
+ "signin.forgot_password": "¿Olvidaste tu contraseña?",
59
+ "signin.no_account": "¿No tienes una cuenta?",
60
+ "signin.sign_up": "Regístrate",
61
+ "signin.error_title": "Error de inicio de sesión",
62
+ "signin.success_title": "¡Sesión iniciada con éxito!",
63
+ "signin.success_welcome": "Bienvenido",
64
+ "signin.chip_label": "Área de miembros",
65
+ "signup.title": "Empieza gratis",
66
+ "signup.subtitle": "Crea tu cuenta en segundos",
67
+ "signup.chip_label": "Únete",
68
+ "signup.full_name": "Nombre completo",
69
+ "signup.password_hint": "Mínimo 6 caracteres",
70
+ "signup.full_name_placeholder": "Juan Pérez",
71
+ "signup.email_placeholder": "tu@correo.com",
72
+ "signup.password": "Contraseña",
73
+ "signup.confirm_password": "Confirmar contraseña",
74
+ "signup.submit": "Registrarse",
75
+ "signup.have_account": "¿Ya tienes una cuenta?",
76
+ "signup.sign_in": "Iniciar sesión",
77
+ "signup.password_mismatch": "Las contraseñas no coinciden.",
78
+ "signup.password_too_short": "La contraseña debe tener al menos 6 caracteres.",
79
+ "signup.success_confirmation": "Cuenta creada correctamente. Por favor revisa tu correo para confirmar la cuenta.",
80
+ "signup.success_login": "Cuenta creada. Ahora puedes iniciar sesión.",
81
+ "signup.error_title": "Error",
82
+ "singup.or": "O",
83
+ "signup.error_unexpected": "Ocurrió un error inesperado.",
84
+ "dashboard.title": "Panel",
85
+ "dashboard.loading": "Cargando panel...",
86
+ "dashboard.error_loading": "Error",
87
+ "dashboard.profile_summary": "Resumen del perfil",
88
+ "dashboard.account_status": "Estado de la cuenta",
89
+ "dashboard.status": "Estado",
90
+ "dashboard.active": "Activo",
91
+ "dashboard.profile": "Perfil",
92
+ "dashboard.completed": "Completado",
93
+ "dashboard.member_since": "Miembro desde",
94
+ "profile.title": "Mi perfil",
95
+ "profile.loading": "Cargando perfil...",
96
+ "profile.error_loading": "Error al cargar el perfil",
97
+ "profile.first_name": "Nombre",
98
+ "profile.last_name": "Apellido",
99
+ "profile.phone": "Teléfono",
100
+ "profile.company": "Empresa",
101
+ "profile.website": "Sitio web",
102
+ "profile.location": "Ubicación",
103
+ "profile.bio": "Bio",
104
+ "profile.bio_placeholder": "Cuéntanos sobre ti",
105
+ "profile.personal_info": "Información personal",
106
+ "profile.edit": "Editar perfil",
107
+ "profile.first_name_placeholder": "Ingresa tu nombre",
108
+ "profile.last_name_placeholder": "Ingresa tu apellido",
109
+ "profile.phone_placeholder": "Ingresa tu número de teléfono",
110
+ "profile.professional_info": "Información profesional",
111
+ "profile.company_placeholder": "Ingresa el nombre de tu empresa",
112
+ "profile.website_placeholder": "https://ejemplo.com",
113
+ "module-auth.dashboard.complete": "Completar",
114
+ "profile.location_placeholder": "Ciudad, País",
115
+ "profile.preferences": "Preferencias",
116
+ "profile.language": "Idioma",
117
+ "profile.language_placeholder": "en, fr, es...",
118
+ "profile.timezone": "Zona horaria",
119
+ "profile.timezone_placeholder": "Europe/Paris, America/New_York...",
120
+ "profile.avatar": "Foto de perfil",
121
+ "profile.save": "Guardar",
122
+ "profile.saving": "Guardando...",
123
+ "profile.security": "Seguridad",
124
+ "profile.security_new_email": "Nuevo correo",
125
+ "profile.security_new_email_placeholder": "nuevo@correo.com",
126
+ "profile.security_email_change_btn": "Enviar confirmación",
127
+ "profile.security_email_change_sent": "Confirmación enviada",
128
+ "profile.security_email_change_desc": "Revisa el nuevo correo para confirmar el cambio",
129
+ "profile.security_email_required": "Se requiere un nuevo correo",
130
+ "profile.security_error": "Error",
131
+ "profile.security_reset_sent": "Enlace enviado",
132
+ "profile.security_reset_desc": "Revisa tu correo para restablecer tu contraseña",
133
+ "profile.security_reset_title": "Restablecer contraseña",
134
+ "profile.security_reset_help": "Enviaremos un enlace de restablecimiento a tu correo",
135
+ "profile.security_reset_btn": "Enviar enlace",
136
+ "profile.success": "Éxito",
137
+ "profile.updated": "Perfil actualizado con éxito",
138
+ "profile.success_title": "Éxito",
139
+ "profile.success_description": "Perfil actualizado con éxito",
140
+ "profile.error": "Error",
141
+ "profile.update_failed": "Error al actualizar el perfil",
142
+ "profile.error_title": "Error",
143
+ "profile.error_description": "Error al actualizar el perfil",
144
+ "profile.cancel_button": "Cancelar",
145
+ "profile.save_button": "Guardar cambios",
146
+ "settings.title": "Ajustes",
147
+ "settings.loading": "Cargando ajustes...",
148
+ "settings.error": "Error al cargar los ajustes",
149
+ "settings.notifications": "Notificaciones",
150
+ "settings.email_notifications": "Notificaciones por correo",
151
+ "settings.push_notifications": "Notificaciones push",
152
+ "settings.marketing_emails": "Emails de marketing",
153
+ "settings.preferences": "Preferencias",
154
+ "settings.language": "Idioma",
155
+ "settings.timezone": "Zona horaria",
156
+ "settings.theme": "Tema",
157
+ "settings.save": "Guardar",
158
+ "settings.saving": "Guardando...",
159
+ "settings.success_title": "Éxito",
160
+ "settings.success_description": "Ajustes guardados con éxito",
161
+ "settings.error_title": "Error",
162
+ "settings.error_description": "Error al actualizar los ajustes",
163
+ "users.title": "Gestión de usuarios",
164
+ "users.search_placeholder": "Buscar por correo o nombre",
165
+ "users.loading": "Cargando usuarios...",
166
+ "users.error": "Error al cargar usuarios",
167
+ "users.user_id": "ID de usuario",
168
+ "users.name": "Nombre",
169
+ "users.created_at": "Fecha de registro",
170
+ "users.last_sign_in": "Último inicio de sesión",
171
+ "users.role": "Rol",
172
+ "users.actions": "Acciones",
173
+ "users.view": "Ver detalles",
174
+ "users.refresh": "Actualizar",
175
+ "signup_stats.title": "Estadísticas de registro",
176
+ "signup_stats.loading": "Cargando estadísticas...",
177
+ "signup_stats.error": "Error al cargar",
178
+ "signup_stats.total": "Registros totales",
179
+ "signup_stats.lastbrain": "Registros LastBrain",
180
+ "signup_stats.recipe": "Registros Recipe",
181
+ "module-auth.reset_password.title": "Restablecer contraseña",
182
+ "module-auth.reset_password.subtitle": "Introduce tu correo para recibir un enlace",
183
+ "module-auth.reset_password.email_placeholder": "tu@correo.com",
184
+ "module-auth.reset_password.submit": "Enviar enlace",
185
+ "module-auth.reset_password.success": "Revisa tu correo para el enlace de restablecimiento",
186
+ "module-auth.reset_password.error": "Error al enviar el enlace",
187
+ "module-auth.reset_password.link_expired": "Enlace inválido o expirado, solicita uno nuevo.",
188
+ "module-auth.reset_password.back_to_signin": "Volver al inicio de sesión",
189
+ "folder.loading": "Cargando carpeta...",
190
+ "folder.error": "Error",
191
+ "folder.title": "Carpeta",
192
+ "module-auth.dashboard.incomplete": "Incompleto",
193
+ "please_complete_your_profile": "Por favor complete su perfil para continuar.",
194
+ "users_by_source.title": "Usuarios por origen de registro",
195
+ "users_by_source.search_placeholder": "Buscar por correo o nombre...",
196
+ "users_by_source.filter_label": "Filtrar por origen",
197
+ "users_by_source.all_sources": "Todas las fuentes",
198
+ "users_by_source.source_lastbrain": "LastBrain",
199
+ "users_by_source.source_recipe": "Recipe",
200
+ "users_by_source.showing": "Mostrando",
201
+ "users_by_source.of": "de",
202
+ "users_by_source.users": "usuarios",
203
+ "users_by_source.list_title": "Lista de usuarios",
204
+ "users_by_source.loading": "Cargando...",
205
+ "users_by_source.table_aria_label": "Tabla de usuarios",
206
+ "users_by_source.column_name": "Nombre",
207
+ "users_by_source.column_email": "Correo",
208
+ "users_by_source.column_source": "Origen",
209
+ "users_by_source.column_signup_date": "Fecha de registro",
210
+ "users_by_source.recipe": "Recipe",
211
+ "users_by_source.lastbrain": "LastBrain",
212
+ "users_by_source.no_users": "No se encontraron usuarios",
213
+ "users_by_source.loading_error": "Error al cargar usuarios",
214
+ "users_by_source.loading_error_generic": "Error al cargar",
215
+ "user_detail.user_not_found_error": "Usuario no encontrado",
216
+ "user_detail.profile_loading_error": "Error al cargar el perfil:",
217
+ "user_detail.fill_title_message": "Por favor completa el título y el mensaje",
218
+ "user_detail.notification_sent_success": "Notificación enviada con éxito",
219
+ "user_detail.notification_send_error": "Error al enviar la notificación",
220
+ "user_detail.user_not_found": "Usuario no encontrado",
221
+ "user_detail.last_login": "Último inicio de sesión:",
222
+ "user_detail.not_available": "N/D",
223
+ "user_detail.at": "a las",
224
+ "user_detail.administrator": "Administrador",
225
+ "user_detail.user": "Usuario",
226
+ "user_detail.source_recipe": "Recipe",
227
+ "user_detail.source_lastbrain": "LastBrain",
228
+ "user_detail.user_options": "Opciones de usuario",
229
+ "user_detail.tab_profile": "Perfil",
230
+ "user_detail.identity_section": "Identidad",
231
+ "user_detail.full_name": "Nombre completo",
232
+ "user_detail.not_provided": "No proporcionado",
233
+ "user_detail.first_name": "Nombre",
234
+ "user_detail.last_name": "Apellido",
235
+ "user_detail.email": "Correo",
236
+ "user_detail.phone": "Teléfono",
237
+ "user_detail.bio": "Bio",
238
+ "user_detail.professional_info": "Información profesional",
239
+ "user_detail.company": "Empresa",
240
+ "user_detail.website": "Sitio web",
241
+ "user_detail.location": "Ubicación",
242
+ "user_detail.preferences": "Preferencias",
243
+ "user_detail.language": "Idioma",
244
+ "user_detail.timezone": "Zona horaria",
245
+ "user_detail.account_info": "Información de la cuenta",
246
+ "user_detail.role": "Rol",
247
+ "user_detail.standard_user": "Usuario estándar",
248
+ "user_detail.creation_date": "Fecha de creación",
249
+ "user_detail.never": "Nunca",
250
+ "user_detail.tab_notifications": "Notificaciones",
251
+ "user_detail.send_notification": "Enviar notificación",
252
+ "user_detail.notification_title": "Título de la notificación",
253
+ "user_detail.notification_title_placeholder": "Ej: Mensaje importante",
254
+ "user_detail.notification_message": "Mensaje",
255
+ "user_detail.notification_message_placeholder": "Contenido de la notificación...",
256
+ "user_detail.notification_type": "Tipo de notificación",
257
+ "user_detail.notification_type_info": "Información",
258
+ "user_detail.notification_type_warning": "Advertencia",
259
+ "user_detail.notification_type_danger": "Peligro",
260
+ "user_detail.notification_type_success": "Éxito",
261
+ "user_detail.send_button": "Enviar notificación",
262
+ "user_detail.tab_storage": "Almacenamiento",
263
+ "user_detail.storage_usage": "Uso del almacenamiento",
264
+ "user_detail.storage_addons": "Addons de almacenamiento activos",
265
+ "user_detail.no_storage_addons": "Sin addons de almacenamiento activos",
266
+ "user_detail.tab_settings": "Ajustes",
267
+ "user_detail.admin_actions": "Acciones de administrador",
268
+ "user_detail.reset_password_btn": "Restablecer contraseña",
269
+ "user_detail.suspend_account_btn": "Suspender cuenta",
270
+ "user_detail.promote_admin_btn": "Ascender a administrador",
271
+ "user_detail.technical_metadata": "Metadatos técnicos",
272
+ "users.search_button": "Buscar",
273
+ "users.refresh_button": "Actualizar",
274
+ "users.loading_users": "Cargando usuarios...",
275
+ "users.no_users_found": "No se encontraron usuarios",
276
+ "users.table_aria_label": "Tabla de usuarios",
277
+ "users.column_user": "USUARIO",
278
+ "users.column_email": "CORREO",
279
+ "users.column_role": "ROL",
280
+ "users.column_last_sign_in": "ÚLTIMO INICIO",
281
+ "users.column_created": "CREADO",
282
+ "users.column_actions": "ACCIONES",
283
+ "users.never": "Nunca",
284
+ "users.view_button": "Ver",
285
+ "users.showing_results": "Mostrando {{count}} de {{total}} usuarios",
286
+ "module-auth.settings.account": "Ajustes de cuenta",
287
+ "module-auth.settings.appearance": "Apariencia",
288
+ "module-auth.settings.dark": "Oscuro",
289
+ "module-auth.settings.email_notifications": "Notificaciones por correo",
290
+ "module-auth.settings.email_notifications_desc": "Recibe notificaciones por correo para actualizaciones importantes",
291
+ "module-auth.settings.error": "Error",
292
+ "module-auth.settings.language": "Idioma",
293
+ "module-auth.settings.language_placeholder": "Selecciona un idioma",
294
+ "module-auth.settings.language_region": "Idioma y región",
295
+ "module-auth.settings.lang_de": "Deutsch",
296
+ "module-auth.settings.lang_en": "English",
297
+ "module-auth.settings.lang_es": "Español",
298
+ "module-auth.settings.lang_fr": "Français",
299
+ "module-auth.settings.light": "Claro",
300
+ "module-auth.settings.load_error_description": "Error al cargar los ajustes",
301
+ "module-auth.settings.load_error_title": "Error",
302
+ "module-auth.settings.loading": "Cargando ajustes...",
303
+ "module-auth.settings.marketing_emails": "Emails de marketing",
304
+ "module-auth.settings.marketing_emails_desc": "Recibe correos sobre nuevas funciones y actualizaciones",
305
+ "module-auth.settings.notifications": "Notificaciones",
306
+ "module-auth.settings.push_notifications": "Notificaciones push",
307
+ "module-auth.settings.push_notifications_desc": "Recibe notificaciones push en tu navegador",
308
+ "module-auth.settings.reset": "Restablecer",
309
+ "module-auth.settings.save_button": "Guardar ajustes",
310
+ "module-auth.settings.saving": "Guardando...",
311
+ "module-auth.settings.select_theme": "Selecciona un tema",
312
+ "module-auth.settings.success": "Éxito",
313
+ "module-auth.settings.system": "Sistema",
314
+ "module-auth.settings.theme": "Tema",
315
+ "module-auth.settings.timezone": "Zona horaria",
316
+ "module-auth.settings.timezone_placeholder": "Selecciona una zona horaria",
317
+ "module-auth.settings.tz_la": "America/Los_Angeles",
318
+ "module-auth.settings.tz_ny": "America/New_York",
319
+ "module-auth.settings.tz_paris": "Europe/Paris",
320
+ "module-auth.settings.tz_tokyo": "Asia/Tokyo",
321
+ "module-auth.settings.tz_utc": "UTC",
322
+ "module-auth.settings.update_failed": "Error al actualizar los ajustes",
323
+ "module-auth.settings.updated": "Ajustes actualizados con éxito",
324
+ "module-auth.user_detail.suspended": "Suspendido",
325
+ "module-auth.user_detail.active": "Activo",
326
+ "module-auth.user_detail.reactivate_account_btn": "Reactivar cuenta",
327
+ "signin.suspended_title": "Cuenta suspendida",
328
+ "module-auth.folder.note": "Nota: Este espacio agrupa los archivos generados por tus diferentes aplicaciones y módulos. Todos los archivos permanecen centralizados y accesibles desde tu espacio personal.",
329
+ "signin.suspended_message": "Su cuenta ha sido suspendida. Por favor, contacte con el soporte para más información."
330
+ }
package/src/i18n/fr.json CHANGED
@@ -20,6 +20,8 @@
20
20
  "menu.account": "Compte",
21
21
  "menu.account_desc": "Gérer votre compte",
22
22
  "menu.theme": "Thème",
23
+ "module-auth.or": "OU",
24
+ "module-auth.folder.storage_usage": "Utilisation du stockage",
23
25
  "menu.theme_desc": "Changer le thème",
24
26
  "menu.dashboard": "Tableau de bord",
25
27
  "menu.dashboard_desc": "Accédez à votre tableau de bord",
@@ -102,6 +104,19 @@
102
104
  "profile.avatar": "Photo de profil",
103
105
  "profile.save": "Enregistrer",
104
106
  "profile.saving": "Enregistrement en cours...",
107
+ "profile.security": "Sécurité",
108
+ "profile.security_new_email": "Nouvel email",
109
+ "profile.security_new_email_placeholder": "nouveau@email.com",
110
+ "profile.security_email_change_btn": "Envoyer la confirmation",
111
+ "profile.security_email_change_sent": "Confirmation envoyée",
112
+ "profile.security_email_change_desc": "Vérifiez le nouvel email pour confirmer le changement",
113
+ "profile.security_email_required": "Le nouvel email est requis",
114
+ "profile.security_error": "Erreur",
115
+ "profile.security_reset_sent": "Lien envoyé",
116
+ "profile.security_reset_desc": "Vérifiez votre email pour réinitialiser votre mot de passe",
117
+ "profile.security_reset_title": "Réinitialiser le mot de passe",
118
+ "profile.security_reset_help": "Nous enverrons un lien de réinitialisation à votre email",
119
+ "profile.security_reset_btn": "Envoyer le lien",
105
120
  "profile.success": "Succès",
106
121
  "profile.updated": "Profil mis à jour avec succès",
107
122
  "profile.success_title": "Succès",
@@ -161,13 +176,14 @@
161
176
  "signup_stats.total": "Total d'inscriptions",
162
177
  "signup_stats.lastbrain": "Inscriptions LastBrain",
163
178
  "signup_stats.recipe": "Inscriptions Recipe",
164
- "reset_password.title": "Réinitialiser le mot de passe",
165
- "reset_password.subtitle": "Entrez votre email pour recevoir un lien de réinitialisation",
166
- "reset_password.email_placeholder": "votre@email.com",
167
- "reset_password.submit": "Envoyer le lien",
168
- "reset_password.success": "Vérifiez votre email pour le lien de réinitialisation",
169
- "reset_password.error": "Erreur lors de l'envoi du lien",
170
- "reset_password.back_to_signin": "Retour à la connexion",
179
+ "module-auth.reset_password.title": "Réinitialiser le mot de passe",
180
+ "module-auth.reset_password.subtitle": "Entrez votre email pour recevoir un lien de réinitialisation",
181
+ "module-auth.reset_password.email_placeholder": "votre@email.com",
182
+ "module-auth.reset_password.submit": "Envoyer le lien",
183
+ "module-auth.reset_password.success": "Vérifiez votre email pour le lien de réinitialisation",
184
+ "module-auth.reset_password.error": "Erreur lors de l'envoi du lien",
185
+ "module-auth.reset_password.link_expired": "Lien invalide ou expiré, veuillez en demander un nouveau.",
186
+ "module-auth.reset_password.back_to_signin": "Retour à la connexion",
171
187
  "folder.loading": "Chargement du dossier...",
172
188
  "folder.error": "Erreur",
173
189
  "folder.title": "Dossier",
@@ -239,6 +255,10 @@
239
255
  "user_detail.notification_type_danger": "Danger",
240
256
  "user_detail.notification_type_success": "Succès",
241
257
  "user_detail.send_button": "Envoyer la notification",
258
+ "user_detail.tab_storage": "Stockage",
259
+ "user_detail.storage_usage": "Usage du stockage",
260
+ "user_detail.storage_addons": "Addons de stockage actifs",
261
+ "user_detail.no_storage_addons": "Aucun addon de stockage actif",
242
262
  "user_detail.tab_settings": "Paramètres",
243
263
  "user_detail.admin_actions": "Actions administrateur",
244
264
  "user_detail.reset_password_btn": "Réinitialiser le mot de passe",
@@ -258,5 +278,51 @@
258
278
  "users.column_actions": "ACTIONS",
259
279
  "users.never": "Jamais",
260
280
  "users.view_button": "Voir",
261
- "users.showing_results": "Affichage de {{count}} sur {{total}} utilisateurs"
281
+ "users.showing_results": "Affichage de {{count}} sur {{total}} utilisateurs",
282
+ "module-auth.settings.account": "Paramètres du compte",
283
+ "module-auth.settings.appearance": "Apparence",
284
+ "module-auth.settings.dark": "Sombre",
285
+ "module-auth.settings.email_notifications": "Notifications par email",
286
+ "module-auth.settings.email_notifications_desc": "Recevez des notifications par email pour les mises à jour importantes",
287
+ "module-auth.settings.error": "Erreur",
288
+ "module-auth.settings.language": "Langue",
289
+ "module-auth.settings.language_placeholder": "Sélectionnez une langue",
290
+ "module-auth.settings.language_region": "Langue et région",
291
+ "module-auth.settings.lang_de": "Deutsch",
292
+ "module-auth.settings.lang_en": "English",
293
+ "module-auth.settings.lang_es": "Español",
294
+ "module-auth.settings.lang_fr": "Français",
295
+ "module-auth.settings.light": "Clair",
296
+ "module-auth.settings.load_error_description": "Échec du chargement des paramètres",
297
+ "module-auth.settings.load_error_title": "Erreur",
298
+ "module-auth.settings.loading": "Chargement des paramètres...",
299
+ "module-auth.settings.marketing_emails": "Emails marketing",
300
+ "module-auth.settings.marketing_emails_desc": "Recevez des emails sur les nouvelles fonctionnalités et mises à jour",
301
+ "module-auth.settings.notifications": "Notifications",
302
+ "module-auth.settings.push_notifications": "Notifications push",
303
+ "module-auth.settings.push_notifications_desc": "Recevez des notifications push dans votre navigateur",
304
+ "module-auth.settings.reset": "Réinitialiser",
305
+ "module-auth.settings.save_button": "Enregistrer les paramètres",
306
+ "module-auth.settings.saving": "Enregistrement...",
307
+ "module-auth.settings.select_theme": "Sélectionnez un thème",
308
+ "module-auth.settings.success": "Succès",
309
+ "module-auth.settings.system": "Système",
310
+ "module-auth.settings.theme": "Thème",
311
+ "module-auth.settings.timezone": "Fuseau horaire",
312
+ "module-auth.settings.timezone_placeholder": "Sélectionnez un fuseau horaire",
313
+ "module-auth.settings.tz_la": "America/Los_Angeles",
314
+ "module-auth.settings.tz_ny": "America/New_York",
315
+ "module-auth.settings.tz_paris": "Europe/Paris",
316
+ "module-auth.settings.tz_tokyo": "Asia/Tokyo",
317
+ "module-auth.settings.tz_utc": "UTC",
318
+ "module-auth.settings.update_failed": "Échec de la mise à jour des paramètres",
319
+ "module-auth.settings.updated": "Paramètres mis à jour avec succès",
320
+ "module-auth.user_detail.suspended": "Suspendu",
321
+ "module-auth.user_detail.active": "Actif",
322
+ "module-auth.user_detail.reactivate_account_btn": "Réactiver le compte",
323
+ "signin.suspended_title": "Compte suspendu",
324
+ "please_complete_your_profile": "Veuillez compléter votre profil pour continuer.",
325
+ "module-auth.dashboard.incomplete": "Incomplet",
326
+ "module-auth.folder.note": "Note : Cet espace regroupe les fichiers générés par vos différentes applications et modules. Tous les fichiers restent centralisés et accessibles depuis votre espace personnel.",
327
+ "signin.suspended_message": "Votre compte a été suspendu. Veuillez contacter le support pour plus d'informations."
262
328
  }
package/src/index.ts CHANGED
@@ -2,6 +2,8 @@
2
2
  export { SignInPage } from "./web/public/SignInPage";
3
3
  export { SignUpPage } from "./web/public/SignUpPage";
4
4
  export { ResetPassword } from "./web/public/ResetPassword";
5
+ export { default as ConfirmPage } from "./web/public/confirm";
6
+ export { default as AuthCodeErrorPage } from "./web/public/auth-code-error";
5
7
  export { DashboardPage } from "./components/auth/dashboard";
6
8
  export { FolderPage } from "./web/auth/folder";
7
9
  export { ProfilePage } from "./web/auth/profile";
@@ -0,0 +1,90 @@
1
+ import * as fs from "fs";
2
+ import * as path from "path";
3
+
4
+ /**
5
+ * Branding configuration for emails
6
+ * Loaded dynamically from app i18n files (app.name, app.icon, etc.)
7
+ */
8
+
9
+ export interface AppBrandingData {
10
+ appName: string;
11
+ logo?: string;
12
+ description?: string;
13
+ tagline?: string;
14
+ icon?: string;
15
+ twitterCreator?: string;
16
+ twitterSite?: string;
17
+ supportEmail?: string;
18
+ primaryColor?: string;
19
+ secondaryColor?: string;
20
+ }
21
+
22
+ /**
23
+ * Charge les traductions de l'app depuis les fichiers i18n agrégés
24
+ */
25
+ function loadAppTranslations(lang: string): Record<string, string> {
26
+ try {
27
+ const possiblePaths = [
28
+ // Production (Vercel)
29
+ path.join("/app", "i18n", `${lang}.json`),
30
+ // Development - apps/lastbrain
31
+ path.join(process.cwd(), "i18n", `${lang}.json`),
32
+ // Development - depuis packages vers apps/lastbrain
33
+ path.join(
34
+ process.cwd(),
35
+ "..",
36
+ "..",
37
+ "apps",
38
+ "lastbrain",
39
+ "i18n",
40
+ `${lang}.json`
41
+ ),
42
+ // Development - apps/recipe
43
+ path.join(
44
+ process.cwd(),
45
+ "..",
46
+ "..",
47
+ "apps",
48
+ "recipe",
49
+ "i18n",
50
+ `${lang}.json`
51
+ ),
52
+ ];
53
+
54
+ for (const filePath of possiblePaths) {
55
+ if (fs.existsSync(filePath)) {
56
+ const content = fs.readFileSync(filePath, "utf-8");
57
+ return JSON.parse(content);
58
+ }
59
+ }
60
+ } catch (error) {
61
+ console.warn(
62
+ `[getAppBranding] Could not load translations for ${lang}:`,
63
+ error
64
+ );
65
+ }
66
+
67
+ return {};
68
+ }
69
+
70
+ /**
71
+ * Récupère le branding depuis les clés i18n de l'app
72
+ * Utilise les clés : app.name, app.icon, app.description, app.tagline, etc.
73
+ */
74
+ export function getAppBranding(locale: string = "en"): AppBrandingData {
75
+ const loc = locale === "fr" ? "fr" : "en";
76
+ const translations = loadAppTranslations(loc);
77
+
78
+ return {
79
+ appName: translations["app.name"] || "LastBrain",
80
+ icon: translations["app.icon"] || "Brain",
81
+ logo: translations["app.icon"] || "Brain",
82
+ description: translations["app.description"] || "",
83
+ tagline: translations["app.tagline"] || "",
84
+ twitterCreator: translations["app.twitter_creator"] || "",
85
+ twitterSite: translations["app.twitter_site"] || "",
86
+ supportEmail: translations["app.email.contact"] || "support@lastbrain.io",
87
+ primaryColor: translations["app.email.color.primary"] || "#3b82f6",
88
+ secondaryColor: translations["app.email.color.secondary"] || "#8b5cf6",
89
+ };
90
+ }