Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
6dc339c
🎨 Evaluación Arquitectura SCSS - Reactive Manifiesto
federicopfund Jan 13, 2026
9218a86
Sistema de Variables - Sistema de Diseño CSS/SCSS Variables USER INT…
federicopfund Jan 13, 2026
d9be7ee
Main SCSS - Archivo de Entrada Principal
federicopfund Jan 13, 2026
b19143e
Components - Authentication (Login & Register)
federicopfund Jan 13, 2026
fb2a6a5
Components - Dashboard
federicopfund Jan 13, 2026
63a82bb
Components - Portfolio (Innovative Design)
federicopfund Jan 13, 2026
06d67fc
Components - Publication Editor & Forms
federicopfund Jan 13, 2026
e34f150
Components - Email Verification
federicopfund Jan 13, 2026
29beb9d
feat: se introduce funcionalidad nueva.
federicopfund Jan 13, 2026
cc6e8b5
chore(build): configurar proyecto Play con dependencias base, Akka, S…
federicopfund Jan 13, 2026
3006ef2
Recursos documentados
federicopfund Jan 13, 2026
eed3a75
feat(controllers): implementar autenticación unificada con login por …
federicopfund Jan 13, 2026
7511d03
feat(controllers): implementar HomeController con publicaciones, port…
federicopfund Jan 13, 2026
1feb7da
feat(controllers): agregar SetupController para inicialización segura…
federicopfund Jan 13, 2026
8d88d90
feat(controllers): implementar gestión de publicaciones de usuario co…
federicopfund Jan 13, 2026
5079e0d
feat(actions): implementar acciones de autenticación y autorización p…
federicopfund Jan 13, 2026
a6dea93
feat(models): agregar modelo EmailVerificationCode para verificación …
federicopfund Jan 13, 2026
ade37d9
feat(models): agregar modelo de publicaciones con estados, auditoría …
federicopfund Jan 13, 2026
a20bbe8
feat(models): agregar modelo de usuario con roles, estado y verificac…
federicopfund Jan 13, 2026
d68df74
feat(repositories): implementar repositorio de administradores con Sl…
federicopfund Jan 13, 2026
a51847a
feat(repositories): implementar repositorio de verificación de email …
federicopfund Jan 13, 2026
7400cf8
feat(repositories): implementar repositorio de publicaciones con Slic…
federicopfund Jan 13, 2026
69d4d25
feat(repositories): implementar repositorio de usuarios con Slick, au…
federicopfund Jan 13, 2026
ca1596d
feat(services): implementar servicio de envío de emails con SMTP, ver…
federicopfund Jan 13, 2026
f1441c6
feat(services): implementar servicio de verificación de email con gen…
federicopfund Jan 13, 2026
b0e116f
feat(views): agregar layout principal con navegación, soporte de sesi…
federicopfund Jan 13, 2026
2e27cdb
feat(views): implementar vista de portafolio con filtros, contenido p…
federicopfund Jan 13, 2026
f48095b
feat(views): implementar vista de publicaciones con artículos estátic…
federicopfund Jan 13, 2026
1e802ab
feat(views): implementar vista de login para administradores con dise…
federicopfund Jan 13, 2026
5f1f2ed
feat(views): implementar vista de revisión administrativa para aproba…
federicopfund Jan 13, 2026
baa5de0
feat(views): agregar vista de listado de publicaciones pendientes par…
federicopfund Jan 13, 2026
6e88c77
feat(views): implementar login unificado con selector de usuario y ad…
federicopfund Jan 13, 2026
1060834
feat(views): implementar vista de registro de usuarios con validacion…
federicopfund Jan 13, 2026
c895bcd
feat(views): implementar dashboard de usuario con métricas, accesos r…
federicopfund Jan 13, 2026
ef0d195
feat(views): agregar pantalla de verificación de email con código y r…
federicopfund Jan 13, 2026
bd2bd95
feat(views): agregar dashboard de usuario para gestión de publicaciones
federicopfund Jan 13, 2026
e0e4e24
feat(views): agregar formulario de creación y edición de publicaciones
federicopfund Jan 13, 2026
01b6354
feat(views): agregar vista previa de publicación para autores
federicopfund Jan 13, 2026
2b1d267
chore(config): agregar configuración base de aplicación, base de dato…
federicopfund Jan 13, 2026
219be0a
feat(routes): definir rutas públicas, autenticación, panel de usuario…
federicopfund Jan 13, 2026
eb6a9fd
feat(db): agregar tabla publications con workflow de revisión y métricas
federicopfund Jan 13, 2026
4c2a022
feat(db) Schema email_verification_codes ,publicaciones
federicopfund Jan 13, 2026
18ce49d
Feat(db) CREAR ADMIN
federicopfund Jan 13, 2026
7cae4fb
Feat(documentacion) Sistema de Publicaciones con Aprobación de Admin
federicopfund Jan 13, 2026
5a5ac67
Feat(Verificacion) monitorear códigos de verificación en modo desarrollo
federicopfund Jan 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions app/assets/stylesheets/_variables.scss
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// ============================================
// Variables - Sistema de Diseño Profesional
// Sistema de Variables - Sistema de Diseño CSS/SCSS Variables USER INTERFACE
// ============================================

// ============================================
// COLORES SEMÁNTICOS - REACTIVE MANIFESTO
// COLORES - REACTIVE MANIFESTO
// ============================================

// RESPONSIVE - Azul/Cyan (Confiabilidad, Fluidez)
Expand Down Expand Up @@ -193,6 +193,7 @@ $font-weight-medium: 500;
$font-weight-semibold: 600;
$font-weight-bold: 700;
$font-weight-extrabold: 800;
$font-weight-black: 900;

// Line Heights (Ritmo Vertical)
$line-height-none: 1;
Expand Down
376 changes: 376 additions & 0 deletions app/assets/stylesheets/components/_auth.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,376 @@
// ============================================
// Components - Authentication (Login & Register)
// ============================================

// Auth Page Background
.auth-page {
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
padding: $spacing-8 $spacing-4;
background-color: $gray-50;
}

// Login & Register Container
.login-container,
.register-container {
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(10px);
border-radius: $border-radius-xl;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04),
0 1px 4px rgba(0, 0, 0, 0.02);
max-width: 440px;
width: 100%;
overflow: hidden;
animation: fadeInUp 0.4s ease-out;

@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(15px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
}

// Header Section
.login-header,
.register-header {
background: linear-gradient(135deg,
rgba(59, 130, 246, 0.05) 0%,
rgba(139, 92, 246, 0.05) 100%
);
padding: $spacing-8 $spacing-6;
text-align: center;
border-bottom: 1px solid $gray-200;

.header-icon {
font-size: $font-size-4xl;
margin-bottom: $spacing-2;
display: block;
opacity: 0.8;
}

h1 {
font-size: $font-size-2xl;
font-weight: $font-weight-bold;
margin-bottom: $spacing-1;
color: $gray-800;

@include respond-to('md') {
font-size: $font-size-3xl;
}
}

p {
color: $gray-600;
font-size: $font-size-sm;
font-weight: $font-weight-normal;
}
}

// Body Section
.login-body,
.register-body {
padding: $spacing-8 $spacing-6;
background: $bg-white;
}

// Tab Container (only for login)
.tab-container {
display: flex;
gap: $spacing-2;
margin-bottom: $spacing-6;
background: $gray-100;
padding: 4px;
border-radius: $border-radius-md;

.tab {
flex: 1;
padding: $spacing-2 $spacing-3;
text-align: center;
cursor: pointer;
border: none;
background: transparent;
font-size: $font-size-sm;
font-weight: $font-weight-medium;
color: $gray-600;
transition: all 0.2s ease;
border-radius: calc($border-radius-md - 2px);

&:hover {
color: $gray-900;
background: rgba(255, 255, 255, 0.6);
}

&.active {
color: $gray-900;
background: $bg-white;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}
}
}

// Form Elements
.login-body,
.register-body {
.form-group {
margin-bottom: $spacing-5;

label {
display: block;
margin-bottom: $spacing-2;
color: $gray-700;
font-weight: $font-weight-medium;
font-size: $font-size-sm;
}

input[type="text"],
input[type="email"],
input[type="password"] {
width: 100%;
padding: $spacing-3;
border: 1px solid $gray-300;
border-radius: $border-radius-md;
font-size: $font-size-base;
transition: all 0.2s ease;
background: $bg-white;
color: $gray-900;

&:focus {
outline: none;
border-color: $gray-400;
box-shadow: 0 0 0 3px rgba(156, 163, 175, 0.1);
}

&::placeholder {
color: $gray-400;
}
}
}

.error {
background: $gray-50;
border: 1px solid $gray-300;
border-left: 2px solid $gray-600;
color: $gray-700;
padding: $spacing-2 $spacing-3;
border-radius: $border-radius-sm;
margin-bottom: $spacing-4;
font-size: $font-size-sm;
line-height: $line-height-relaxed;
}
}

// Submit Buttons
.btn-login,
.btn-register {
width: 100%;
padding: $spacing-3;
background: $gray-800;
color: $text-white;
border: none;
border-radius: $border-radius-md;
font-size: $font-size-base;
font-weight: $font-weight-medium;
cursor: pointer;
transition: all 0.2s ease;
margin-top: $spacing-2;

&:hover {
background: $gray-900;
transform: translateY(-1px);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

&:active {
transform: translateY(0);
}

&:disabled {
opacity: 0.5;
cursor: not-allowed;
}
}

// Links Section
.links {
text-align: center;
margin-top: $spacing-6;
padding-top: $spacing-6;
border-top: 1px solid $gray-200;

p {
color: $gray-600;
margin-bottom: $spacing-2;
font-size: $font-size-sm;
}

a {
color: $gray-700;
text-decoration: none;
font-weight: $font-weight-medium;
font-size: $font-size-sm;
transition: color 0.2s ease;

&:hover {
color: $gray-900;
text-decoration: underline;
}
}
}

// Flash Messages
.flash-message {
padding: $spacing-3;
margin-bottom: $spacing-4;
border-radius: $border-radius-md;
font-size: $font-size-sm;
line-height: $line-height-relaxed;
border-left: 2px solid;

&.success {
background: rgba(16, 185, 129, 0.06);
border-left-color: $resilient-primary;
color: #047857;
}

&.error {
background: $gray-50;
border-left-color: $gray-600;
color: $gray-700;
}

&.info {
background: rgba(59, 130, 246, 0.06);
border-left-color: $responsive-primary;
color: #1e40af;
}
}

// Dark Mode
[data-theme="dark"] {
.auth-page {
background-color: $dark-bg-secondary;
}

.login-container,
.register-container {
background: rgba(31, 41, 55, 0.98);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}

.login-header,
.register-header {
background: linear-gradient(135deg,
rgba(59, 130, 246, 0.08) 0%,
rgba(139, 92, 246, 0.08) 100%
);
border-bottom-color: $dark-border-color;

h1 {
color: $dark-text-primary;
}

p {
color: $gray-400;
}
}

.login-body,
.register-body {
background: $dark-bg-primary;

.tab-container {
background: $dark-bg-secondary;

.tab {
color: $gray-400;

&:hover {
color: $gray-200;
background: rgba(255, 255, 255, 0.05);
}

&.active {
color: $gray-200;
background: $dark-bg-primary;
}
}
}

.form-group {
label {
color: $gray-300;
}

input[type="text"],
input[type="email"],
input[type="password"] {
background: $dark-bg-secondary;
border-color: $dark-border-color;
color: $dark-text-primary;

&:focus {
border-color: $gray-600;
}

&::placeholder {
color: $gray-500;
}
}
}

.error {
background: $dark-bg-secondary;
border-color: $dark-border-color;
color: $gray-400;
}
}

.btn-login,
.btn-register {
background: $gray-700;

&:hover {
background: $gray-600;
}
}

.links {
border-top-color: $dark-border-color;

p {
color: $gray-400;
}

a {
color: $gray-300;

&:hover {
color: $gray-100;
}
}
}

.flash-message {
&.success {
background: rgba(16, 185, 129, 0.1);
color: #6ee7b7;
}

&.error {
background: $dark-bg-secondary;
color: $gray-400;
}

&.info {
background: rgba(59, 130, 246, 0.1);
color: #93c5fd;
}
}
}
Loading