feat: Client & CKYC UI improvements — filters, KYC management, image crop+merge
- Clients list: CKYC icon, CKYC Number column, status/legal form/CKYC filters - CKYC: SFTP upload logs, date formatting, modal z-index fix, non-dismissible dialogs - KYC Management: new standalone module with alert dashboard, notification scheduler, audit inventory, account status - Image cropper: ngx-image-cropper integration for front+back document merge into single PNG - Sidebar: KYC Management menu entry after CKYC 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
79e455c4ed
commit
d72e969dc3
@@ -62,8 +62,8 @@ $accent-2: #10b981;
|
||||
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);
|
||||
border-top: 1px solid rgb(0 0 0 / 6%);
|
||||
border-bottom: 1px solid rgb(0 0 0 / 6%);
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ $accent-2: #10b981;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding-right: 20px;
|
||||
border-right: 1px solid rgba(0, 0, 0, 0.1);
|
||||
border-right: 1px solid rgb(0 0 0 / 10%);
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ $accent-2: #10b981;
|
||||
|
||||
.sec-brand-delimiter {
|
||||
font-size: 12px;
|
||||
color: rgba(0, 0, 0, 0.2);
|
||||
color: rgb(0 0 0 / 20%);
|
||||
margin: 0 6px;
|
||||
font-weight: 300;
|
||||
}
|
||||
@@ -200,7 +200,7 @@ $accent-2: #10b981;
|
||||
.ls-label {
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
color: rgba(255, 255, 255, 0.5);
|
||||
color: rgb(255 255 255 / 50%);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.8px;
|
||||
white-space: nowrap;
|
||||
@@ -222,34 +222,34 @@ $accent-2: #10b981;
|
||||
white-space: nowrap;
|
||||
|
||||
&.green {
|
||||
background: rgba(16, 185, 129, 0.15);
|
||||
background: rgb(16 185 129 / 15%);
|
||||
color: #6ee7b7;
|
||||
border: 1px solid rgba(16, 185, 129, 0.3);
|
||||
border: 1px solid rgb(16 185 129 / 30%);
|
||||
}
|
||||
|
||||
&.blue {
|
||||
background: rgba(14, 165, 233, 0.15);
|
||||
background: rgb(14 165 233 / 15%);
|
||||
color: #7dd3fc;
|
||||
border: 1px solid rgba(14, 165, 233, 0.3);
|
||||
border: 1px solid rgb(14 165 233 / 30%);
|
||||
}
|
||||
|
||||
&.gold {
|
||||
background: rgba(245, 158, 11, 0.15);
|
||||
background: rgb(245 158 11 / 15%);
|
||||
color: #fcd34d;
|
||||
border: 1px solid rgba(245, 158, 11, 0.3);
|
||||
border: 1px solid rgb(245 158 11 / 30%);
|
||||
}
|
||||
|
||||
&.white {
|
||||
background: rgba(255, 255, 255, 0.08);
|
||||
color: rgba(255, 255, 255, 0.75);
|
||||
border: 1px solid rgba(255, 255, 255, 0.15);
|
||||
background: rgb(255 255 255 / 8%);
|
||||
color: rgb(255 255 255 / 75%);
|
||||
border: 1px solid rgb(255 255 255 / 15%);
|
||||
}
|
||||
}
|
||||
|
||||
// ===== Default Mode (Shell Footer) =====
|
||||
.app-footer {
|
||||
background: $brand-dark;
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
color: rgb(255 255 255 / 85%);
|
||||
padding: 0;
|
||||
margin-top: 0;
|
||||
position: relative;
|
||||
@@ -258,10 +258,7 @@ $accent-2: #10b981;
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
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
|
||||
@@ -323,7 +320,7 @@ $accent-2: #10b981;
|
||||
|
||||
.footer-tagline {
|
||||
font-size: 12px;
|
||||
color: rgba(255, 255, 255, 0.5);
|
||||
color: rgb(255 255 255 / 50%);
|
||||
line-height: 1.5;
|
||||
margin: 0;
|
||||
}
|
||||
@@ -355,13 +352,13 @@ $accent-2: #10b981;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.8px;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
color: rgb(255 255 255 / 45%);
|
||||
margin: 0 0 2px;
|
||||
}
|
||||
|
||||
.footer-link {
|
||||
font-size: 12px;
|
||||
color: rgba(255, 255, 255, 0.75);
|
||||
color: rgb(255 255 255 / 75%);
|
||||
text-decoration: none;
|
||||
transition: color 0.15s;
|
||||
line-height: 1.5;
|
||||
@@ -383,7 +380,7 @@ $accent-2: #10b981;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.8px;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
color: rgb(255 255 255 / 45%);
|
||||
margin: 0 0 2px;
|
||||
}
|
||||
|
||||
@@ -398,13 +395,13 @@ $accent-2: #10b981;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
padding: 4px 10px;
|
||||
background: rgba(255, 255, 255, 0.04);
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
background: rgb(255 255 255 / 4%);
|
||||
border: 1px solid rgb(255 255 255 / 8%);
|
||||
border-radius: 5px;
|
||||
transition: background 0.15s;
|
||||
|
||||
&:hover {
|
||||
background: rgba(255, 255, 255, 0.08);
|
||||
background: rgb(255 255 255 / 8%);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -421,13 +418,13 @@ $accent-2: #10b981;
|
||||
|
||||
.reg-label {
|
||||
font-size: 11px;
|
||||
color: rgba(255, 255, 255, 0.75);
|
||||
color: rgb(255 255 255 / 75%);
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.reg-link {
|
||||
font-size: 11px;
|
||||
color: rgba(255, 255, 255, 0.75);
|
||||
color: rgb(255 255 255 / 75%);
|
||||
text-decoration: none;
|
||||
font-weight: 500;
|
||||
transition: color 0.15s;
|
||||
@@ -447,21 +444,21 @@ $accent-2: #10b981;
|
||||
flex-shrink: 0;
|
||||
|
||||
&.rbi {
|
||||
background: rgba(14, 165, 233, 0.2);
|
||||
background: rgb(14 165 233 / 20%);
|
||||
color: #7dd3fc;
|
||||
border: 1px solid rgba(14, 165, 233, 0.3);
|
||||
border: 1px solid rgb(14 165 233 / 30%);
|
||||
}
|
||||
|
||||
&.circular {
|
||||
background: rgba(245, 158, 11, 0.15);
|
||||
background: rgb(245 158 11 / 15%);
|
||||
color: #fcd34d;
|
||||
border: 1px solid rgba(245, 158, 11, 0.3);
|
||||
border: 1px solid rgb(245 158 11 / 30%);
|
||||
}
|
||||
|
||||
&.mandatory {
|
||||
background: rgba(239, 68, 68, 0.15);
|
||||
background: rgb(239 68 68 / 15%);
|
||||
color: #fca5a5;
|
||||
border: 1px solid rgba(239, 68, 68, 0.3);
|
||||
border: 1px solid rgb(239 68 68 / 30%);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -477,7 +474,7 @@ $accent-2: #10b981;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.8px;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
color: rgb(255 255 255 / 45%);
|
||||
margin: 0 0 4px;
|
||||
}
|
||||
|
||||
@@ -492,14 +489,14 @@ $accent-2: #10b981;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
padding: 4px 12px;
|
||||
background: rgba(255, 255, 255, 0.04);
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
background: rgb(255 255 255 / 4%);
|
||||
border: 1px solid rgb(255 255 255 / 8%);
|
||||
border-radius: 6px;
|
||||
text-decoration: none;
|
||||
transition: background 0.15s;
|
||||
|
||||
&:hover {
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
background: rgb(255 255 255 / 10%);
|
||||
|
||||
.qn-label {
|
||||
color: #5ec9f8;
|
||||
@@ -515,7 +512,7 @@ $accent-2: #10b981;
|
||||
|
||||
.qn-label {
|
||||
font-size: 12px;
|
||||
color: rgba(255, 255, 255, 0.8);
|
||||
color: rgb(255 255 255 / 80%);
|
||||
font-weight: 500;
|
||||
transition: color 0.15s;
|
||||
}
|
||||
@@ -527,9 +524,9 @@ $accent-2: #10b981;
|
||||
border-radius: 3px;
|
||||
letter-spacing: 0.5px;
|
||||
text-transform: uppercase;
|
||||
background: rgba(14, 165, 233, 0.2);
|
||||
background: rgb(14 165 233 / 20%);
|
||||
color: #7dd3fc;
|
||||
border: 1px solid rgba(14, 165, 233, 0.3);
|
||||
border: 1px solid rgb(14 165 233 / 30%);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
@@ -545,7 +542,7 @@ $accent-2: #10b981;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.8px;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
color: rgb(255 255 255 / 45%);
|
||||
margin: 0 0 4px;
|
||||
}
|
||||
|
||||
@@ -561,14 +558,14 @@ $accent-2: #10b981;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
padding: 5px 12px;
|
||||
background: rgba(255, 255, 255, 0.04);
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
background: rgb(255 255 255 / 4%);
|
||||
border: 1px solid rgb(255 255 255 / 8%);
|
||||
border-radius: 5px;
|
||||
transition: background 0.15s;
|
||||
white-space: nowrap;
|
||||
|
||||
&:hover {
|
||||
background: rgba(255, 255, 255, 0.08);
|
||||
background: rgb(255 255 255 / 8%);
|
||||
}
|
||||
|
||||
&.sc-chat {
|
||||
@@ -594,13 +591,13 @@ $accent-2: #10b981;
|
||||
|
||||
.sc-label {
|
||||
font-size: 10px;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
color: rgb(255 255 255 / 45%);
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.sc-val {
|
||||
font-size: 11px;
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
color: rgb(255 255 255 / 85%);
|
||||
font-weight: 600;
|
||||
|
||||
&.highlight {
|
||||
@@ -611,7 +608,7 @@ $accent-2: #10b981;
|
||||
// ── Divider ──
|
||||
.footer-divider {
|
||||
height: 1px;
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
background: rgb(255 255 255 / 10%);
|
||||
margin: 0 40px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
@@ -630,7 +627,7 @@ $accent-2: #10b981;
|
||||
|
||||
.fb-copy {
|
||||
font-size: 11px;
|
||||
color: rgba(255, 255, 255, 0.4);
|
||||
color: rgb(255 255 255 / 40%);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
@@ -641,7 +638,7 @@ $accent-2: #10b981;
|
||||
|
||||
a {
|
||||
font-size: 11px;
|
||||
color: rgba(255, 255, 255, 0.5);
|
||||
color: rgb(255 255 255 / 50%);
|
||||
text-decoration: none;
|
||||
padding: 2px 6px;
|
||||
border-radius: 3px;
|
||||
@@ -649,7 +646,7 @@ $accent-2: #10b981;
|
||||
|
||||
&:hover {
|
||||
color: #5ec9f8;
|
||||
background: rgba(255, 255, 255, 0.06);
|
||||
background: rgb(255 255 255 / 6%);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -659,18 +656,18 @@ $accent-2: #10b981;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
font-size: 10px;
|
||||
color: rgba(255, 255, 255, 0.35);
|
||||
color: rgb(255 255 255 / 35%);
|
||||
margin-left: auto;
|
||||
|
||||
strong {
|
||||
color: rgba(255, 255, 255, 0.55);
|
||||
color: rgb(255 255 255 / 55%);
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
|
||||
.fb-powered {
|
||||
font-size: 10px;
|
||||
color: rgba(255, 255, 255, 0.35);
|
||||
color: rgb(255 255 255 / 35%);
|
||||
|
||||
strong {
|
||||
color: #5ec9f8;
|
||||
@@ -679,7 +676,7 @@ $accent-2: #10b981;
|
||||
}
|
||||
|
||||
// ===== Responsive =====
|
||||
@media (max-width: 768px) {
|
||||
@media (width <= 768px) {
|
||||
.security-bar {
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
@@ -747,7 +744,7 @@ $accent-2: #10b981;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
@media (width <= 480px) {
|
||||
.footer-compact {
|
||||
font-size: 0.7rem;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user