feat: non-individual entity UI improvements — hide individual-only sections, fix legal form display, send extended fields to API

- Hide Family Members tab/section for non-individual entities in client view, create flow, and preview
- Hide Financial & Classification section for non-individual entities in personal data and preview
- Fix legal form column in clients list — fetch legalForm from client API for correct display
- Add person/business icon before client name in list rows
- Remove unsupportedNpd filter — send authorizedSignatory, additionalInfo, dateOfRegistration to API
- Add registration number format hint (mat-hint) based on constitution type
- Add spacing between verification row and constitution type dropdowns
- Reduce table cell padding and prevent action buttons from being clipped
- Add missing MPL-2.0 license headers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Aditya
2026-04-04 15:10:51 +05:30
co-authored by Claude Opus 4.6
parent ab01111424
commit b890d24bb7
522 changed files with 51991 additions and 21885 deletions
@@ -369,3 +369,263 @@
color: #c62828;
}
}
/* PAN-Aadhaar Link Card */
.kyc-link-card {
margin-bottom: 16px;
}
.status-chip {
&.linked {
background: #ecfdf5;
color: #059669;
border: 1px solid #a7f3d0;
}
&.not-linked {
background: #fef2f2;
color: #dc2626;
border: 1px solid #fecaca;
}
&.exempt {
background: #eff6ff;
color: #2563eb;
border: 1px solid #bfdbfe;
}
}
.pan-aadhaar-detail {
margin: 12px 0;
display: flex;
flex-direction: column;
gap: 6px;
}
.pan-aadhaar-row {
display: flex;
align-items: center;
gap: 10px;
font-size: 13px;
padding: 4px 0;
border-bottom: 1px solid #f1f5f9;
&:last-child {
border-bottom: none;
}
}
.pan-aadhaar-label {
font-weight: 600;
color: #64748b;
min-width: 120px;
}
.pan-aadhaar-value {
color: #0f172a;
font-weight: 500;
}
.text-success {
color: #059669 !important;
font-weight: 700 !important;
}
.text-danger {
color: #dc2626 !important;
font-weight: 700 !important;
}
/* ═══ KYC Verification Table ═══ */
.kv-table {
border: 1px solid #e2e8f0;
border-radius: 10px;
overflow: hidden;
margin-bottom: 16px;
}
.kv-table__header {
display: flex;
align-items: center;
background: #f8fafc;
border-bottom: 1px solid #e2e8f0;
padding: 0;
}
.kv-table__header .kv-table__col {
font-size: 10px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.06em;
color: #64748b;
padding: 10px 14px;
}
.kv-table__row {
display: flex;
align-items: center;
border-bottom: 1px solid #f1f5f9;
padding: 0;
transition: background 0.1s;
&:last-child { border-bottom: none; }
&:hover { background: #f8fafc; }
&--link { background: #fafbfc; }
}
.kv-table__col {
padding: 12px 14px;
font-size: 13px;
color: #1e293b;
&--doc {
flex: 0 0 160px;
display: flex;
align-items: center;
gap: 8px;
font-weight: 600;
}
&--num { flex: 1; }
&--status { flex: 0 0 150px; }
&--date { flex: 0 0 150px; color: #64748b; font-size: 12px; }
&--action { flex: 0 0 110px; text-align: right; }
}
.kv-doc-icon {
font-size: 18px !important;
width: 18px !important;
height: 18px !important;
color: #1074b9;
}
.kv-mono {
font-family: 'Roboto Mono', monospace;
letter-spacing: 0.5px;
font-weight: 500;
}
.kv-status {
display: inline-flex;
align-items: center;
gap: 4px;
font-size: 12px;
font-weight: 600;
padding: 3px 10px;
border-radius: 12px;
mat-icon {
font-size: 14px !important;
width: 14px !important;
height: 14px !important;
}
&--ok { background: #ecfdf5; color: #059669; }
&--pending { background: #f8fafc; color: #94a3b8; }
&--fail { background: #fef2f2; color: #dc2626; }
&--info { background: #eff6ff; color: #2563eb; }
}
.kv-action-btn {
font-size: 11px !important;
height: 30px !important;
line-height: 30px !important;
padding: 0 12px !important;
border-radius: 6px !important;
font-weight: 600 !important;
color: #1074b9 !important;
border-color: #1074b9 !important;
}
/* OTP Bar (below table) */
.kv-otp-bar {
display: flex;
align-items: center;
gap: 10px;
padding: 12px 16px;
background: #f8fafc;
border: 1px solid #e2e8f0;
border-radius: 8px;
margin-bottom: 12px;
}
.kv-otp-label {
display: flex;
align-items: center;
gap: 4px;
font-size: 12px;
color: #1074b9;
font-weight: 600;
white-space: nowrap;
mat-icon { font-size: 16px !important; width: 16px !important; height: 16px !important; }
}
.kv-otp-input {
width: 200px;
flex-shrink: 0;
::ng-deep .mat-mdc-form-field-infix { padding: 6px 0 !important; min-height: 36px !important; }
}
.kv-otp-btn {
height: 36px !important;
font-size: 12px !important;
font-weight: 600 !important;
border-radius: 6px !important;
padding: 0 16px !important;
}
/* Meta Grid */
.kv-meta-grid {
display: grid;
grid-template-columns: repeat(5, 1fr);
border: 1px solid #e2e8f0;
border-radius: 10px;
overflow: hidden;
margin-top: 16px;
}
.kv-meta-item {
display: flex;
flex-direction: column;
gap: 3px;
padding: 12px 14px;
border-right: 1px solid #f1f5f9;
border-bottom: 1px solid #f1f5f9;
&:nth-child(5n) { border-right: none; }
&--full { grid-column: 1 / -1; border-right: none; }
}
.kv-meta-label {
font-size: 10px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.04em;
color: #94a3b8;
}
.kv-meta-value {
font-size: 13px;
font-weight: 500;
color: #1e293b;
}
@media (max-width: 960px) {
.kv-table__col {
&--doc { flex: 0 0 120px; }
&--date { display: none; }
&--action { flex: 0 0 90px; }
}
.kv-meta-grid { grid-template-columns: repeat(3, 1fr); }
.kv-meta-item:nth-child(5n) { border-right: 1px solid #f1f5f9; }
.kv-meta-item:nth-child(3n) { border-right: none; }
}
@media (max-width: 640px) {
.kv-table__row { flex-wrap: wrap; }
.kv-table__col { &--status, &--action { flex: 0 0 50%; } }
.kv-meta-grid { grid-template-columns: 1fr 1fr; }
.kv-otp-bar { flex-wrap: wrap; }
}