feat(election): candidate lock UI, director board grouping, collapsible elections, and member photos

- Candidate board: lock Remove and Change Symbol buttons when voting is active (VOTING_OPEN/CLOSED/RESULT_DECLARED/CANCELLED)
- Director board: group directors by election with Current/Past badges, sorted newest first
- Past election groups collapsed by default; click header to expand/collapse with chevron animation
- Show first 6 directors, expand button for remaining members
- Load member photos in director cards via clientImage API (fallback to initials)
- 4-column responsive grid for director cards

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jaanu423
2026-07-03 13:44:05 +05:30
co-authored by Claude Sonnet 4.6
parent 228df2f32c
commit c4387c5c79
6 changed files with 482 additions and 93 deletions
@@ -375,6 +375,31 @@
border-radius: 6px;
font-size: 11px;
}
.locked-badge {
display: inline-flex;
align-items: center;
gap: 3px;
background: #fffbeb;
color: #92400e;
border: 1px solid #fde68a;
padding: 4px 10px;
border-radius: 6px;
font-size: 11px;
font-weight: 600;
mat-icon {
font-size: 12px;
height: 12px;
width: 12px;
}
}
}
.btn-locked {
opacity: 0.5;
pointer-events: none;
cursor: not-allowed !important;
}
// ── Candidate Detail Drawer ────────────────────────────────────
@@ -734,6 +759,28 @@
}
}
.locked-notice {
display: flex;
align-items: center;
gap: 8px;
width: 100%;
margin-top: 8px;
padding: 10px 14px;
background: #fffbeb;
color: #92400e;
border: 1px solid #fde68a;
border-radius: 8px;
font-size: 13px;
font-weight: 500;
mat-icon {
font-size: 16px;
height: 16px;
width: 16px;
flex-shrink: 0;
}
}
.btn-remove-full {
display: flex;
align-items: center;