Merge branch 'feature/merge-updates' from cbsnexora into feature/ui-reports-product

Conflict resolutions:
- src/main.scss: kept both new dialog backdrops (CIC/PSL/ALM/CIMS/CKYC/Acct)
  and incoming dialog panel styles (.abd-dialog-panel, .arc-dialog-panel)
- client-general-step.component.html/.ts: kept HEAD's agriculture/non-agri
  income fields, education/degree/religion/social-category dropdowns,
  and inject() refactor matching the incoming pattern
- kyc-management.component.html/.scss/.ts: kept HEAD's Home Visit
  terminology, takeAction() method, hv-* and vkyc-* dialog styles;
  accepted incoming .km-warn-d style addition

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Aditya
2026-04-29 19:22:00 +05:30
co-authored by Claude Opus 4.7
470 changed files with 46834 additions and 11014 deletions
+121 -28
View File
@@ -16,14 +16,27 @@
<!-- Meta Chips -->
<div class="t-meta">
<div class="t-chip"><div class="t-live"></div>&nbsp;LIVE</div>
<div class="t-chip">
<div class="t-live"></div>
&nbsp;LIVE
</div>
<div class="t-chip">Branch:&nbsp;<strong>HO</strong></div>
<div class="t-chip">Date:&nbsp;<strong>{{ today | date:'dd MMM yyyy' }}</strong></div>
<div class="t-chip">Last login:&nbsp;<strong>{{ lastLoginTime }}</strong></div>
<div class="t-chip">
Date:&nbsp;<strong>{{ today | date: 'dd MMM yyyy' }}</strong>
</div>
<div class="t-chip">
Last login:&nbsp;<strong>{{ lastLoginTime }}</strong>
</div>
<div class="t-sep"></div>
<div class="t-chip t-chip--secure"><i class="fas fa-lock t-chip-icon t-chip-icon--green"></i>SSL/TLS&nbsp;<strong>256-bit</strong></div>
<div class="t-chip t-chip--secure"><i class="fas fa-certificate t-chip-icon t-chip-icon--blue"></i>ISO 27001&nbsp;<strong>Certified</strong></div>
<div class="t-chip t-chip--timer"><i class="fas fa-clock t-chip-icon t-chip-icon--amber"></i>Session&nbsp;<strong>{{ sessionTimer }}</strong></div>
<div class="t-chip t-chip--secure">
<i class="fas fa-lock t-chip-icon t-chip-icon--green"></i>SSL/TLS&nbsp;<strong>256-bit</strong>
</div>
<div class="t-chip t-chip--secure">
<i class="fas fa-certificate t-chip-icon t-chip-icon--blue"></i>ISO 27001&nbsp;<strong>Certified</strong>
</div>
<div class="t-chip t-chip--timer">
<i class="fas fa-clock t-chip-icon t-chip-icon--amber"></i>Session&nbsp;<strong>{{ sessionTimer }}</strong>
</div>
</div>
<!-- Right Actions -->
@@ -43,7 +56,11 @@
<div class="t-divider"></div>
<div #appMenu class="t-action-btn t-user-btn" [matMenuTriggerFor]="applicationMenu" matTooltip="Account">
<img src="assets/images/user_placeholder.png" [alt]="'labels.headings.User Profile' | translate" class="t-user-img" />
<img
src="assets/images/user_placeholder.png"
[alt]="'labels.headings.User Profile' | translate"
class="t-user-img"
/>
</div>
</div>
</div>
@@ -66,7 +83,11 @@
<!-- Transactions -->
<div class="subledger-group">
<div class="subledger-group-title">Transactions</div>
<a class="subledger-link" [class.hidden]="!matchesSearch('Cash / Clearing / Transfer')" (click)="subLedgerOpen = false">
<a
class="subledger-link"
[class.hidden]="!matchesSearch('Cash / Clearing / Transfer')"
(click)="subLedgerOpen = false"
>
<fa-icon icon="money-bill" class="subledger-icon"></fa-icon> Cash / Clearing / Transfer
</a>
<a class="subledger-link" [class.hidden]="!matchesSearch('Batch Transaction')" (click)="subLedgerOpen = false">
@@ -114,7 +135,12 @@
<!-- Customer -->
<div class="subledger-group">
<div class="subledger-group-title">Customer</div>
<a class="subledger-link" [class.hidden]="!matchesSearch('Client Master')" routerLink="/clients" (click)="subLedgerOpen = false">
<a
class="subledger-link"
[class.hidden]="!matchesSearch('Client Master')"
routerLink="/clients"
(click)="subLedgerOpen = false"
>
<fa-icon icon="user" class="subledger-icon"></fa-icon> Client Master
</a>
<a class="subledger-link" [class.hidden]="!matchesSearch('Account Master')" (click)="subLedgerOpen = false">
@@ -131,10 +157,18 @@
<!-- Account Status -->
<div class="subledger-group">
<div class="subledger-group-title">Account Status</div>
<a class="subledger-link" [class.hidden]="!matchesSearch('Inoperative to Operative')" (click)="subLedgerOpen = false">
<a
class="subledger-link"
[class.hidden]="!matchesSearch('Inoperative to Operative')"
(click)="subLedgerOpen = false"
>
<fa-icon icon="lock-open" class="subledger-icon"></fa-icon> Inoperative &rarr; Operative
</a>
<a class="subledger-link" [class.hidden]="!matchesSearch('Account Status Master')" (click)="subLedgerOpen = false">
<a
class="subledger-link"
[class.hidden]="!matchesSearch('Account Status Master')"
(click)="subLedgerOpen = false"
>
<fa-icon icon="cog" class="subledger-icon"></fa-icon> Account Status Master
</a>
<a class="subledger-link" [class.hidden]="!matchesSearch('Restrict Account')" (click)="subLedgerOpen = false">
@@ -160,7 +194,11 @@
<a class="subledger-link" [class.hidden]="!matchesSearch('Holiday Marking')" (click)="subLedgerOpen = false">
<fa-icon icon="calendar" class="subledger-icon"></fa-icon> Holiday Marking
</a>
<a class="subledger-link" [class.hidden]="!matchesSearch('Open Closed Register')" (click)="subLedgerOpen = false">
<a
class="subledger-link"
[class.hidden]="!matchesSearch('Open Closed Register')"
(click)="subLedgerOpen = false"
>
<fa-icon icon="book-open" class="subledger-icon"></fa-icon> Open Closed Register
</a>
</div>
@@ -185,27 +223,66 @@
<div class="subledger-columns">
<div class="subledger-group">
<div class="subledger-group-title">Financial Statements</div>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('Trial Balance')" (click)="glMenuOpen = false"><fa-icon icon="balance-scale" class="subledger-icon"></fa-icon> Trial Balance</a>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('Profit and Loss')" (click)="glMenuOpen = false"><fa-icon icon="chart-line" class="subledger-icon"></fa-icon> Profit and Loss</a>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('Consolidate Balance Sheet')" (click)="glMenuOpen = false"><fa-icon icon="file-alt" class="subledger-icon"></fa-icon> Consolidate Balance Sheet</a>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('Trial Balance')" (click)="glMenuOpen = false"
><fa-icon icon="balance-scale" class="subledger-icon"></fa-icon> Trial Balance</a
>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('Profit and Loss')" (click)="glMenuOpen = false"
><fa-icon icon="chart-line" class="subledger-icon"></fa-icon> Profit and Loss</a
>
<a
class="subledger-link"
[class.hidden]="!matchesGlSearch('Consolidate Balance Sheet')"
(click)="glMenuOpen = false"
><fa-icon icon="file-alt" class="subledger-icon"></fa-icon> Consolidate Balance Sheet</a
>
</div>
<div class="subledger-group">
<div class="subledger-group-title">GL Reports</div>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('GL Average Balance')" (click)="glMenuOpen = false"><fa-icon icon="calculator" class="subledger-icon"></fa-icon> GL Average Balance</a>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('GL Mapping for Report')" (click)="glMenuOpen = false"><fa-icon icon="project-diagram" class="subledger-icon"></fa-icon> GL Mapping for Report</a>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('Account wise Balance List')" (click)="glMenuOpen = false"><fa-icon icon="list" class="subledger-icon"></fa-icon> Account wise Balance List</a>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('Distribution of Balance')" (click)="glMenuOpen = false"><fa-icon icon="chart-pie" class="subledger-icon"></fa-icon> Distribution of Balance</a>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('GL Average Balance')" (click)="glMenuOpen = false"
><fa-icon icon="calculator" class="subledger-icon"></fa-icon> GL Average Balance</a
>
<a
class="subledger-link"
[class.hidden]="!matchesGlSearch('GL Mapping for Report')"
(click)="glMenuOpen = false"
><fa-icon icon="project-diagram" class="subledger-icon"></fa-icon> GL Mapping for Report</a
>
<a
class="subledger-link"
[class.hidden]="!matchesGlSearch('Account wise Balance List')"
(click)="glMenuOpen = false"
><fa-icon icon="list" class="subledger-icon"></fa-icon> Account wise Balance List</a
>
<a
class="subledger-link"
[class.hidden]="!matchesGlSearch('Distribution of Balance')"
(click)="glMenuOpen = false"
><fa-icon icon="chart-pie" class="subledger-icon"></fa-icon> Distribution of Balance</a
>
</div>
<div class="subledger-group">
<div class="subledger-group-title">Account Reports</div>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('Client wise Balance Report')" (click)="glMenuOpen = false"><fa-icon icon="users" class="subledger-icon"></fa-icon> Client wise Balance Report</a>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('Contingent Expense')" (click)="glMenuOpen = false"><fa-icon icon="exclamation-circle" class="subledger-icon"></fa-icon> Contingent Expense</a>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('Banker Head Report')" (click)="glMenuOpen = false"><fa-icon icon="university" class="subledger-icon"></fa-icon> Banker Head Report</a>
<a
class="subledger-link"
[class.hidden]="!matchesGlSearch('Client wise Balance Report')"
(click)="glMenuOpen = false"
><fa-icon icon="users" class="subledger-icon"></fa-icon> Client wise Balance Report</a
>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('Contingent Expense')" (click)="glMenuOpen = false"
><fa-icon icon="exclamation-circle" class="subledger-icon"></fa-icon> Contingent Expense</a
>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('Banker Head Report')" (click)="glMenuOpen = false"
><fa-icon icon="university" class="subledger-icon"></fa-icon> Banker Head Report</a
>
</div>
<div class="subledger-group">
<div class="subledger-group-title">Registers</div>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('Sundry Register')" (click)="glMenuOpen = false"><fa-icon icon="clipboard-list" class="subledger-icon"></fa-icon> Sundry Register</a>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('Voucher Register')" (click)="glMenuOpen = false"><fa-icon icon="receipt" class="subledger-icon"></fa-icon> Voucher Register</a>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('Sundry Register')" (click)="glMenuOpen = false"
><fa-icon icon="clipboard-list" class="subledger-icon"></fa-icon> Sundry Register</a
>
<a class="subledger-link" [class.hidden]="!matchesGlSearch('Voucher Register')" (click)="glMenuOpen = false"
><fa-icon icon="receipt" class="subledger-icon"></fa-icon> Voucher Register</a
>
</div>
</div>
</div>
@@ -348,7 +425,11 @@
<button mat-raised-button color="primary" (click)="popover.close(); showPopover(templateAdmin, admin)">
{{ 'labels.buttons.Back' | translate }}
</button>
<button mat-raised-button color="primary" (click)="popover.close(); showPopover(templateConfigWizard, configWizard)">
<button
mat-raised-button
color="primary"
(click)="popover.close(); showPopover(templateConfigWizard, configWizard)"
>
{{ 'labels.buttons.Next' | translate }}
</button>
</div>
@@ -364,7 +445,11 @@
<button mat-raised-button color="primary" (click)="popover.close(); showPopover(templateSelfService, selfService)">
{{ 'labels.buttons.Back' | translate }}
</button>
<button mat-raised-button color="primary" (click)="popover.close(); showPopover(templateNotifications, notifications)">
<button
mat-raised-button
color="primary"
(click)="popover.close(); showPopover(templateNotifications, notifications)"
>
{{ 'labels.buttons.Next' | translate }}
</button>
</div>
@@ -377,7 +462,11 @@
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
<button mat-raised-button color="primary" (click)="popover.close(); showPopover(templateConfigWizard, configWizard)">
<button
mat-raised-button
color="primary"
(click)="popover.close(); showPopover(templateConfigWizard, configWizard)"
>
{{ 'labels.buttons.Back' | translate }}
</button>
<button mat-raised-button color="primary" (click)="popover.close(); showPopover(templateThemePicker, themeToggle)">
@@ -393,7 +482,11 @@
<button mat-raised-button color="warn" (click)="popover.close(); configurationWizardService.closeConfigWizard()">
{{ 'labels.buttons.Close' | translate }}
</button>
<button mat-raised-button color="primary" (click)="popover.close(); showPopover(templateNotifications, notifications)">
<button
mat-raised-button
color="primary"
(click)="popover.close(); showPopover(templateNotifications, notifications)"
>
{{ 'labels.buttons.Back' | translate }}
</button>
<button mat-raised-button color="primary" (click)="popover.close(); showPopover(templateAppMenu, appMenu)">
@@ -26,8 +26,11 @@ $top-h: 32px;
position: absolute;
inset: 0;
background: repeating-linear-gradient(
108deg, transparent 0, transparent 80px,
rgb(255 255 255 / 2.2%) 80px, rgb(255 255 255 / 2.2%) 160px
108deg,
transparent 0,
transparent 80px,
rgb(255 255 255 / 2.2%) 80px,
rgb(255 255 255 / 2.2%) 160px
);
pointer-events: none;
}
@@ -54,10 +57,21 @@ $top-h: 32px;
span {
border-radius: 1.5px;
&:nth-child(1) { background: #fff; }
&:nth-child(2) { background: $accent; }
&:nth-child(3) { background: $accent-2; }
&:nth-child(4) { background: rgb(255 255 255 / 30%); }
&:nth-child(1) {
background: #fff;
}
&:nth-child(2) {
background: $accent;
}
&:nth-child(3) {
background: $accent-2;
}
&:nth-child(4) {
background: rgb(255 255 255 / 30%);
}
}
}
@@ -112,9 +126,17 @@ $top-h: 32px;
.t-chip-icon {
font-size: 9px;
&--green { color: #34d399; }
&--blue { color: #60a5fa; }
&--amber { color: #fbbf24; }
&--green {
color: #34d399;
}
&--blue {
color: #60a5fa;
}
&--amber {
color: #fbbf24;
}
}
.t-chip--secure {
@@ -124,7 +146,10 @@ $top-h: 32px;
.t-chip--timer {
color: rgb(255 255 255 / 55%);
strong { color: #fbbf24 !important; font-weight: 600; }
strong {
color: #fbbf24 !important;
font-weight: 600;
}
}
.t-live {
@@ -285,7 +310,7 @@ $icon-hover-bg: rgb(255 255 255 / 10%);
border-radius: 0 0 10px 10px;
z-index: 1000;
border-top: 3px solid #0d47a1;
animation: slideDown 0.13s ease;
animation: slide-down 0.13s ease;
}
.subledger-mega-menu-header {
@@ -309,9 +334,16 @@ $icon-hover-bg: rgb(255 255 255 / 10%);
color: #0d47a1;
}
@keyframes slideDown {
from { opacity: 0; transform: translateX(-50%) translateY(-4px); }
to { opacity: 1; transform: translateX(-50%) translateY(0); }
@keyframes slide-down {
from {
opacity: 0;
transform: translateX(-50%) translateY(-4px);
}
to {
opacity: 1;
transform: translateX(-50%) translateY(0);
}
}
.subledger-search {
@@ -358,7 +390,9 @@ $icon-hover-bg: rgb(255 255 255 / 10%);
font-size: 13px;
cursor: pointer;
border-radius: 5px;
transition: background 0.15s, color 0.15s;
transition:
background 0.15s,
color 0.15s;
&:hover {
background: #e3f2fd;