This commit is contained in:
2026-06-26 16:02:06 +02:00
parent 539d94e4e3
commit 5dbb785fc4
3 changed files with 36 additions and 13 deletions
+8
View File
@@ -186,3 +186,11 @@
border-right-color: var(--border);
}
}
.sombre {
background-color: #1a1a2e;
color: #eaeaea;
}
.sombre .carte {
background-color: #16213e;
color: #eaeaea;
}
+1
View File
@@ -6,6 +6,7 @@ function Carte(props) {
<h2>{props.titre}</h2>
<p>{props.niveaux}</p>
<button onClick={props.onLike}> {props.likes}</button>
<button onClick={() => props.onDelete()}>🗑</button>
</div>
);
}
+27 -13
View File
@@ -2,12 +2,20 @@ import { useState } from "react";
import Carte from "../components/carte";
import Header from "../components/Header";
import Footer from "../components/Footer";
import { initialData } from "../data";
import { useNavigate } from "react-router-dom";
function Accueil({ likes, setLikes }) {
function Accueil({ trilogies, setTrilogies, likes, setLikes }) {
console.log("test");
const [a, setA] = useState(trilogies[0].id);
const [b, setB] = useState(trilogies[1].id);
const likesA = likes[a] || 0;
const likesB = likes[b] || 0;
const gagnante =
likesA === likesB
? "Égalité"
: likesA > likesB
? trilogies.find((t) => t.id === Number(a)).nom
: trilogies.find((t) => t.id === Number(b)).nom;
const [recherche, setRecherche] = useState("");
const [trilogies, setTrilogies] = useState(initialData);
const [nom, setNom] = useState("");
const [niveaux, setNiveaux] = useState("");
const [tri, setTri] = useState("nom");
@@ -18,13 +26,10 @@ function Accueil({ likes, setLikes }) {
if (tri === "likes") return (likes[b.id] || 0) - (likes[a.id] || 0);
return 0;
});
const navigate = useNavigate();
function hasard() {
const i = Math.floor(Math.random() * trilogies.length);
navigate(`/trilogie/${trilogies[i].id}`);
}
const medailles = ["🥇", "🥈", "🥉"];
const podium = [...trilogies]
.sort((a, b) => (likes[b.id] || 0) - (likes[a.id] || 0))
.slice(0, 3);
function ajouter(e) {
e.preventDefault();
if (nom.trim() === "") return;
@@ -37,18 +42,26 @@ function Accueil({ likes, setLikes }) {
function liker(id) {
setLikes((prev) => ({ ...prev, [id]: (prev[id] || 0) + 1 }));
}
function supprimer(id) {
setTrilogies(trilogies.filter((t) => t.id !== id));
}
const total = Object.values(likes).reduce((s, n) => s + n, 0);
return (
<div className="body">
<Header />
<>
<button> </button>
<select value={tri} onChange={(e) => setTri(e.target.value)}>
<option value="nom">Nom (AZ)</option>
<option value="likes">Plus likées</option>
</select>
</>
<div className="podium">
{podium.map((t, index) => (
<p key={t.id}>
{medailles[index]} {t.nom} {likes[t.id] || 0}
</p>
))}
</div>
<form onSubmit={ajouter}>
<input
value={nom}
@@ -78,6 +91,7 @@ function Accueil({ likes, setLikes }) {
niveaux={trilo.niveaux}
likes={likes[trilo.id] || 0}
onLike={() => liker(trilo.id)}
onDelete={() => supprimer(trilo.id)}
/>
))}
<Footer />