v0.12.0 - Add modular system architecture with user-based module access

- Add Modules and UserModules database tables
- Create home page with module selection grid
- Implement per-user module assignment in user management
- Add route guards for module access control
- Refactor navigation: login -> home -> modules, admin console via button
- Add Font Awesome icons
This commit is contained in:
Javier
2026-01-26 11:35:29 -06:00
parent cbd7e535e6
commit 21671d6bee
17 changed files with 365 additions and 47 deletions

View File

@@ -2151,4 +2151,78 @@ body {
.session-actions-header {
flex-shrink: 0;
}
/* ==================== MODULE GRID (Home Page) ==================== */
.module-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: var(--space-xl);
margin-top: var(--space-xl);
}
.module-card {
background: var(--color-surface);
border: 2px solid var(--color-border);
border-radius: var(--radius-xl);
padding: var(--space-2xl) var(--space-xl);
text-decoration: none;
text-align: center;
transition: var(--transition);
display: flex;
flex-direction: column;
align-items: center;
gap: var(--space-md);
}
.module-card:hover {
border-color: var(--color-primary);
transform: translateY(-4px);
box-shadow: var(--shadow-glow), var(--shadow-lg);
}
.module-icon {
width: 80px;
height: 80px;
background: var(--color-primary-glow);
border: 2px solid var(--color-primary);
border-radius: var(--radius-lg);
display: flex;
align-items: center;
justify-content: center;
font-size: 2.5rem;
color: var(--color-primary);
transition: var(--transition);
}
.module-card:hover .module-icon {
background: var(--color-primary);
color: var(--color-bg);
box-shadow: 0 0 30px var(--color-primary-glow);
}
.module-name {
font-size: 1.5rem;
font-weight: 700;
color: var(--color-text);
margin: 0;
}
.module-desc {
font-size: 0.9rem;
color: var(--color-text-muted);
margin: 0;
line-height: 1.5;
}
/* ==================== MODAL SCROLL FIX ==================== */
.modal {
overflow-y: auto;
padding: var(--space-xl) 0;
}
.modal-content {
max-height: none;
margin: auto;
}