import React from 'react'; import { Globe, Wallet, Plus, Trash2, Save, CheckCircle2 } from 'lucide-react'; import { GlobalConfig, CardConfig } from '../types'; import { formatNumber } from '../utils/math'; interface Props { globalConfig: GlobalConfig; setGlobalConfig: (c: GlobalConfig) => void; cards: CardConfig[]; setCards: (c: CardConfig[]) => void; activeCardId: string; setActiveCardId: (id: string) => void; onSave: () => void; isSaving: boolean; saveStatus: 'success' | null; } export const ConfigTab: React.FC = ({ globalConfig, setGlobalConfig, cards, setCards, activeCardId, setActiveCardId, onSave, isSaving, saveStatus }) => { const handleAddCard = () => { const newCard: CardConfig = { id: Date.now().toString(), name: 'Thẻ mới', networkRate: '1.58', usdRate: '26000', }; setCards([...cards, newCard]); }; const handleRemoveCard = (id: string) => { if (cards.length <= 1) return; const newCards = cards.filter(c => c.id !== id); setCards(newCards); if (activeCardId === id) setActiveCardId(newCards[0].id); }; const updateCard = (id: string, field: keyof CardConfig, value: any) => { setCards(cards.map(c => c.id === id ? { ...c, [field]: value } : c)); }; return (
{/* Vĩ mô */}

Tỷ Giá & Thanh Khoản

Giá vốn mua USD tại VN

VND → USD (Giá bạn mua ở tiệm vàng)

setGlobalConfig({ ...globalConfig, cashVndUsd: parseInt(e.target.value.replace(/\D/g, '')) || 0 })} className="w-28 bg-white border border-slate-200 rounded-xl p-2 text-sm font-bold text-right focus:border-indigo-500 focus:ring-2 focus:ring-indigo-500/10 outline-none transition-all shadow-sm" />

Tỷ giá Bali (USD → IDR)

Dùng cho cả tiền mặt & thẻ ngân hàng

setGlobalConfig({ ...globalConfig, bcaBeli: parseInt(e.target.value.replace(/\D/g, '')) || 0 })} className="w-28 bg-white border border-slate-200 rounded-xl p-2 text-sm font-bold text-right focus:border-indigo-500 focus:ring-2 focus:ring-indigo-500/10 outline-none transition-all shadow-sm" />

Thanh khoản USD ($)

CASH ON HAND

setGlobalConfig({ ...globalConfig, usdAvailable: parseInt(e.target.value.replace(/\D/g, '')) || 0 })} className="w-20 bg-white border border-emerald-200 rounded-lg p-2 text-base font-black text-emerald-700 text-right focus:border-emerald-500 shadow-sm outline-none" />
{/* Danh mục thẻ */}

Danh mục Thẻ

{cards.map((card) => (
{cards.length > 1 && ( )}
updateCard(card.id, 'usdRate', e.target.value.replace(/\D/g, ''))} className="w-full bg-slate-50 border border-slate-200 rounded-xl px-3 py-2 text-sm font-bold text-slate-700 outline-none focus:border-indigo-500 focus:ring-2 focus:ring-indigo-500/5 transition-all" />
{ const val = e.target.value.replace(/,/g, '.'); if (val === '' || val === '.' || !isNaN(parseFloat(val))) { updateCard(card.id, 'networkRate', val); } }} className="w-full bg-indigo-50 border border-indigo-200 rounded-xl px-3 py-2 text-sm font-bold text-indigo-700 outline-none focus:border-indigo-500 focus:ring-2 focus:ring-indigo-500/5 transition-all" />

Mẹo: Nhập tỉ giá cuối cùng từ Visa hoặc Mastercard. (Nhớ nhập Bank Fee vào trang web đó trước rồi mới copy kết quả vào đây).

))}
); };