diff --git a/dashboard/src/components/KycStatusView.tsx b/dashboard/src/components/KycStatusView.tsx
index 88d5e79c..0463cc2e 100644
--- a/dashboard/src/components/KycStatusView.tsx
+++ b/dashboard/src/components/KycStatusView.tsx
@@ -1,10 +1,61 @@
import { useState } from 'react';
-import { ShieldCheck, XCircle, AlertTriangle, RefreshCw, Mail, CheckCircle2, Clock } from 'lucide-react';
+import { ShieldCheck, XCircle, AlertTriangle, RefreshCw, Mail, CheckCircle2, Clock, FileWarning, User, MapPin, Camera } from 'lucide-react';
import type { UiConfig } from '../types';
import { RequirementList } from './RequirementList';
export type KycState = 'not_started' | 'pending' | 'approved' | 'rejected';
+type RejectionCategory = 'Document' | 'Identity' | 'Address' | 'Selfie';
+
+type KycRejectionReason = {
+ code: string;
+ category: RejectionCategory;
+ field: string;
+ description: string;
+ action: string;
+ severity: 'high' | 'medium';
+};
+
+const CATEGORY_ICON: Record = {
+ Document: ,
+ Identity: ,
+ Address: ,
+ Selfie: ,
+};
+
+const KYC_REJECTION_REASONS: KycRejectionReason[] = [
+ {
+ code: 'DOC_BLURRY',
+ category: 'Document',
+ field: 'Proof of Identity',
+ description:
+ 'The submitted identity document appears blurry or unreadable. All text, including name and document number, must be clearly legible.',
+ action:
+ 'Retake the photo in good lighting so that all four corners and all printed text are fully visible.',
+ severity: 'high',
+ },
+ {
+ code: 'SELFIE_MISMATCH',
+ category: 'Selfie',
+ field: 'Selfie Verification',
+ description:
+ 'The selfie photo does not match the identity document photo with sufficient confidence.',
+ action:
+ 'Submit a clear, well-lit selfie facing the camera directly without glasses, hats, or face coverings.',
+ severity: 'high',
+ },
+ {
+ code: 'ADDR_OUTDATED',
+ category: 'Address',
+ field: 'Proof of Address',
+ description:
+ 'The provided proof of address is older than 90 days and cannot be accepted under current compliance rules.',
+ action:
+ 'Provide a utility bill, bank statement, or official government letter dated within the last 90 days.',
+ severity: 'medium',
+ },
+];
+
export const KycStatusView = ({ uiConfig }: { uiConfig: UiConfig }) => {
// For demo/testing purposes, default to 'rejected' as per issue #343
const [kycState, setKycState] = useState('rejected');
@@ -105,19 +156,55 @@ export const KycStatusView = ({ uiConfig }: { uiConfig: UiConfig }) => {
Verification Failed
- We were unable to verify your identity with the provided information. This may happen if documents are unclear, expired, or details mismatch.
+ We were unable to verify your identity. Please review each issue below and resubmit with the corrected documents.
-
-
-
-
-
Reason for Rejection
-
- The submitted proof of identity document appears to be blurry or unreadable. Please ensure all text is legible and all four corners of the document are visible before re-submitting.
-