feat: implement investor withdrawal workflow and add new navigation routes for investments, plans, and withdrawals

This commit is contained in:
sazzadulalambd
2026-05-15 01:31:21 +06:00
parent 1fd8c5153a
commit c1ab1eb0a3
7 changed files with 1288 additions and 81 deletions

View File

@@ -1165,25 +1165,20 @@ export default function InvestorDetailPage() {
<div key={account.id} className="p-4 bg-white border border-slate-200 rounded-xl hover:shadow-md transition-all">
<div className="flex items-start justify-between mb-3">
<div className="flex items-center gap-3">
<div className={`w-10 h-10 rounded-lg flex items-center justify-center ${account.isPrimary ? 'bg-green-100' : 'bg-slate-100'}`}>
<Banknote className={`w-5 h-5 ${account.isPrimary ? 'text-green-600' : 'text-slate-500'}`} />
<div className="w-10 h-10 rounded-lg flex items-center justify-center bg-slate-100">
<Banknote className="w-5 h-5 text-slate-500" />
</div>
<div>
<p className="font-semibold text-slate-800">{account.bankName}</p>
<p className="text-xs text-slate-500">{account.branch}</p>
</div>
</div>
<div className="flex items-center gap-2">
{account.isPrimary && (
<span className="px-2 py-1 bg-green-100 text-green-700 text-xs font-medium rounded-full">Primary</span>
)}
<button onClick={() => {
setEditingBankAccount(account);
setShowBankModal(true);
}} className="p-1.5 hover:bg-slate-100 rounded-lg text-slate-500">
<Edit className="w-4 h-4" />
</button>
</div>
<button onClick={() => {
setEditingBankAccount(account);
setShowBankModal(true);
}} className="p-1.5 hover:bg-slate-100 rounded-lg text-slate-500">
<Edit className="w-4 h-4" />
</button>
</div>
<div className="space-y-2 text-sm">
<div className="flex justify-between">
@@ -1234,8 +1229,7 @@ export default function InvestorDetailPage() {
<div className="flex items-center gap-3 p-3 bg-purple-50 rounded-lg">
<Phone className="w-5 h-5 text-purple-500" />
<div className="flex-1">
<p className="text-xs text-purple-600">Primary</p>
<p className="font-medium text-slate-700">{investor.mobileBanking}</p>
<p className="text-xs text-purple-600 font-medium">{investor.mobileBanking}</p>
<p className="text-xs text-slate-400">{investor.mobileBankingNumber}</p>
</div>
<button onClick={() => {
@@ -2603,10 +2597,6 @@ export default function InvestorDetailPage() {
<label className="text-sm font-medium text-slate-600 mb-1 block">Mobile Number</label>
<input type="text" value={editingMobileBanking.number} onChange={(e) => setEditingMobileBanking({ ...editingMobileBanking, number: e.target.value })} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm" placeholder="01XXXXXXXXX" />
</div>
<div className="flex items-center gap-2">
<input type="checkbox" checked={editingMobileBanking.isPrimary} onChange={(e) => setEditingMobileBanking({ ...editingMobileBanking, isPrimary: e.target.checked })} className="rounded text-investor" />
<span className="text-sm text-slate-600">Set as primary account</span>
</div>
</div>
<div className="p-5 border-t border-slate-100 flex justify-end gap-3">
<button onClick={() => setShowMobileBankingModal(false)} className="px-4 py-2 border border-slate-200 text-slate-600 rounded-lg text-sm hover:bg-slate-50">Cancel</button>