import { useMemo, useState } from 'react'; import { usePublicData } from '../lib/usePublic.js'; import MemberModal from '../components/MemberModal.jsx'; import { associationSettings } from '../lib/siteSettings.js'; export default function Annuaire() { const { data } = usePublicData(); const [search, setSearch] = useState(''); const [category, setCategory] = useState('Toutes'); const [detail, setDetail] = useState(null); const members = data?.members ?? []; const categories = data?.categories ?? []; const settings = associationSettings(data?.content); const filtered = useMemo(() => { const q = search.trim().toLowerCase(); return members.filter((m) => { const matchCat = category === 'Toutes' || (m.categorie || 'Non classée') === category; const matchText = !q || `${m.nom} ${m.dirigeant} ${m.secteur} ${m.categorie || ''} ${m.adresse || ''}`.toLowerCase().includes(q); return matchCat && matchText; }); }, [members, search, category]); const chips = ['Toutes', ...categories.map((c) => c.name)]; return (
Annuaire des membres

{members.length} entreprises, un réseau.

Découvrez les entreprises membres de {settings.association_name} et prenez contact directement avec leurs dirigeants.

⌕ setSearch(e.target.value)} placeholder="Rechercher une entreprise, un dirigeant, un secteur…" maxLength={120} style={{ width: '100%', padding: '14px 16px 14px 42px', border: '1px solid var(--input-border)', borderRadius: 3, background: '#fff' }} />
{filtered.length} entreprise{filtered.length > 1 ? 's' : ''}
{chips.map((c) => ( ))}
{filtered.map((m) => (
setDetail(m)} onKeyDown={(event) => { if (event.key === 'Enter' || event.key === ' ') { event.preventDefault(); setDetail(m); } }} >
{m.logo_path ? : 'logo'}
{m.nom}
{m.secteur}
{m.categorie || 'Non classée'}

{m.presentation}

{m.dirigeant}
))}
{filtered.length === 0 && (
Aucune entreprise trouvée

Essayez d'autres mots-clés ou réinitialisez les filtres.

)}
setDetail(null)} />
); }