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:
co-authored by
Claude Opus 4.6
parent
ab01111424
commit
b890d24bb7
@@ -31,30 +31,14 @@
|
||||
<!-- Default mode for Shell -->
|
||||
<!-- Security Bar -->
|
||||
<div class="security-bar">
|
||||
<div class="security-bar-left">
|
||||
<!-- Row 1: Brand + IDRBT -->
|
||||
<div class="security-bar-row1">
|
||||
<div class="sec-brand">
|
||||
<span class="sec-brand-name">CBS<em>Nexora</em></span>
|
||||
<span class="sec-brand-tagline">Core Banking Solution — Next-Gen Operations & Reporting Architecture</span>
|
||||
<span class="sec-brand-delimiter">|</span>
|
||||
<span class="sec-brand-idrbt">In compliance with guidelines issued by Institute for Development and Research in Banking Technology (Established by Reserve Bank of India)</span>
|
||||
</div>
|
||||
<div class="sec-item">
|
||||
<span class="sec-dot"></span>
|
||||
<span class="sec-label">SSL/TLS</span>
|
||||
<span class="sec-val">256-bit Encrypted</span>
|
||||
</div>
|
||||
<div class="sec-item">
|
||||
<span class="sec-dot"></span>
|
||||
<span class="sec-label">ISO 27001</span>
|
||||
<span class="sec-val">Certified</span>
|
||||
</div>
|
||||
<div class="sec-item">
|
||||
<span class="sec-dot amber"></span>
|
||||
<span class="sec-label">Session expires in</span>
|
||||
<span class="session-timer">{{ sessionTimerDisplay }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="security-bar-right">
|
||||
<span class="sec-version">v{{ versions.mifos }}</span>
|
||||
<span class="env-tag">PROD</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -155,12 +139,12 @@
|
||||
<div class="sc-chip">
|
||||
<span class="sc-icon">⚖️</span>
|
||||
<span class="sc-label">Grievance Officer</span>
|
||||
<span class="sc-val">Aditya Vyas · grievance@lincpay.in</span>
|
||||
<span class="sc-val">Aditya Vyas · grievance@cbsnexora.in</span>
|
||||
</div>
|
||||
<div class="sc-chip">
|
||||
<span class="sc-icon">✉️</span>
|
||||
<span class="sc-label">Email</span>
|
||||
<span class="sc-val">support@lincpay.in</span>
|
||||
<span class="sc-val">support@cbsnexora.in</span>
|
||||
</div>
|
||||
<a class="sc-chip sc-chat" href="#">
|
||||
<span class="sc-icon">💬</span>
|
||||
@@ -172,7 +156,7 @@
|
||||
<div class="footer-divider"></div>
|
||||
|
||||
<div class="footer-bottom">
|
||||
<span class="fb-copy">© {{ currentYear }} LincPay Solutions Pvt. Ltd. All rights reserved.</span>
|
||||
<span class="fb-copy">© {{ currentYear }} CBS Nexora. All rights reserved.</span>
|
||||
<div class="fb-links">
|
||||
<a href="#">Terms</a>
|
||||
<a href="#">Privacy</a>
|
||||
|
||||
@@ -15,8 +15,10 @@ $accent-2: #10b981;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
gap: 0.5rem;
|
||||
gap: 0;
|
||||
width: 100%;
|
||||
max-height: 200px;
|
||||
overflow: hidden;
|
||||
font-size: 0.75rem;
|
||||
color: var(--md-sys-color-on-surface-variant, #44474e);
|
||||
|
||||
@@ -57,13 +59,23 @@ $accent-2: #10b981;
|
||||
// ===== Security Bar =====
|
||||
.security-bar {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 5px 40px;
|
||||
flex-direction: column;
|
||||
padding: 3px 40px;
|
||||
background: #f8f9fa;
|
||||
border-top: 1px solid rgba(0, 0, 0, 0.06);
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.06);
|
||||
margin-top: 24px;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.security-bar-row1 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.security-bar-row2 {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.security-bar-left,
|
||||
@@ -102,6 +114,21 @@ $accent-2: #10b981;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.sec-brand-delimiter {
|
||||
font-size: 12px;
|
||||
color: rgba(0, 0, 0, 0.2);
|
||||
margin: 0 6px;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.sec-brand-idrbt {
|
||||
font-size: 9px;
|
||||
color: #0ea5e9;
|
||||
white-space: nowrap;
|
||||
font-weight: 600;
|
||||
letter-spacing: 0.02em;
|
||||
}
|
||||
|
||||
.sec-item {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
@@ -166,7 +193,7 @@ $accent-2: #10b981;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
padding: 6px 40px;
|
||||
padding: 3px 40px;
|
||||
background: linear-gradient(90deg, #0d3d78 0%, #1a5276 50%, #0d3d78 100%);
|
||||
}
|
||||
|
||||
@@ -247,8 +274,8 @@ $accent-2: #10b981;
|
||||
.footer-top {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
gap: 40px;
|
||||
padding: 32px 40px 24px;
|
||||
gap: 20px;
|
||||
padding: 8px 40px 6px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
@@ -262,7 +289,7 @@ $accent-2: #10b981;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
margin-bottom: 10px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.f-logomark {
|
||||
@@ -302,9 +329,9 @@ $accent-2: #10b981;
|
||||
}
|
||||
|
||||
.footer-website {
|
||||
font-size: 12px;
|
||||
font-size: 11px;
|
||||
color: #5ec9f8;
|
||||
margin: 6px 0 0;
|
||||
margin: 2px 0 0;
|
||||
font-weight: 500;
|
||||
letter-spacing: 0.3px;
|
||||
}
|
||||
@@ -319,25 +346,25 @@ $accent-2: #10b981;
|
||||
.footer-col {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 6px;
|
||||
gap: 2px;
|
||||
min-width: 130px;
|
||||
}
|
||||
|
||||
.footer-col-title {
|
||||
font-size: 11px;
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.8px;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
margin: 0 0 4px;
|
||||
margin: 0 0 2px;
|
||||
}
|
||||
|
||||
.footer-link {
|
||||
font-size: 13px;
|
||||
font-size: 12px;
|
||||
color: rgba(255, 255, 255, 0.75);
|
||||
text-decoration: none;
|
||||
transition: color 0.15s;
|
||||
line-height: 1.6;
|
||||
line-height: 1.5;
|
||||
|
||||
&:hover {
|
||||
color: #5ec9f8;
|
||||
@@ -346,7 +373,7 @@ $accent-2: #10b981;
|
||||
|
||||
// ── Regulatory & Legal Section ──
|
||||
.regulatory-section {
|
||||
padding: 14px 40px;
|
||||
padding: 4px 40px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
@@ -357,13 +384,13 @@ $accent-2: #10b981;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.8px;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
margin: 0 0 8px;
|
||||
margin: 0 0 2px;
|
||||
}
|
||||
|
||||
.regulatory-grid {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 6px;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.reg-card {
|
||||
@@ -440,7 +467,7 @@ $accent-2: #10b981;
|
||||
|
||||
// ── Quick Navigation Section ──
|
||||
.quicknav-section {
|
||||
padding: 14px 40px;
|
||||
padding: 4px 40px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
@@ -451,13 +478,13 @@ $accent-2: #10b981;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.8px;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
margin: 0 0 8px;
|
||||
margin: 0 0 4px;
|
||||
}
|
||||
|
||||
.quicknav-grid {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 6px;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.qn-card {
|
||||
@@ -508,7 +535,7 @@ $accent-2: #10b981;
|
||||
|
||||
// ── Support & Contact Section ──
|
||||
.support-section {
|
||||
padding: 10px 40px;
|
||||
padding: 4px 40px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
@@ -519,7 +546,7 @@ $accent-2: #10b981;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.8px;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
margin: 0 0 8px;
|
||||
margin: 0 0 4px;
|
||||
}
|
||||
|
||||
.support-row {
|
||||
@@ -595,7 +622,7 @@ $accent-2: #10b981;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 16px;
|
||||
padding: 10px 40px;
|
||||
padding: 5px 40px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
flex-wrap: wrap;
|
||||
|
||||
@@ -169,7 +169,11 @@ import {
|
||||
faSlidersH,
|
||||
faPrint,
|
||||
faCertificate,
|
||||
faPaperclip
|
||||
faPaperclip,
|
||||
faCalendarTimes,
|
||||
faStar,
|
||||
faCrop,
|
||||
faStamp
|
||||
} from '@fortawesome/free-solid-svg-icons';
|
||||
|
||||
/**
|
||||
@@ -345,7 +349,11 @@ export class IconsModule {
|
||||
faSlidersH,
|
||||
faPrint,
|
||||
faCertificate,
|
||||
faPaperclip
|
||||
faPaperclip,
|
||||
faCalendarTimes,
|
||||
faStar,
|
||||
faCrop,
|
||||
faStamp
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,8 +273,8 @@ $mono: 'Roboto Mono', 'DM Mono', monospace;
|
||||
::ng-deep {
|
||||
.mat-mdc-header-row {
|
||||
background: #f8fafc;
|
||||
min-height: 40px;
|
||||
height: 40px;
|
||||
min-height: 34px;
|
||||
height: 34px;
|
||||
}
|
||||
|
||||
.mat-mdc-header-cell {
|
||||
@@ -284,31 +284,37 @@ $mono: 'Roboto Mono', 'DM Mono', monospace;
|
||||
letter-spacing: 0.06em;
|
||||
color: $text-muted;
|
||||
border-bottom: 1px solid $border;
|
||||
padding: 0 16px;
|
||||
padding: 0 12px;
|
||||
}
|
||||
|
||||
// Rows
|
||||
.mat-mdc-row {
|
||||
min-height: 44px;
|
||||
height: 44px;
|
||||
min-height: 36px;
|
||||
height: 36px;
|
||||
border-bottom: 1px solid #f1f5f9;
|
||||
transition: background 0.1s;
|
||||
|
||||
&:last-child { border-bottom: none; }
|
||||
|
||||
&:nth-child(even) {
|
||||
background: #fafbfc;
|
||||
}
|
||||
}
|
||||
|
||||
.table-row {
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
background: #f0f7ff;
|
||||
background: #eef4ff !important;
|
||||
}
|
||||
}
|
||||
|
||||
.mat-mdc-cell {
|
||||
font-size: 13px;
|
||||
font-weight: 400;
|
||||
color: $text;
|
||||
padding: 0 16px;
|
||||
padding: 0 12px;
|
||||
font-family: 'Inter', 'Roboto', -apple-system, sans-serif;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -316,7 +322,9 @@ $mono: 'Roboto Mono', 'DM Mono', monospace;
|
||||
.cell-link {
|
||||
color: $brand;
|
||||
font-weight: 500;
|
||||
font-size: 13px;
|
||||
cursor: pointer;
|
||||
font-family: 'Inter', 'Roboto', -apple-system, sans-serif;
|
||||
|
||||
&:hover { text-decoration: underline; }
|
||||
}
|
||||
@@ -324,20 +332,180 @@ $mono: 'Roboto Mono', 'DM Mono', monospace;
|
||||
.cell-mono {
|
||||
font-family: $mono;
|
||||
font-size: 12px;
|
||||
font-weight: 400;
|
||||
letter-spacing: 0.02em;
|
||||
color: #475569;
|
||||
}
|
||||
|
||||
// ===== Status Badge =====
|
||||
.status-badge {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
font-size: 10px;
|
||||
justify-content: center;
|
||||
gap: 5px;
|
||||
font-size: 11px;
|
||||
font-weight: 600;
|
||||
font-family: $mono;
|
||||
padding: 3px 10px;
|
||||
border-radius: 4px;
|
||||
letter-spacing: 0.03em;
|
||||
padding: 3px 12px;
|
||||
border-radius: 12px;
|
||||
letter-spacing: 0.02em;
|
||||
text-transform: capitalize;
|
||||
white-space: nowrap;
|
||||
font-family: 'Inter', 'Roboto', -apple-system, sans-serif;
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
border-radius: 50%;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Status colors via statusLookup pipe classes
|
||||
::ng-deep {
|
||||
.status-active {
|
||||
background: #ecfdf5 !important;
|
||||
color: #059669 !important;
|
||||
|
||||
&::before { background: #059669; }
|
||||
}
|
||||
|
||||
.status-active-overdue,
|
||||
.status-closed {
|
||||
background: #fef2f2 !important;
|
||||
color: #dc2626 !important;
|
||||
|
||||
&::before { background: #dc2626; }
|
||||
}
|
||||
|
||||
.status-submitted-and-pending-approval,
|
||||
.status-approved {
|
||||
background: #fffbeb !important;
|
||||
color: #d97706 !important;
|
||||
|
||||
&::before { background: #d97706; }
|
||||
}
|
||||
|
||||
.status-overpaid {
|
||||
background: #eff6ff !important;
|
||||
color: #2563eb !important;
|
||||
|
||||
&::before { background: #2563eb; }
|
||||
}
|
||||
}
|
||||
|
||||
// ===== Legal Form Badge =====
|
||||
.row-legal-icon {
|
||||
font-size: 18px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
vertical-align: middle;
|
||||
margin-right: 6px;
|
||||
|
||||
&.person { color: #2563eb; }
|
||||
&.entity { color: #7c3aed; }
|
||||
}
|
||||
|
||||
.legal-form-badge {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
font-size: 11px;
|
||||
font-weight: 600;
|
||||
padding: 2px 10px;
|
||||
border-radius: 10px;
|
||||
letter-spacing: 0.02em;
|
||||
white-space: nowrap;
|
||||
|
||||
&.person {
|
||||
background: #eff6ff;
|
||||
color: #2563eb;
|
||||
}
|
||||
|
||||
&.entity {
|
||||
background: #faf5ff;
|
||||
color: #7c3aed;
|
||||
}
|
||||
}
|
||||
|
||||
// ===== Profile Completion Steps =====
|
||||
.profile-steps {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.step-dot {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
border-radius: 50%;
|
||||
font-size: 9px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0;
|
||||
cursor: default;
|
||||
background: #f1f5f9;
|
||||
color: #94a3b8;
|
||||
border: 1.5px solid #e2e8f0;
|
||||
transition: all 0.15s;
|
||||
|
||||
&.done {
|
||||
background: #ecfdf5;
|
||||
color: #059669;
|
||||
border-color: #a7f3d0;
|
||||
}
|
||||
}
|
||||
|
||||
// ===== Action Icons =====
|
||||
.action-icons {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.action-chip {
|
||||
display: inline-flex !important;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: unset !important;
|
||||
padding: 0 10px !important;
|
||||
height: 28px !important;
|
||||
font-size: 12px !important;
|
||||
font-weight: 500 !important;
|
||||
letter-spacing: 0.02em;
|
||||
border-radius: 6px !important;
|
||||
line-height: 28px !important;
|
||||
|
||||
.mat-icon {
|
||||
font-size: 15px;
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
&--view {
|
||||
color: #1e40af;
|
||||
background: #eff6ff;
|
||||
border: 1px solid #93c5fd;
|
||||
|
||||
&:hover {
|
||||
background: #dbeafe;
|
||||
border-color: #60a5fa;
|
||||
}
|
||||
}
|
||||
|
||||
&--edit {
|
||||
color: #92400e;
|
||||
background: #fffbeb;
|
||||
border: 1px solid #fcd34d;
|
||||
|
||||
&:hover {
|
||||
background: #fef3c7;
|
||||
border-color: #fbbf24;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ===== Empty State =====
|
||||
|
||||
Reference in New Issue
Block a user