'use client' import { useState, useEffect } from 'react' type ExchangeRates = { [key: string]: number } const POPULAR_CURRENCIES = [ { code: 'USD', name: 'US Dollar' }, { code: 'EUR', name: 'Euro' }, { code: 'GBP', name: 'British Pound' }, { code: 'JPY', name: 'Japanese Yen' }, { code: 'CHF', name: 'Swiss Franc' }, { code: 'CAD', name: 'Canadian Dollar' }, { code: 'AUD', name: 'Australian Dollar' }, { code: 'CNY', name: 'Chinese Yuan' }, ] export default function CurrencyConverter() { const [amount, setAmount] = useState('1') const [fromCurrency, setFromCurrency] = useState('EUR') const [toCurrency, setToCurrency] = useState('USD') const [rates, setRates] = useState({}) const [loading, setLoading] = useState(true) const [error, setError] = useState('') const [lastUpdated, setLastUpdated] = useState(null) useEffect(() => { const fetchRates = async () => { try { setLoading(true) setError('') // Using ExchangeRate-API (free tier) const response = await fetch('https://open.er-api.com/v6/latest/EUR') const data = await response.json() if (data.rates) { setRates(data.rates) setLastUpdated(new Date()) } else { throw new Error('Failed to fetch exchange rates') } } catch (err) { setError('Failed to load exchange rates. Please try again later.') } finally { setLoading(false) } } fetchRates() }, []) const convert = () => { if (!rates[fromCurrency] || !rates[toCurrency]) return '0.00' const amountNum = parseFloat(amount) if (isNaN(amountNum)) return '0.00' // Convert through EUR (base currency) const inEUR = amountNum / rates[fromCurrency] const result = inEUR * rates[toCurrency] return result.toFixed(2) } const handleSwap = () => { setFromCurrency(toCurrency) setToCurrency(fromCurrency) } return (

Currency Converter

Convert between different currencies using real-time exchange rates. {lastUpdated && ( Last updated: {lastUpdated.toLocaleString()} )}

{loading ? (
Loading exchange rates...
) : error ? (
{error}
) : (
setAmount(e.target.value)} className="w-full bg-zinc-700 text-white rounded-md border border-gray-600 p-2" />
Result
{amount} {fromCurrency} = {convert()} {toCurrency}
1 {fromCurrency} = {(rates[toCurrency] / rates[fromCurrency]).toFixed(4)} {toCurrency}
)}
) }