'use client'; import { useState, useEffect, useMemo } from 'react'; import { PawPrint, SlidersHorizontal } from 'lucide-react'; import AnimalCard from '@/components/animals/AnimalCard'; import FilterChips, { FILTER_OPTIONS } from '@/components/animals/FilterChips'; import { MOCK_ANIMALS, Animal } from '@/lib/mock-data'; // TODO: substituir por query Prisma quando DATABASE_URL estiver configurada function filterAnimals(animals: Animal[], filter: string): Animal[] { switch (filter) { case 'dog': return animals.filter(a => a.species === 'DOG'); case 'cat': return animals.filter(a => a.species === 'CAT'); case 'urgent': return animals.filter(a => a.urgent); case 'lisboa': return animals.filter(a => a.shelter.district.toLowerCase() === 'lisboa'); case 'porto': return animals.filter(a => a.shelter.district.toLowerCase() === 'porto'); case 'braga': return animals.filter(a => a.shelter.district.toLowerCase() === 'braga'); case 'sintra': return animals.filter(a => a.shelter.district.toLowerCase() === 'sintra'); case 'male': return animals.filter(a => a.sex === 'MALE'); case 'female': return animals.filter(a => a.sex === 'FEMALE'); case 'sterilized': return animals.filter(a => a.sterilized); default: return animals; } } function SkeletonCard() { return (
PetLink · Adopção
{MOCK_ANIMALS.length.toLocaleString('pt-PT')} animais à espera {urgentCount > 0 && ( {urgentCount} urgentes )}
{animals.length} de {MOCK_ANIMALS.length} animais • Dados de demonstração
> ) : (Tenta um filtro diferente ou vê todos os animais disponíveis.