feat: redesign client view header — dark gradient card with modern layout

- Dark gradient background (#0f1923 → #1c2d3f) replacing old blue card
- Rounded 72px avatar with compact upload/capture/delete buttons
- Name row: bold white text + green status badge + menu button
- ID chips: monospace font, semi-transparent background
- 4-column details grid with cell borders inside rounded container
- All labels 9px uppercase, values 12.5px white
- Responsive: 3-col → 2-col → 1-col on smaller screens
- Also fix: 2-column grid specificity for dialog file upload

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Aditya
2026-03-21 00:40:38 +05:30
co-authored by Claude Opus 4.6
parent 693ffed397
commit 54ab436563
4 changed files with 379 additions and 246 deletions
@@ -6,145 +6,286 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
.account-card {
.header {
.profile-image-container {
.client-image-button {
min-width: 26px;
padding: 0 6px;
margin: 4px;
line-height: 25px;
}
$dark-1: #0f1923;
$dark-2: #162231;
$dark-3: #1c2d3f;
$accent: #38bdf8;
$accent-dim: rgba(56, 189, 248, 0.15);
$green: #34d399;
$green-dim: rgba(52, 211, 153, 0.15);
$red: #f87171;
$red-dim: rgba(248, 113, 113, 0.15);
$amber: #fbbf24;
$white: #fff;
$white-70: rgba(255, 255, 255, 0.7);
$white-50: rgba(255, 255, 255, 0.5);
$white-30: rgba(255, 255, 255, 0.3);
$white-15: rgba(255, 255, 255, 0.15);
$white-08: rgba(255, 255, 255, 0.08);
.signature {
color: white;
text-align: center;
margin: 0;
padding: 2%;
// Main card
.cv-card {
background: linear-gradient(135deg, $dark-1 0%, $dark-2 50%, $dark-3 100%);
border-radius: 12px;
overflow: hidden;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.25);
margin: 0;
padding: 0;
}
&:hover {
cursor: pointer;
}
}
// Top section
.cv-top {
display: flex;
align-items: flex-start;
gap: 20px;
padding: 20px 24px 16px;
}
// Avatar column
.cv-avatar {
display: flex;
flex-direction: column;
align-items: center;
gap: 6px;
flex-shrink: 0;
&__img {
width: 72px;
height: 72px;
border-radius: 12px;
object-fit: cover;
border: 2px solid $white-15;
}
&__actions {
display: flex;
gap: 4px;
}
&__btn {
width: 28px !important;
height: 28px !important;
min-width: 28px !important;
padding: 0 !important;
border-radius: 6px !important;
background: $white-08 !important;
color: $white-50 !important;
border: 1px solid $white-15 !important;
display: flex !important;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.15s ease;
i {
font-size: 11px;
}
&:hover {
background: $white-15 !important;
color: $white !important;
}
&--danger:hover {
background: $red-dim !important;
color: $red !important;
border-color: rgba($red, 0.3) !important;
}
}
&__sig {
font-size: 10px;
color: $accent;
cursor: pointer;
font-weight: 500;
&:hover {
text-decoration: underline;
}
}
}
.mat-card-title-group {
width: 100%;
// Info column
.cv-info {
flex: 1;
min-width: 0;
}
/* ── Title Row ── */
.cv-title-row {
// Name row
.cv-name-row {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 10px;
}
.cv-name-block {
.cv-name {
display: flex;
align-items: center;
gap: 8px;
font-size: 18px;
font-weight: 600;
color: #fff;
gap: 10px;
i.fa-stop {
font-size: 12px;
&__dot {
font-size: 10px;
}
&__text {
font-size: 20px;
font-weight: 700;
color: $white;
letter-spacing: -0.3px;
}
&__status {
font-size: 9px;
font-weight: 700;
padding: 3px 10px;
border-radius: 10px;
text-transform: uppercase;
letter-spacing: 0.5px;
background: $green-dim;
color: $green;
border: 1px solid rgba($green, 0.2);
}
}
.cv-status-chip {
font-size: 10px;
font-weight: 700;
padding: 2px 10px;
border-radius: 12px;
letter-spacing: 0.4px;
text-transform: uppercase;
background: rgba(255, 255, 255, 0.15);
color: rgba(255, 255, 255, 0.9);
.cv-menu-btn {
color: $white-50 !important;
width: 36px !important;
height: 36px !important;
border: 1px solid $white-15;
border-radius: 8px !important;
&:hover {
background: $white-08;
color: $white !important;
}
}
/* ── ID Chips Row ── */
.cv-id-row {
// ID chips
.cv-ids {
display: flex;
align-items: center;
gap: 12px;
gap: 8px;
margin-bottom: 14px;
flex-wrap: wrap;
}
.cv-id-chip {
.cv-id {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 4px 12px;
background: rgba(255, 255, 255, 0.1);
border: 1px solid rgba(255, 255, 255, 0.15);
border-radius: 5px;
color: #fff;
font-size: 12px;
gap: 8px;
padding: 5px 12px;
background: $white-08;
border: 1px solid $white-15;
border-radius: 6px;
&__label {
font-size: 9px;
font-weight: 700;
color: $white-30;
text-transform: uppercase;
letter-spacing: 0.5px;
}
&__val {
font-size: 12px;
font-weight: 600;
color: $white;
font-family: 'SF Mono', 'Cascadia Code', 'Consolas', monospace;
letter-spacing: 0.3px;
}
}
.cv-id-label {
font-size: 10px;
font-weight: 600;
color: rgba(255, 255, 255, 0.55);
text-transform: uppercase;
letter-spacing: 0.4px;
}
/* ── Details Grid ── */
.cv-details-grid {
// Details grid
.cv-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 6px 16px;
gap: 0;
background: $white-08;
border-radius: 8px;
border: 1px solid $white-15;
overflow: hidden;
}
.cv-detail {
display: flex;
flex-direction: column;
gap: 1px;
padding: 4px 0;
}
.cv-cell {
padding: 8px 12px;
border-bottom: 1px solid $white-08;
border-right: 1px solid $white-08;
.cv-dl {
font-size: 10px;
color: rgba(255, 255, 255, 0.5);
font-weight: 500;
}
&:nth-child(4n) {
border-right: none;
}
.cv-dv {
font-size: 13px;
color: rgba(255, 255, 255, 0.95);
font-weight: 500;
&__label {
font-size: 9px;
font-weight: 600;
color: $white-30;
text-transform: uppercase;
letter-spacing: 0.5px;
margin-bottom: 2px;
}
&__value {
font-size: 12.5px;
font-weight: 500;
color: $white;
line-height: 1.3;
}
}
// Actions menu
.actions-menu {
color: #fff !important;
color: $white !important;
}
/* ── Responsive ── */
// Responsive
@media (max-width: 1024px) {
.cv-details-grid {
.cv-grid {
grid-template-columns: repeat(3, 1fr);
}
.cv-cell:nth-child(4n) {
border-right: 1px solid $white-08;
}
.cv-cell:nth-child(3n) {
border-right: none;
}
}
@media (max-width: 768px) {
.cv-details-grid {
.cv-top {
flex-direction: column;
align-items: center;
text-align: center;
}
.cv-name-row {
justify-content: center;
}
.cv-ids {
justify-content: center;
}
.cv-grid {
grid-template-columns: repeat(2, 1fr);
}
.cv-id-row {
flex-direction: column;
align-items: flex-start;
.cv-cell:nth-child(3n) {
border-right: 1px solid $white-08;
}
.cv-cell:nth-child(2n) {
border-right: none;
}
}
@media (max-width: 480px) {
.cv-details-grid {
.cv-grid {
grid-template-columns: 1fr;
}
.cv-cell {
border-right: none !important;
}
}