const { useState, useEffect } = React; function ContactsList({ onSelectContact }) { const [contacts, setContacts] = useState([]); const [filteredContacts, setFilteredContacts] = useState([]); const [loading, setLoading] = useState(true); const [tierFilter, setTierFilter] = useState(''); const [warmthFilter, setWarmthFilter] = useState(''); const [searchTerm, setSearchTerm] = useState(''); useEffect(() => { loadContacts(); }, []); useEffect(() => { filterContacts(); }, [contacts, tierFilter, warmthFilter, searchTerm]); const loadContacts = async () => { try { const res = await fetch('/api/contacts'); const data = await res.json(); setContacts(data); setLoading(false); } catch (err) { console.error('Error loading contacts:', err); setLoading(false); } }; const filterContacts = () => { let filtered = contacts; if (tierFilter) { filtered = filtered.filter(c => c.tier === tierFilter); } if (warmthFilter) { filtered = filtered.filter(c => c.warmth_status === warmthFilter); } if (searchTerm) { filtered = filtered.filter(c => c.full_name.toLowerCase().includes(searchTerm.toLowerCase()) || c.organisation?.toLowerCase().includes(searchTerm.toLowerCase()) ); } setFilteredContacts(filtered); }; if (loading) return
No contacts found
) : ( filteredContacts.map(contact => (