backend: update profile layout and styles for improved user details display
This commit is contained in:
parent
f1b9f1c6e3
commit
1f603a683d
@ -33,7 +33,7 @@
|
||||
} @else if (targetUser()) {
|
||||
<!-- ─── Two-column layout ──────────────────────────────────────────────── -->
|
||||
<div class="profile-layout">
|
||||
<!-- LEFT — Profile Header -->
|
||||
<!-- LEFT — Profile Sidebar -->
|
||||
<aside class="profile-sidebar">
|
||||
<mat-card class="section-card profile-header-card">
|
||||
<mat-card-content>
|
||||
@ -55,48 +55,22 @@
|
||||
<mat-icon class="meta-icon">calendar_today</mat-icon>
|
||||
Member since {{ formatDate(targetUser()!.registrationDate) }}
|
||||
</p>
|
||||
|
||||
<mat-divider class="sidebar-divider"></mat-divider>
|
||||
|
||||
<!-- Account Details -->
|
||||
<div class="sidebar-details">
|
||||
<div class="sidebar-detail-item">
|
||||
<span class="info-label">User ID</span>
|
||||
<span class="info-value monospace">{{ targetUser()!.userId }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
</aside>
|
||||
|
||||
<!-- RIGHT — Details -->
|
||||
<!-- RIGHT — Main Content -->
|
||||
<div class="profile-main">
|
||||
<!-- ─── Account Information ──────────────────────────────────── -->
|
||||
<mat-card class="section-card">
|
||||
<mat-card-header>
|
||||
<div mat-card-avatar class="section-avatar">
|
||||
<mat-icon class="section-icon">person</mat-icon>
|
||||
</div>
|
||||
<mat-card-title>Account Information</mat-card-title>
|
||||
<mat-card-subtitle>Read-only details for this account</mat-card-subtitle>
|
||||
</mat-card-header>
|
||||
|
||||
<mat-card-content>
|
||||
<div class="info-grid">
|
||||
<div class="info-item">
|
||||
<span class="info-label">User ID</span>
|
||||
<span class="info-value monospace">{{ targetUser()!.userId }}</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Name</span>
|
||||
<span class="info-value">{{ targetUser()!.name }}</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Role</span>
|
||||
<span class="info-value">
|
||||
<span class="role-chip" [ngClass]="'role-' + targetUser()!.role">
|
||||
{{ getRoleLabel(targetUser()!.role) }}
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="info-item">
|
||||
<span class="info-label">Member since</span>
|
||||
<span class="info-value">{{ formatDate(targetUser()!.registrationDate) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
|
||||
<!-- ─── Security: Change Password (own profile only) ──────────── -->
|
||||
@if (isOwnProfile()) {
|
||||
<mat-card class="section-card">
|
||||
|
||||
@ -92,6 +92,44 @@
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-divider {
|
||||
width: 100%;
|
||||
margin: var(--ov-meet-spacing-md) 0 !important;
|
||||
}
|
||||
|
||||
.sidebar-details {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--ov-meet-spacing-md);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.sidebar-detail-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--ov-meet-spacing-xs);
|
||||
|
||||
.info-label {
|
||||
font-size: var(--ov-meet-font-size-sm);
|
||||
font-weight: var(--ov-meet-font-weight-medium);
|
||||
color: var(--ov-meet-text-secondary);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
|
||||
.info-value {
|
||||
font-size: var(--ov-meet-font-size-md);
|
||||
color: var(--ov-meet-text-primary);
|
||||
font-weight: var(--ov-meet-font-weight-regular);
|
||||
word-break: break-all;
|
||||
|
||||
&.monospace {
|
||||
font-family: monospace;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ─── Role chip ────────────────────────────────────────────────────────────────
|
||||
|
||||
.role-chip {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user