import { useState } from 'react'; import { Link } from 'react-router-dom'; import { useStore } from '../hooks/useStore.jsx'; import { SPORTS } from '../data/seedData.js'; import Avatar from '../components/Avatar.jsx'; import SportBadge from '../components/SportBadge.jsx'; import { fmtName } from '../utils/formatName.js'; export default function Athletes() { const { users } = useStore(); const [search, setSearch] = useState(''); const [sport, setSport] = useState('all'); const filtered = users.filter(u => { const matchSearch = !search || u.name?.toLowerCase().includes(search.toLowerCase()) || u.city?.toLowerCase().includes(search.toLowerCase()); const matchSport = sport === 'all' || u.sports?.includes(sport); return matchSearch && matchSport; }); return (

Athletes

+ Add

All registered athletes

setSearch(e.target.value)} placeholder="Search name or city..." />
{filtered.length} athlete{filtered.length !== 1 ? 's' : ''}
{filtered.map(u => (
{ e.currentTarget.style.borderColor = 'var(--accent)'; e.currentTarget.style.transform = 'translateY(-2px)'; }} onMouseLeave={e => { e.currentTarget.style.borderColor = 'var(--border)'; e.currentTarget.style.transform = ''; }} >
{fmtName(u)}
{u.city}, {u.country}
{u.sports?.map(s => )}
Age
{u.biometrics?.age}
Height
{u.biometrics?.height_cm}cm
Years Pro
{u.biometrics?.years_pro}
))} {filtered.length === 0 && (
No athletes found
)}
); }