From 435da8207d7f79c1c2c20af607d41b0eb323949a Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga Date: Sun, 14 Sep 2025 08:17:35 -0300 Subject: [PATCH] feat: adiciona tela de lista de animais cadastrados --- src/App.tsx | 11 +++ src/pages/AnimalList.tsx | 202 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 213 insertions(+) create mode 100644 src/pages/AnimalList.tsx diff --git a/src/App.tsx b/src/App.tsx index 778d169..4daebb5 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,6 +1,7 @@ import { BrowserRouter as Router, Routes, Route } from "react-router-dom"; import Sidebar from "./Components/Sidebar/Sidebar.tsx"; import AnimalRegister from "./pages/AnimalRegister"; +import AnimalList from "./pages/AnimalList.tsx"; import StaffRegister from "./pages/StaffRegister"; import Dashboard from "./pages/Dashboard.tsx"; import VaccineRegister from "./pages/VaccineRegister.tsx"; @@ -54,6 +55,16 @@ export default function App() { } /> + + + + + + } + /> ([]); + const [selectedAnimal, setSelectedAnimal] = useState(null); + const [loading, setLoading] = useState(true); + const [deleteAnimal, setDeleteAnimal] = useState(null); + const navigate = useNavigate(); + + useEffect(() => { + setTimeout(() => { + setAnimals([ + { id: 1, name: "Lilica", age: "2 anos", breed: "Poodle", status: "Disponível" }, + { id: 2, name: "Rex", age: "3 anos", breed: "Vira-lata", status: "Adotado" }, + { id: 3, name: "Bolt", age: "1 ano", breed: "Labrador", status: "Em tratamento" }, + { id: 4, name: "Mia", age: "4 anos", breed: "Siamês", status: "Disponível" }, + { id: 5, name: "Thor", age: "5 anos", breed: "Pastor Alemão", status: "Disponível" }, + ]); + setLoading(false); + }, 1000); + }, []); + + const getStatusStyle = (status: Animal["status"]) => { + switch (status) { + case "Disponível": return "bg-green-100 text-green-700"; + case "Adotado": return "bg-blue-100 text-blue-700"; + case "Em tratamento": return "bg-yellow-100 text-yellow-700"; + } + }; + + const confirmDelete = () => { + if (deleteAnimal) { + setAnimals(prev => prev.filter(a => a.id !== deleteAnimal.id)); + if (selectedAnimal?.id === deleteAnimal.id) setSelectedAnimal(null); + setDeleteAnimal(null); + } + }; + + return ( +
+
+

Animais cadastrados

+
+ + +
+
+ + {loading ? ( +
+ {[...Array(6)].map((_, i) => ( +
+
+
+
+
+
+
+
+
+
+
+
+
+ ))} +
+ ) : animals.length === 0 ? ( +
+ Nenhum animal cadastrado. Clique em "Cadastrar" para adicionar um novo! +
+ ) : ( +
+ {animals.map((animal) => ( +
+
+ Imagem + {animal.image && ( + {animal.name} + )} + +
+
+
+

{animal.name}

+ + {animal.status} + +
+

{animal.age} • {animal.breed}

+ +
+
+ ))} +
+ {[1, 2, 3, 4, 5].map((page) => ( + + ))} +
+
+ + )} + + {selectedAnimal && ( +
+
+ + +
+ Imagem do {selectedAnimal.name} + {selectedAnimal.image && ( + {selectedAnimal.name} + )} +
+ +

{selectedAnimal.name}

+

Idade: {selectedAnimal.age}

+

Raça: {selectedAnimal.breed}

+

+ Status:{" "} + + {selectedAnimal.status} + +

+ +
+ +
+
+
+ )} + + {deleteAnimal && ( +
+
+

Confirmar exclusão

+

Deseja realmente excluir {deleteAnimal.name}?

+
+ + +
+
+
+ )} +
+ ); +}