From 06116af31a9aa5701a3639fecff9ff2107abd56f Mon Sep 17 00:00:00 2001 From: Laxman Date: Wed, 20 May 2026 20:16:50 +0530 Subject: [PATCH] theme have color enhanced and smtp setup done --- src/api/API.ts | 4 + src/components/layout/Sidebar.tsx | 1 - src/components/sla/SlaBadge.tsx | 3 +- src/components/ui/DocumentPreviewModal.tsx | 4 +- src/components/ui/progress.tsx | 7 +- src/features/admin/pages/SystemLogsPage.tsx | 2 +- .../auth/pages/ProspectiveLoginPage.tsx | 18 +- .../pages/ConstitutionalChangeDetails.tsx | 164 ++++++----- .../pages/ConstitutionalChangePage.tsx | 36 +-- .../pages/DealerConstitutionalChangePage.tsx | 11 +- src/features/dashboard/pages/Dashboard.tsx | 6 +- .../dashboard/pages/FDDDashboardPage.tsx | 2 +- .../dashboard/pages/FinanceDashboard.tsx | 24 +- .../fnf/pages/FinanceFnFDetailsPage.tsx | 64 ++--- src/features/fnf/pages/FinanceFnFPage.tsx | 30 +- .../fnf/pages/FinancePaymentDetailsPage.tsx | 34 +-- src/features/fnf/pages/FnFDetails.tsx | 66 ++--- src/features/fnf/pages/FnFPage.tsx | 2 +- .../master/components/SLAMonitorPanel.tsx | 16 +- src/features/master/pages/SLAConfigPage.tsx | 10 +- .../onboarding/components/ApplicationCard.tsx | 13 +- .../components/ApplicationProgressBar.tsx | 44 +++ .../components/BankDetailsModal.tsx | 4 +- .../components/QuestionnaireResponseView.tsx | 10 +- .../ApplicantInformationCard.tsx | 12 +- .../ApplicationDetailsActionModals.tsx | 6 +- .../ApplicationDetailsExtendedModals.tsx | 41 ++- .../ApplicationDetailsFddAuditContent.tsx | 65 +---- .../ApplicationDetailsHeader.tsx | 2 +- .../ApplicationDetailsSidebar.tsx | 48 ++-- .../ApplicationDetailsTabs.tsx | 66 +++-- .../applicationDetails.shared.ts | 2 +- .../onboarding/pages/AllApplicationsPage.tsx | 36 +-- .../onboarding/pages/ApplicationDetails.tsx | 10 +- .../onboarding/pages/ApplicationsPage.tsx | 18 +- .../pages/FDDApplicationDetails.tsx | 28 +- .../onboarding/pages/FinanceFddDetailPage.tsx | 44 +-- .../pages/FinanceOnboardingPage.tsx | 2 +- .../onboarding/pages/NonOpportunitiesPage.tsx | 8 +- .../pages/OpportunityRequestsPage.tsx | 20 +- .../onboarding/pages/WorkNotesPage.tsx | 2 +- .../relocation/pages/DealerRelocationPage.tsx | 11 +- .../pages/RelocationRequestDetails.tsx | 258 ++++++++++++------ .../pages/RelocationRequestPage.tsx | 39 ++- .../resignation/pages/ResignationDetails.tsx | 30 +- .../resignation/pages/ResignationPage.tsx | 4 +- .../termination/pages/TerminationDetails.tsx | 44 +-- .../termination/pages/TerminationPage.tsx | 9 +- src/lib/offboardingDisplay.ts | 40 +++ src/lib/statusProgressTheme.ts | 231 ++++++++++++++++ src/pages/public/PublicQuestionnairePage.tsx | 26 +- src/styles/globals.css | 81 +++++- 52 files changed, 1106 insertions(+), 652 deletions(-) create mode 100644 src/features/onboarding/components/ApplicationProgressBar.tsx create mode 100644 src/lib/statusProgressTheme.ts diff --git a/src/api/API.ts b/src/api/API.ts index ac4ac99..18cc426 100644 --- a/src/api/API.ts +++ b/src/api/API.ts @@ -207,6 +207,10 @@ export const API = { updateConstitutionalChange: (id: string, action: ConstitutionalChangeAction, data?: { comments?: string; remarks?: string }) => client.post(`/constitutional-change/${id}/action`, { action, ...data }), uploadConstitutionalDocuments: (id: string, documents: any[]) => client.post(`/constitutional-change/${id}/documents`, { documents }), + verifyConstitutionalDocument: (id: string, documentId: string) => + client.post(`/constitutional-change/${id}/documents/${documentId}/verify`), + rejectConstitutionalDocument: (id: string, documentId: string, data?: { remarks?: string }) => + client.post(`/constitutional-change/${id}/documents/${documentId}/reject`, data || {}), // SLA getSlaConfigs: () => client.get('/master/sla-configs'), diff --git a/src/components/layout/Sidebar.tsx b/src/components/layout/Sidebar.tsx index 5e9280a..8063928 100644 --- a/src/components/layout/Sidebar.tsx +++ b/src/components/layout/Sidebar.tsx @@ -47,7 +47,6 @@ export function Sidebar({ onLogout }: SidebarProps) { const [flyout, setFlyout] = useState(null); const hoverTimeout = useRef | null>(null); - const currentRole = currentUser?.role || currentUser?.roleCode || ''; const hasRole = (roles: string[]) => { const normalizedTargetRoles = roles.map((r) => r.toLowerCase()); const userRole = String(currentUser?.role || '').toLowerCase(); diff --git a/src/components/sla/SlaBadge.tsx b/src/components/sla/SlaBadge.tsx index 1c6f559..f3259dd 100644 --- a/src/components/sla/SlaBadge.tsx +++ b/src/components/sla/SlaBadge.tsx @@ -1,10 +1,9 @@ -import React from 'react'; import { Badge } from '@/components/ui/badge'; import { SlaBucket, SlaStatusSnapshot } from '@/services/sla.service'; const BUCKET_CLASS: Record = { healthy: 'bg-emerald-100 text-emerald-800 border-emerald-200', - warning: 'bg-amber-100 text-amber-800 border-amber-200', + warning: 'bg-red-50 text-red-800 border-red-200', critical: 'bg-orange-100 text-orange-800 border-orange-200', breached: 'bg-red-100 text-red-800 border-red-200' }; diff --git a/src/components/ui/DocumentPreviewModal.tsx b/src/components/ui/DocumentPreviewModal.tsx index 42e7131..cd900f3 100644 --- a/src/components/ui/DocumentPreviewModal.tsx +++ b/src/components/ui/DocumentPreviewModal.tsx @@ -38,8 +38,8 @@ export const DocumentPreviewModal: React.FC = ({ <>
-
- +
+
diff --git a/src/components/ui/progress.tsx b/src/components/ui/progress.tsx index db29f34..beac37f 100644 --- a/src/components/ui/progress.tsx +++ b/src/components/ui/progress.tsx @@ -7,9 +7,12 @@ import { cn } from "./utils"; function Progress({ className, + indicatorClassName, value, ...props -}: React.ComponentProps) { +}: React.ComponentProps & { + indicatorClassName?: string; +}) { return ( diff --git a/src/features/admin/pages/SystemLogsPage.tsx b/src/features/admin/pages/SystemLogsPage.tsx index deb22ce..a1b1cea 100644 --- a/src/features/admin/pages/SystemLogsPage.tsx +++ b/src/features/admin/pages/SystemLogsPage.tsx @@ -93,7 +93,7 @@ const ACTION_BADGE_CLASS: Record = { DELETED: 'bg-rose-100 text-rose-700 border-rose-200', ACTIVATED: 'bg-emerald-100 text-emerald-700 border-emerald-200', DEACTIVATED: 'bg-slate-200 text-slate-700 border-slate-300', - INITIALIZED: 'bg-amber-100 text-amber-700 border-amber-200', + INITIALIZED: 'bg-red-50 text-re-red-hover border-red-200', SUBMITTED: 'bg-indigo-100 text-indigo-700 border-indigo-200', ASSIGNED: 'bg-violet-100 text-violet-700 border-violet-200', UNASSIGNED: 'bg-slate-200 text-slate-700 border-slate-300', diff --git a/src/features/auth/pages/ProspectiveLoginPage.tsx b/src/features/auth/pages/ProspectiveLoginPage.tsx index 06f6f20..5ef75be 100644 --- a/src/features/auth/pages/ProspectiveLoginPage.tsx +++ b/src/features/auth/pages/ProspectiveLoginPage.tsx @@ -94,13 +94,13 @@ export function ProspectiveLoginPage() { return (
-
-
+
+
-
+
@@ -122,8 +122,8 @@ export function ProspectiveLoginPage() {
-
- +
+

Dealer Login

@@ -158,7 +158,7 @@ export function ProspectiveLoginPage() {
- + {request.status} @@ -655,7 +652,12 @@ export function ConstitutionalChangeDetails({ requestId, onBack, currentUser }:

Request Information

Submitted: {formatDateTime(request.createdAt)}

By: {request.dealer?.fullName || 'Dealer'}

-

Current Stage: {request.currentStage}

+
+ Current Stage: + + {request.currentStage} + +
@@ -722,16 +724,18 @@ export function ConstitutionalChangeDetails({ requestId, onBack, currentUser }: {/* Workflow Progress Tab */} - + {/* Progress Bar */}
Overall Progress - {request.progressPercentage}% + + {request.progressPercentage}% Complete +
@@ -790,13 +794,13 @@ export function ConstitutionalChangeDetails({ requestId, onBack, currentUser }: {/* Status Icon */}
{isCompleted ? ( ) : isCurrent ? ( - + ) : ( )} @@ -808,20 +812,19 @@ export function ConstitutionalChangeDetails({ requestId, onBack, currentUser }:
{/* Stage Info */} -
+
-

+

{formatStageLabel(stage.name)}

-

+

{`Responsible: ${formatStageRole(stage.role)}`}

-
{isCompleted ? 'Completed' : isCurrent ? 'In Progress' : 'Pending'} @@ -906,7 +909,7 @@ export function ConstitutionalChangeDetails({ requestId, onBack, currentUser }:
{/* Total */} -
+
Total Deductions - + ₹{settlement.deductions.toLocaleString('en-IN')}
@@ -1563,7 +1563,7 @@ export function FinanceFnFDetailsPage({ fnfId, onBack }: FinanceFnFDetailsPagePr - + Final Settlement Summary @@ -1579,7 +1579,7 @@ export function FinanceFnFDetailsPage({ fnfId, onBack }: FinanceFnFDetailsPagePr
Total Deductions - - ₹{settlement.deductions.toLocaleString('en-IN')} + - ₹{settlement.deductions.toLocaleString('en-IN')}
@@ -1613,8 +1613,8 @@ export function FinanceFnFDetailsPage({ fnfId, onBack }: FinanceFnFDetailsPagePr
-
- +
+

Calculation Formula

@@ -1758,7 +1758,7 @@ export function FinanceFnFDetailsPage({ fnfId, onBack }: FinanceFnFDetailsPagePr filePath: dept.supportingDocument, documentType: 'Departmental Clearance Proof' })} - className="flex items-center gap-1 text-[10px] text-amber-600 hover:underline" + className="flex items-center gap-1 text-[10px] text-re-red hover:underline" > View Proof @@ -1774,10 +1774,10 @@ export function FinanceFnFDetailsPage({ fnfId, onBack }: FinanceFnFDetailsPagePr {/* Important Notes */} - +

- +

Department Response Guidelines

    @@ -1820,7 +1820,7 @@ export function FinanceFnFDetailsPage({ fnfId, onBack }: FinanceFnFDetailsPagePr filePath: doc.url, documentType: doc.type })} - className="text-amber-600 hover:text-amber-700 text-[10px] font-semibold flex items-center gap-1" + className="text-re-red hover:text-re-red-hover text-[10px] font-semibold flex items-center gap-1" > PREVIEW @@ -1873,7 +1873,7 @@ export function FinanceFnFDetailsPage({ fnfId, onBack }: FinanceFnFDetailsPagePr
    -
    +

    Click to upload or drag and drop

    PDF, DOC, DOCX, PNG, JPG, XLSX (max 10MB)

    @@ -1910,7 +1910,7 @@ export function FinanceFnFDetailsPage({ fnfId, onBack }: FinanceFnFDetailsPagePr
    @@ -314,7 +314,7 @@ export function FinanceFnFPage({ onViewFnFDetails }: FinanceFnFPageProps = {}) { {fnfCase.status} @@ -323,7 +323,7 @@ export function FinanceFnFPage({ onViewFnFDetails }: FinanceFnFPageProps = {}) {
    {/* Deductions */} - + - + Deductions Pending claims and deductions @@ -479,9 +479,9 @@ export function FinanceFnFPage({ onViewFnFDetails }: FinanceFnFPageProps = {}) { Total Receivables (from Dealer) - ₹{settlement.receivables.toLocaleString()}
    -
    +
    Total Deductions - - ₹{settlement.deductions.toLocaleString()} + - ₹{settlement.deductions.toLocaleString()}
    @@ -695,7 +695,7 @@ export function FinanceFnFPage({ onViewFnFDetails }: FinanceFnFPageProps = {}) {

    Status

    {selectedCase.status} @@ -793,10 +793,10 @@ export function FinanceFnFPage({ onViewFnFDetails }: FinanceFnFPageProps = {}) { {/* Deductions */} - + - + Deductions @@ -850,7 +850,7 @@ export function FinanceFnFPage({ onViewFnFDetails }: FinanceFnFPageProps = {}) { {selectedCase?.status === 'Pending Finance Review' && (
- - + + - + Finance Action @@ -431,7 +431,7 @@ export function FinancePaymentDetailsPage({ applicationId, onBack }: FinancePaym
-
+

Net Amount

@@ -1022,14 +1022,14 @@ export function FnFDetails({ fnfId, onBack, currentUser }: FnFDetailsProps) { className={`size-12 shrink-0 aspect-square rounded-full flex items-center justify-center border-2 ${fnfCase.status === "Completed" ? "bg-green-100 border-green-600" : fnfCase.status === "Finance Approval" - ? "bg-amber-100 border-amber-600" + ? "bg-red-50 border-re-red" : "bg-slate-100 border-slate-300" }`} > {fnfCase.status === "Completed" ? ( ) : fnfCase.status === "Finance Approval" ? ( - + ) : ( )} @@ -1052,7 +1052,7 @@ export function FnFDetails({ fnfId, onBack, currentUser }: FnFDetailsProps) { fnfCase.status === "Completed" ? "bg-green-600" : fnfCase.status === "Finance Approval" - ? "bg-amber-600" + ? "bg-re-red" : "bg-slate-400" } > @@ -1255,7 +1255,7 @@ export function FnFDetails({ fnfId, onBack, currentUser }: FnFDetailsProps) { - + F&F Settlement Information @@ -1426,7 +1426,7 @@ export function FnFDetails({ fnfId, onBack, currentUser }: FnFDetailsProps) {
-
-

+

+

Total Deductions

-

+

₹{fnfCase.totalDeductions?.toLocaleString() || "0"}

-

+

Warranty holdbacks / Policy penalties

@@ -1677,7 +1677,7 @@ export function FnFDetails({ fnfId, onBack, currentUser }: FnFDetailsProps) { setEditingBank(null); setIsBankModalOpen(true); }} - className="bg-amber-600" + className="bg-re-red" > Add Account @@ -1687,16 +1687,16 @@ export function FnFDetails({ fnfId, onBack, currentUser }: FnFDetailsProps) {
{bankDetails.length > 0 ? ( bankDetails.map((bank: any) => ( - + {bank.isPrimary && ( -
+
Primary
)}
-
- +
+

{bank.bankName}

@@ -1727,7 +1727,7 @@ export function FnFDetails({ fnfId, onBack, currentUser }: FnFDetailsProps) { diff --git a/src/features/onboarding/components/ApplicationCard.tsx b/src/features/onboarding/components/ApplicationCard.tsx index 4dbead8..768dfc9 100644 --- a/src/features/onboarding/components/ApplicationCard.tsx +++ b/src/features/onboarding/components/ApplicationCard.tsx @@ -1,6 +1,6 @@ import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; -import { Progress } from '@/components/ui/progress'; +import { ApplicationProgressBar } from '@/features/onboarding/components/ApplicationProgressBar'; import { Application } from '@/lib/mock-data'; import { MapPin, Phone, Mail, Award, Calendar, Building } from 'lucide-react'; import { formatDateTime } from '@/components/ui/utils'; @@ -17,7 +17,7 @@ export function ApplicationCard({ application, onViewDetails }: ApplicationCardP 'Questionnaire Pending': 'bg-orange-500', 'Questionnaire Completed': 'bg-blue-500', 'Shortlisted': 'bg-cyan-500', - 'Level 1 Pending': 'bg-amber-500', + 'Level 1 Pending': 'bg-red-500', 'Level 1 Approved': 'bg-green-500', 'Level 2 Pending': 'bg-purple-500', 'Level 2 Approved': 'bg-green-600', @@ -124,7 +124,12 @@ export function ApplicationCard({ application, onViewDetails }: ApplicationCardP Progress {application.progress}%
- +
{/* Deadline Warning */} @@ -138,7 +143,7 @@ export function ApplicationCard({ application, onViewDetails }: ApplicationCardP
- diff --git a/src/features/onboarding/components/QuestionnaireResponseView.tsx b/src/features/onboarding/components/QuestionnaireResponseView.tsx index 95066d3..c4bb94d 100644 --- a/src/features/onboarding/components/QuestionnaireResponseView.tsx +++ b/src/features/onboarding/components/QuestionnaireResponseView.tsx @@ -33,11 +33,11 @@ const QuestionnaireResponseView: React.FC = ({ a
- +

Questionnaire Responses

{totalScore !== undefined && ( - Score: {totalScore}/100 + Score: {totalScore}/100 )}
@@ -62,12 +62,12 @@ const QuestionnaireResponseView: React.FC = ({ a return (
-
- {index + 1} +
+ {index + 1}
diff --git a/src/features/onboarding/components/application-details/ApplicantInformationCard.tsx b/src/features/onboarding/components/application-details/ApplicantInformationCard.tsx index b43269f..d430e29 100644 --- a/src/features/onboarding/components/application-details/ApplicantInformationCard.tsx +++ b/src/features/onboarding/components/application-details/ApplicantInformationCard.tsx @@ -126,9 +126,9 @@ export function ApplicantInformationCard({ data-testid="onboarding-applicant-info-edit-firm-type" > Proposed Firm Type - +

-

+

{application.constitutionType || 'Not Provided'}

@@ -214,14 +214,14 @@ export function ApplicantInformationCard({

- Statutory & Bank Information + Statutory & Bank Information

{canEditStatutory && !isEditingStatutory && ( - +
@@ -410,7 +407,7 @@ export function ApplicationDetailsExtendedModals(props: ApplicationDetailsExtend

No Documents Found

No documents have been uploaded for this stage yet.

)}
- +
@@ -425,7 +422,7 @@ export function ApplicationDetailsExtendedModals(props: ApplicationDetailsExtend placeholder="Enter document name" value={uploadDocType} onChange={(e) => setUploadDocType(e.target.value)} - className="bg-white border-slate-200 h-12 rounded-xl focus:ring-amber-500 shadow-sm" + className="bg-white border-slate-200 h-12 rounded-xl focus:ring-re-red shadow-sm" data-testid="onboarding-documents-name-input" />
@@ -433,7 +430,7 @@ export function ApplicationDetailsExtendedModals(props: ApplicationDetailsExtend { const file = e.target.files ? e.target.files[0] : null; setUploadFile(file); @@ -449,7 +446,7 @@ export function ApplicationDetailsExtendedModals(props: ApplicationDetailsExtend
-
@@ -461,11 +458,11 @@ export function ApplicationDetailsExtendedModals(props: ApplicationDetailsExtend -
+
Finalize FDD Audit - You are about to submit your final findings. This action will lock the audit session and trigger the LOI approval workflow. + You are about to submit your final findings. This action will lock the audit session and trigger the LOI approval workflow.
{(currentUser?.role !== 'FDD' && currentUser?.roleCode !== 'FDD') && ( @@ -473,7 +470,7 @@ export function ApplicationDetailsExtendedModals(props: ApplicationDetailsExtend
{['Recommended', 'Qualified with Observations', 'Not Recommended'].map((rec) => ( - + ))}
@@ -482,18 +479,18 @@ export function ApplicationDetailsExtendedModals(props: ApplicationDetailsExtend