import React, { useState } from 'react'; import { Calculator, Copy, Check } from 'lucide-react'; export const VatCalculator = () => { const [mode, setMode] = useState('haric'); // 'haric' (net to gross) or 'dahil' (gross to net) const [amount, setAmount] = useState(100000); const [vatRate, setVatRate] = useState(20); // 1, 10, 20 const [tevkifatRate, setTevkifatRate] = useState(0); // 0, 50 (5/10), 70 (7/10), 90 (9/10) const [copied, setCopied] = useState(false); // Calculations let netAmount = 0; let vatAmount = 0; let grossAmount = 0; let tevkifatAmount = 0; let payableVat = 0; if (mode === 'haric') { netAmount = Number(amount) || 0; vatAmount = netAmount * (vatRate / 100); grossAmount = netAmount + vatAmount; } else { grossAmount = Number(amount) || 0; netAmount = grossAmount / (1 + vatRate / 100); vatAmount = grossAmount - netAmount; } if (tevkifatRate > 0) { tevkifatAmount = vatAmount * (tevkifatRate / 100); payableVat = vatAmount - tevkifatAmount; } else { payableVat = vatAmount; } const handleCopy = () => { const summary = `Matrah: ₺${netAmount.toLocaleString('tr-TR', { maximumFractionDigits: 2 })} | KDV (%${vatRate}): ₺${vatAmount.toLocaleString('tr-TR', { maximumFractionDigits: 2 })} | Genel Toplam: ₺${grossAmount.toLocaleString('tr-TR', { maximumFractionDigits: 2 })}`; navigator.clipboard.writeText(summary); setCopied(true); setTimeout(() => setCopied(false), 2000); }; return (

İhale KDV & Tevkifat Hesaplayıcı

Teklif matrahından KDV dahil tutarı veya KDV dahilden net matrahı hesaplayın.

{/* Mode Selector */}
{/* Inputs */}
setAmount(e.target.value)} className="w-full bg-slate-50 border border-slate-300 rounded-lg px-3 py-2.5 font-mono text-sm font-bold text-slate-900 focus:ring-2 focus:ring-blue-500" /> TL
{[1, 10, 20].map(rate => ( ))}
{/* Results Card */}
Hesaplama Sonucu
Net Matrah (KDV Hariç) ₺{netAmount.toLocaleString('tr-TR', { maximumFractionDigits: 2 })}
Hesaplanan KDV (%{vatRate}) ₺{vatAmount.toLocaleString('tr-TR', { maximumFractionDigits: 2 })}
Genel Toplam (KDV Dahil) ₺{grossAmount.toLocaleString('tr-TR', { maximumFractionDigits: 2 })}
{tevkifatRate > 0 && (
Tevkifat Tutarı: ₺{tevkifatAmount.toLocaleString('tr-TR', { maximumFractionDigits: 2 })} Ödenecek KDV: ₺{payableVat.toLocaleString('tr-TR', { maximumFractionDigits: 2 })}
)}
); };