From 7120be25bdb2c7aef3d9b95256ade91903303a1a Mon Sep 17 00:00:00 2001 From: sazzadulalambd Date: Tue, 5 May 2026 01:21:37 +0600 Subject: [PATCH] feat: add investor onboarding flow with dynamic business and investment plan fields --- src/app/admin/kyc/page.tsx | 186 ++++++++++++++++++++++++++++++++++++- 1 file changed, 185 insertions(+), 1 deletion(-) diff --git a/src/app/admin/kyc/page.tsx b/src/app/admin/kyc/page.tsx index 829ad0a..c90a94e 100644 --- a/src/app/admin/kyc/page.tsx +++ b/src/app/admin/kyc/page.tsx @@ -1134,6 +1134,7 @@ function NewApplicationModal({ isOpen, onClose, onSave }: { isOpen: boolean; onC evModel: string; evCondition: string; scheduleDate: string; + investmentPlan: { planName: string; planType: string; bikes: number; amount: number; monthlyReturn: number; expectedROI: number }; requiredDocuments: Document[]; }>({ applicationSource: 'walkin', @@ -1164,6 +1165,7 @@ function NewApplicationModal({ isOpen, onClose, onSave }: { isOpen: boolean; onC evModel: '', evCondition: 'new', scheduleDate: '', + investmentPlan: { planName: '', planType: '', bikes: 1, amount: 0, monthlyReturn: 0, expectedROI: 0 }, requiredDocuments: [], }); @@ -1664,6 +1666,7 @@ function NewApplicationModal({ isOpen, onClose, onSave }: { isOpen: boolean; onC )} + {formData.type === 'biker' && (

Driving License @@ -1726,6 +1729,7 @@ function NewApplicationModal({ isOpen, onClose, onSave }: { isOpen: boolean; onC

+ )} )} @@ -1791,7 +1795,101 @@ function NewApplicationModal({ isOpen, onClose, onSave }: { isOpen: boolean; onC )} - {step === 3 && formData.type === 'biker' && ( + {step === 2 && formData.type === 'investor' && ( +
+
+

+ Investment Information +

+
+
+ + updateField('employmentInfo.company', e.target.value)} + className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm" + placeholder="Your business name" + /> +
+
+ + updateField('employmentInfo.monthlyEarning', Number(e.target.value))} + className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm" + placeholder="0" + /> +
+
+ + updateField('employmentInfo.whyEV', e.target.value)} + className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm" + placeholder="e.g., Savings, Business profit, Inheritance" + /> +
+
+ + updateField('occupation', e.target.value)} + className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm" + placeholder="Your profession" + /> +
+
+
+
+ )} + + {(step === 2 && (formData.type === 'shop' || formData.type === 'merchant')) && ( +
+
+

+ Business Information +

+
+
+ + updateField('employmentInfo.company', e.target.value)} + className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm" + placeholder="Your business name" + /> +
+
+ + updateField('employmentInfo.monthlyEarning', Number(e.target.value))} + className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm" + placeholder="0" + /> +
+
+ + updateField('employmentInfo.whyEV', e.target.value)} + className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm" + placeholder="e.g., retail, wholesale, e-commerce" + /> +
+
+
+
+ )} + + {(step === 3 && (formData.type === 'biker' || formData.type === 'investor')) && (

@@ -2015,6 +2113,92 @@ function NewApplicationModal({ isOpen, onClose, onSave }: { isOpen: boolean; onC

)} + {step === 4 && formData.type === 'investor' && ( +
+
+

+ Investment Plan +

+
+ {[ + { v: '1', l: '1 Bike', d: 'Invest in 1 bike', icon: Bike }, + { v: '5', l: '5 Bikes', d: 'Invest in 5 bikes', icon: Bike }, + { v: '10', l: '10 Bikes', d: 'Invest in 10 bikes', icon: Bike }, + ].map(plan => ( + + ))} +
+
+
+ + updateField('investmentPlan.planName', e.target.value)} + className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm" + placeholder="Plan name" + /> +
+
+ + +
+
+ + updateField('investmentPlan.amount', Number(e.target.value))} + className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm" + placeholder="0" + /> +
+
+ + updateField('investmentPlan.monthlyReturn', Number(e.target.value))} + className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm" + placeholder="0" + /> +
+
+ + updateField('investmentPlan.expectedROI', Number(e.target.value))} + className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm" + placeholder="0" + /> +
+
+
+
+ )} + {step === 5 && (