import React, { useState, useEffect, useMemo } from 'react'; import { useLocation } from 'react-router-dom'; import { Search } from 'lucide-react'; import { MOCK_BUSINESSES } from '../services/mockData'; import { CATEGORIES } from '../types'; import BusinessCard from '../components/BusinessCard'; import DirectoryHero from '../components/DirectoryHero'; const DirectoryPage = () => { const [filterCategory, setFilterCategory] = useState('All'); const [searchQuery, setSearchQuery] = useState(''); const useQuery = () => { return new URLSearchParams(useLocation().search); } const query = useQuery(); useEffect(() => { const q = query.get('q'); if (q) setSearchQuery(q); }, [query]); const featuredBusiness = useMemo(() => { return MOCK_BUSINESSES.find(b => b.isFeatured); }, []); const filteredBusinesses = useMemo(() => { return MOCK_BUSINESSES.filter(b => { const matchesCategory = filterCategory === 'All' || b.category === filterCategory; const matchesSearch = b.name.toLowerCase().includes(searchQuery.toLowerCase()) || b.description.toLowerCase().includes(searchQuery.toLowerCase()) || b.tags.some(t => t.toLowerCase().includes(searchQuery.toLowerCase())); return matchesCategory && matchesSearch; }); }, [filterCategory, searchQuery]); return (
{/* New Hero Section */} {featuredBusiness && }
{/* Filters Sidebar */}

Filtres

setSearchQuery(e.target.value)} className="w-full border-gray-300 rounded-md shadow-sm focus:ring-brand-500 focus:border-brand-500 sm:text-sm p-2 border" placeholder="Nom, mot-clé..." />
setFilterCategory('All')} className="focus:ring-brand-500 h-4 w-4 text-brand-600 border-gray-300" />
{CATEGORIES.map(cat => (
setFilterCategory(cat)} className="focus:ring-brand-500 h-4 w-4 text-brand-600 border-gray-300" />
))}
{/* Results Grid */}

Annuaire des entreprises

{filteredBusinesses.length} résultats
{filteredBusinesses.length > 0 ? (
{filteredBusinesses.map(biz => ( ))}
) : (

Aucun résultat

Essayez d'ajuster vos filtres de recherche.

)}
); }; export default DirectoryPage;