Files
cbsnexora/src/app/cfcfrms/i4c/i4c-holds/i4c-holds.component.scss
T
niteshandClaude Opus 5.5 96bebd339b feat(cfcfrms): I4C Live screens for SOP layer chain, risk, bank holds and restorations
- Risk screen and shared I4C date field
- Bank Master: IFSC to I4C bank code map and unmapped IFSC list
- Holds, restorations, grievances, documents, outbox and dashboard updates
  for the backend I4C SOP / outward ledger changes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 11:25:40 +05:30

1009 lines
17 KiB
SCSS

/**
* Copyright since 2025 Mifos Initiative
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
@use '../i4c' as *;
@include i4c-skin;
.search-input {
width: 240px;
}
.search-btn {
height: 38px;
border-radius: 8px;
font-weight: 600;
font-size: 11.5px;
}
.count-tag {
font-size: 11px;
font-weight: 700;
color: #64748b;
background: #f1f5f9;
padding: 2px 7px;
border-radius: 9999px;
border: 1px solid #e2e8f0;
}
.head-hint {
margin-left: auto;
font-size: 11px;
color: #94a3b8;
font-weight: normal;
}
.acc-cell {
display: flex;
align-items: center;
gap: 6px;
b {
color: #0f172a;
font-size: 12px;
}
}
.type-tag {
padding: 1px 6px;
border-radius: 4px;
background: #f1f5f9;
font-size: 10px;
font-weight: 700;
color: #64748b;
}
.client-name {
font-weight: 600;
color: #1e293b;
}
.ack-cell {
display: flex;
align-items: center;
gap: 6px;
.ack-no {
font-weight: 600;
color: #334155;
font-size: 12px;
}
}
.short-pill {
display: inline-block;
padding: 2px 6px;
border-radius: 6px;
background: #fef2f2;
color: #dc2626;
font-weight: 700;
font-size: 11px;
}
.intimation-ok {
display: inline-flex;
align-items: center;
gap: 5px;
color: #059669;
font-weight: 600;
font-size: 12px;
fa-icon {
font-size: 13px;
}
}
.review-date {
font-size: 12px;
color: #475569;
font-weight: 500;
}
.due-alert {
color: #d97706;
font-weight: 700;
display: inline-flex;
align-items: center;
gap: 4px;
}
.modal-title-row {
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
}
.sub {
font-size: 11px;
color: #64748b;
margin-top: 2px;
}
.err-text {
color: #dc2626;
font-size: 12px;
}
.text-accent {
color: #2563eb;
}
.amount-held-text {
color: #0f172a;
font-size: 13.5px;
}
.text-muted {
color: #94a3b8;
}
.footer-btn-close {
padding: 6px 14px;
border-radius: 8px;
background: #e2e8f0;
color: #334155;
border: none;
font-size: 11.5px;
font-weight: 600;
cursor: pointer;
transition: all 0.2s;
&:hover {
background: #cbd5e1;
color: #0f172a;
}
}
.intim-status {
display: flex;
gap: 12px;
align-items: center;
padding: 12px 16px;
border-radius: 10px;
margin-bottom: 12px;
font-size: 13px;
line-height: 1.5;
border: 1px solid;
> div {
flex: 1 1 auto;
}
&--done {
border-color: #bbf7d0;
background: #f0fdf4;
color: #166534;
}
&--auto {
border-color: #bfdbfe;
background: #eff6ff;
color: #1e3a8a;
}
&--manual {
border-color: #fde68a;
background: #fffbeb;
color: #92400e;
}
}
.wrap {
white-space: normal;
overflow-wrap: anywhere;
max-width: 320px;
}
/* ========================================================
SHARED PRIMITIVES FOR I4C CASES & RISK TABS
======================================================== */
.card-icon-badge {
width: 24px;
height: 24px;
border-radius: 6px;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 11px;
flex-shrink: 0;
&--blue {
background: #eff6ff;
color: #2563eb;
}
&--amber {
background: #fffbeb;
color: #d97706;
}
&--red {
background: #fef2f2;
color: #dc2626;
}
&--purple {
background: #f5f3ff;
color: #7c3aed;
}
&--green {
background: #ecfdf5;
color: #059669;
}
}
.status-chip {
display: inline-flex;
align-items: center;
padding: 1px 6px;
border-radius: 9999px;
font-size: 10px;
font-weight: 700;
letter-spacing: 0.02em;
&--green {
background: #ecfdf5;
color: #059669;
}
&--blue {
background: #eff6ff;
color: #2563eb;
}
&--neutral {
background: #e2e8f0;
color: #475569;
}
}
.risk-btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 5px;
height: 30px;
padding: 0 12px;
border-radius: 6px;
font-size: 11.5px;
font-weight: 600;
cursor: pointer;
border: 1px solid transparent;
transition: all 0.18s cubic-bezier(0.16, 1, 0.3, 1);
align-self: flex-start;
user-select: none;
&:disabled {
opacity: 0.5;
cursor: not-allowed;
}
&--primary {
background: #2563eb;
color: #fff;
box-shadow: 0 1px 2px rgb(37 99 235 / 20%);
&:hover:not(:disabled) {
background: #1d4ed8;
}
}
&--danger {
background: #dc2626;
color: #fff;
box-shadow: 0 1px 2px rgb(220 38 38 / 20%);
&:hover:not(:disabled) {
background: #b91c1c;
}
}
&--warn {
background: #d97706;
color: #fff;
box-shadow: 0 1px 2px rgb(217 119 6 / 20%);
&:hover:not(:disabled) {
background: #b45309;
}
}
&--success {
background: #059669;
color: #fff;
box-shadow: 0 1px 2px rgb(5 150 105 / 20%);
&:hover:not(:disabled) {
background: #047857;
}
}
&--ghost {
background: #f1f5f9;
color: #475569;
border-color: #e2e8f0;
&:hover:not(:disabled) {
background: #e2e8f0;
color: #1e293b;
}
}
}
.risk-btn-group {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
}
/* ========================================================
GRM / MRM & Documents Tab: Modern Executive Case Hub
======================================================== */
.cases-tab {
display: flex;
flex-direction: column;
gap: 12px;
.cases-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 12px;
@media (width <= 900px) {
grid-template-columns: minmax(0, 1fr);
}
}
.case-card {
background: #fff;
border: 1px solid #e2e8f0;
border-radius: 10px;
box-shadow:
0 1px 3px rgb(15 23 42 / 4%),
0 1px 2px rgb(15 23 42 / 2%);
overflow: hidden;
transition:
box-shadow 0.2s ease,
border-color 0.2s ease;
&:hover {
box-shadow: 0 4px 12px rgb(15 23 42 / 6%);
border-color: #cbd5e1;
}
&__head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
padding: 9px 12px;
background: linear-gradient(180deg, #fff 0%, #f8fafc 100%);
border-bottom: 1px solid #e2e8f0;
}
&__title {
display: flex;
align-items: center;
gap: 8px;
font-size: 12.5px;
font-weight: 700;
color: #0f172a;
}
&__subtitle {
font-size: 10.5px;
font-weight: normal;
color: #64748b;
margin-top: 1px;
}
&__body {
padding: 12px;
display: flex;
flex-direction: column;
gap: 10px;
font-size: 11.5px;
}
}
/* Interactive Case List Items */
.case-item-card {
display: flex;
flex-direction: column;
gap: 6px;
padding: 8px 10px;
background: #f8fafc;
border: 1px solid #e2e8f0;
border-radius: 8px;
cursor: pointer;
transition: all 0.15s ease;
&:hover,
&:focus-visible {
border-color: #2563eb;
background: #eff6ff;
outline: none;
transform: translateY(-1px);
box-shadow: 0 2px 6px rgb(37 99 235 / 8%);
.case-view-link {
color: #1d4ed8;
}
}
&__top {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
b {
font-size: 12px;
color: #0f172a;
}
}
&__footer {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
font-size: 10.5px;
color: #64748b;
}
}
.case-badge-pill {
padding: 1px 6px;
border-radius: 4px;
background: #e2e8f0;
color: #475569;
font-size: 10px;
font-weight: 600;
}
.restorable-amt-pill {
padding: 1px 7px;
border-radius: 9999px;
background: #ecfdf5;
color: #059669;
border: 1px solid #a7f3d0;
font-size: 11px;
font-weight: 700;
margin-left: auto;
}
.case-view-link {
display: inline-flex;
align-items: center;
gap: 4px;
color: #2563eb;
font-weight: 600;
font-size: 10.5px;
fa-icon {
font-size: 9px;
}
}
/* Action Panel inside Case Cards */
.case-action-panel {
background: #f8fafc;
border: 1px solid #e2e8f0;
border-radius: 8px;
padding: 10px;
display: flex;
flex-direction: column;
gap: 8px;
&__head {
font-size: 10.5px;
font-weight: 700;
color: #475569;
text-transform: uppercase;
letter-spacing: 0.04em;
display: flex;
align-items: center;
gap: 5px;
fa-icon {
color: #2563eb;
font-size: 11px;
}
}
}
.case-form-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 8px;
.full-span {
grid-column: 1 / -1;
}
@media (width <= 480px) {
grid-template-columns: 1fr;
}
}
.case-empty-state {
display: flex;
align-items: center;
gap: 8px;
padding: 10px 12px;
border-radius: 8px;
background: #f8fafc;
border: 1px dashed #cbd5e1;
color: #64748b;
font-size: 11px;
line-height: 1.4;
fa-icon {
color: #94a3b8;
font-size: 13px;
flex-shrink: 0;
}
}
/* Statement Tool Card */
.statement-card {
.statement-form-row {
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
mat-form-field,
mifosx-i4c-date-field {
width: 190px;
flex: 1 1 180px;
}
.statement-btn {
height: 34px;
align-self: center;
white-space: nowrap;
}
}
}
mat-form-field,
mifosx-i4c-date-field {
width: 100%;
--mat-form-field-container-height: 34px;
--mat-form-field-container-vertical-padding: 6px;
--mat-form-field-container-text-size: 11.5px;
--mat-form-field-outlined-label-text-size: 11.5px;
--mat-select-trigger-text-size: 11.5px;
--mat-form-field-outlined-container-shape: 6px;
}
}
/* SOP & Risk tab: balanced 2-column executive dashboard layout */
.risk-tab {
display: flex;
flex-direction: column;
gap: 12px;
/* Sleek Executive Risk Notification Banner */
.risk-banner {
display: flex;
align-items: center;
gap: 12px;
padding: 10px 14px;
background: linear-gradient(135deg, #fff7f7 0%, #fef2f2 100%);
border: 1px solid #fecaca;
border-left: 4px solid #ef4444;
border-radius: 10px;
box-shadow: 0 1px 4px rgb(239 68 68 / 6%);
&__icon {
width: 32px;
height: 32px;
border-radius: 8px;
background: #fee2e2;
color: #dc2626;
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
flex-shrink: 0;
}
&__content {
flex: 1;
min-width: 0;
}
&__head {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
margin-bottom: 2px;
}
&__title {
font-size: 12.5px;
font-weight: 700;
color: #991b1b;
}
&__tag {
display: inline-flex;
align-items: center;
padding: 1px 7px;
border-radius: 9999px;
background: #fee2e2;
color: #991b1b;
font-size: 9.5px;
font-weight: 700;
letter-spacing: 0.03em;
text-transform: uppercase;
}
&__desc {
font-size: 11px;
color: #7f1d1d;
line-height: 1.45;
b {
font-weight: 700;
color: #450a0a;
}
}
}
/* 2-Column Responsive Dashboard Grid (Columns don't stretch each other) */
.risk-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12px;
align-items: start;
@media (width <= 960px) {
grid-template-columns: 1fr;
}
}
.risk-col {
display: flex;
flex-direction: column;
gap: 12px;
}
/* Executive Risk Cards */
.risk-card {
background: #fff;
border: 1px solid #e2e8f0;
border-radius: 10px;
box-shadow:
0 1px 3px rgb(15 23 42 / 4%),
0 1px 2px rgb(15 23 42 / 2%);
overflow: hidden;
transition:
box-shadow 0.2s ease,
border-color 0.2s ease;
&:hover {
box-shadow: 0 4px 12px rgb(15 23 42 / 6%);
border-color: #cbd5e1;
}
&__head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
padding: 9px 12px;
background: linear-gradient(180deg, #fff 0%, #f8fafc 100%);
border-bottom: 1px solid #e2e8f0;
}
&__title {
display: flex;
align-items: center;
gap: 7px;
font-size: 12.5px;
font-weight: 700;
color: #0f172a;
}
&__body {
padding: 12px;
display: flex;
flex-direction: column;
gap: 10px;
font-size: 11.5px;
}
}
/* Key-Value Timeline Rows */
.risk-kv-list {
display: flex;
flex-direction: column;
gap: 4px;
}
.risk-kv-item {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
padding: 5px 8px;
border-radius: 6px;
background: #f8fafc;
font-size: 11.5px;
&__label {
color: #64748b;
font-weight: 500;
}
&__value {
color: #0f172a;
font-weight: 600;
text-align: right;
display: inline-flex;
align-items: center;
gap: 5px;
}
}
/* Compact Action Boxes */
.risk-action-box {
background: #f8fafc;
border: 1px solid #e2e8f0;
border-radius: 8px;
padding: 10px;
display: flex;
flex-direction: column;
gap: 8px;
&__head {
font-size: 10.5px;
font-weight: 700;
color: #475569;
text-transform: uppercase;
letter-spacing: 0.04em;
display: flex;
align-items: center;
gap: 5px;
fa-icon {
color: #64748b;
font-size: 10px;
}
}
}
.risk-form-row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 8px;
@media (width <= 480px) {
grid-template-columns: 1fr;
}
}
.risk-form-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
gap: 8px;
}
/* Modern Material Form Field Overrides */
mat-form-field,
mifosx-i4c-date-field {
width: 100%;
--mat-form-field-container-height: 34px;
--mat-form-field-container-vertical-padding: 6px;
--mat-form-field-container-text-size: 11.5px;
--mat-form-field-outlined-label-text-size: 11.5px;
--mat-select-trigger-text-size: 11.5px;
--mat-form-field-outlined-container-shape: 6px;
}
/* Complaint info chip */
.complaint-chip-row {
margin-bottom: 2px;
}
.complaint-chip {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 4px 8px;
background: #fffbeb;
color: #92400e;
border: 1px solid #fde68a;
border-radius: 6px;
font-size: 11px;
fa-icon {
color: #d97706;
}
}
/* List Items inside Cards */
.case-card-item {
display: flex;
flex-direction: column;
gap: 3px;
padding: 7px 10px;
background: #f8fafc;
border: 1px solid #e2e8f0;
border-radius: 6px;
font-size: 11px;
&__top {
display: flex;
align-items: center;
gap: 6px;
}
&__source {
font-weight: 700;
color: #1e293b;
}
&__date {
margin-left: auto;
color: #94a3b8;
font-size: 10px;
}
&__reason {
color: #475569;
}
&__remarks {
color: #64748b;
font-style: italic;
}
&__val {
margin-left: auto;
font-weight: 700;
color: #0f172a;
}
}
/* Transfer Alert Card */
.transfer-alert-card {
display: flex;
flex-direction: column;
gap: 6px;
padding: 8px 10px;
background: #f8fafc;
border: 1px solid #e2e8f0;
border-radius: 8px;
&__top {
display: flex;
align-items: center;
gap: 7px;
flex-wrap: wrap;
}
.transfer-type-tag {
padding: 1px 6px;
border-radius: 4px;
background: #eff6ff;
color: #2563eb;
font-size: 10px;
font-weight: 700;
}
.transfer-acc {
font-size: 11.5px;
color: #0f172a;
}
.transfer-amount {
font-weight: 700;
color: #b91c1c;
font-size: 12px;
margin-left: auto;
}
&__meta {
font-size: 10.5px;
color: #64748b;
}
}
/* Channel status box */
.channel-status-box {
display: flex;
align-items: flex-start;
gap: 8px;
padding: 8px 10px;
background: #f0fdf4;
border: 1px solid #bbf7d0;
border-radius: 8px;
color: #166534;
font-size: 11px;
fa-icon {
color: #16a34a;
margin-top: 2px;
}
}
/* Empty Prompt */
.empty-prompt {
display: flex;
flex-direction: column;
gap: 8px;
padding: 10px;
background: #f8fafc;
border: 1px dashed #cbd5e1;
border-radius: 8px;
&__text {
font-size: 11px;
color: #64748b;
line-height: 1.45;
b {
color: #334155;
}
}
}
.compliance-note {
display: flex;
align-items: flex-start;
gap: 8px;
padding: 8px 10px;
background: #eff6ff;
border: 1px solid #bfdbfe;
border-radius: 6px;
font-size: 11px;
color: #1e40af;
line-height: 1.4;
fa-icon {
color: #3b82f6;
margin-top: 1px;
}
}
.sub-timeline {
display: flex;
align-items: center;
gap: 10px;
font-size: 11px;
color: #475569;
flex-wrap: wrap;
}
.sub-clean {
display: flex;
align-items: center;
gap: 6px;
color: #059669;
font-size: 11px;
font-weight: 500;
}
.sub {
font-size: 11px;
color: #64748b;
line-height: 1.45;
}
}