import { useEffect, useState } from 'react';
import SearchBar from '../components/SearchBar';
import ListingCard from '../components/ListingCard';
import { publicService } from '../services/publicService';
import type { Listing, Category } from '../types';
export default function HomePage() {
const [listings, setListings] = useState
([]);
const [categories, setCategories] = useState([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
loadInitialData();
}, []);
const loadInitialData = async () => {
setLoading(true);
try {
const [latestListings, cats] = await Promise.all([
publicService.getLatestListings(),
publicService.getCategories()
]);
setListings(latestListings);
setCategories(cats);
} catch (e) {
console.error(e);
} finally {
setLoading(false);
}
};
const handleSearch = async (query: string) => {
setLoading(true);
try {
const results = await publicService.searchListings(query);
setListings(results);
} catch (e) {
console.error(e);
} finally {
setLoading(false);
}
};
const mainCategories = categories.filter(c => !c.parentId);
return (
{/* Hero Section */}
Encuentra tu próximo objetivo
Clasificados verificados de Autos, Propiedades y más.
{/* Categories Quick Links */}
{mainCategories.map(cat => (
))}
{/* Latest Listings */}
{loading ? 'Cargando...' : 'Resultados Recientes'}
{!loading && listings.length === 0 && (
No se encontraron avisos con esos criterios.
)}
{listings.map(listing => (
))}
);
}