import React, { useState, useEffect } from 'react'; import { ChevronDown, AlertCircle, Search } from 'lucide-react'; const CurrencySelect = ({ selectedCurrency, setSelectedCurrency, SUPPORTED_CURRENCIES, error }) => { const [isOpen, setIsOpen] = useState(false); const [isMobile, setIsMobile] = useState(false); const [selectedCurrencyName, setSelectedCurrencyName] = useState(''); const [searchTerm, setSearchTerm] = useState(''); const [filteredCurrencies, setFilteredCurrencies] = useState([]); useEffect(() => { const savedCurrency = localStorage.getItem('selectedCurrency'); if (savedCurrency && SUPPORTED_CURRENCIES[savedCurrency]) { setSelectedCurrency(savedCurrency); } setSelectedCurrencyName(SUPPORTED_CURRENCIES[selectedCurrency]?.country || ''); const checkMobile = () => { setIsMobile(window.innerWidth < 768); }; checkMobile(); window.addEventListener('resize', checkMobile); return () => window.removeEventListener('resize', checkMobile); }, [SUPPORTED_CURRENCIES, setSelectedCurrency]); useEffect(() => { setSelectedCurrencyName(SUPPORTED_CURRENCIES[selectedCurrency]?.country || ''); }, [selectedCurrency, SUPPORTED_CURRENCIES]); useEffect(() => { if (isOpen) { const filtered = Object.entries(SUPPORTED_CURRENCIES).filter(([code, details]) => { const searchLower = searchTerm.toLowerCase(); return ( code.toLowerCase().includes(searchLower) || details.name.toLowerCase().includes(searchLower) || details.country.toLowerCase().includes(searchLower) ); }); setFilteredCurrencies(filtered); } }, [searchTerm, SUPPORTED_CURRENCIES, isOpen]); const handleCurrencyChange = (code) => { localStorage.setItem('selectedCurrency', code); setSelectedCurrency(code); setSelectedCurrencyName(SUPPORTED_CURRENCIES[code]?.country || ''); setIsOpen(false); setSearchTerm(''); }; return (
{isOpen && (
setSearchTerm(e.target.value)} className="w-full pl-8 pr-4 py-2 text-sm border border-gray-200 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" />
{filteredCurrencies.length > 0 ? ( filteredCurrencies.map(([code, { country, symbol, name }]) => ( )) ) : (
No currencies found
)}
)}
); }; export default CurrencySelect;