Add examples section to ChallengesSection component: Introduce a toggleable examples section with detailed challenge descriptions and suggested points, enhancing user engagement and clarity on challenge expectations.
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 2m47s
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 2m47s
This commit is contained in:
@@ -72,6 +72,7 @@ export default function ChallengesSection({
|
|||||||
const [pointsReward, setPointsReward] = useState(100);
|
const [pointsReward, setPointsReward] = useState(100);
|
||||||
const [successMessage, setSuccessMessage] = useState<string | null>(null);
|
const [successMessage, setSuccessMessage] = useState<string | null>(null);
|
||||||
const [errorMessage, setErrorMessage] = useState<string | null>(null);
|
const [errorMessage, setErrorMessage] = useState<string | null>(null);
|
||||||
|
const [showExamples, setShowExamples] = useState(false);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
fetchChallenges();
|
fetchChallenges();
|
||||||
@@ -452,6 +453,95 @@ export default function ChallengesSection({
|
|||||||
})}
|
})}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{/* Examples Section */}
|
||||||
|
<Card variant="dark" className="mt-8">
|
||||||
|
<button
|
||||||
|
onClick={() => setShowExamples(!showExamples)}
|
||||||
|
className="w-full flex items-center justify-between p-4 text-left"
|
||||||
|
>
|
||||||
|
<h3 className="text-lg font-bold text-pixel-gold">
|
||||||
|
💡 Exemples de défis
|
||||||
|
</h3>
|
||||||
|
<span className="text-pixel-gold text-xl">
|
||||||
|
{showExamples ? "−" : "+"}
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
{showExamples && (
|
||||||
|
<div className="px-4 pb-4 space-y-4 border-t border-[var(--border)] pt-4">
|
||||||
|
<div className="space-y-3">
|
||||||
|
<div className="p-4 bg-black/40 rounded border border-[var(--border)]">
|
||||||
|
<h4 className="font-bold text-pixel-gold mb-2">
|
||||||
|
Qui participera à plus d'événements ce mois ?
|
||||||
|
</h4>
|
||||||
|
<p className="text-sm text-gray-300">
|
||||||
|
Le joueur qui participe au plus grand nombre d'événements
|
||||||
|
organisés ce mois remporte le défi. Les événements doivent
|
||||||
|
être validés par un admin pour compter.
|
||||||
|
</p>
|
||||||
|
<div className="mt-2 text-xs text-gray-400">
|
||||||
|
Points suggérés: 150
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="p-4 bg-black/40 rounded border border-[var(--border)]">
|
||||||
|
<h4 className="font-bold text-pixel-gold mb-2">
|
||||||
|
Premier à atteindre le niveau 10
|
||||||
|
</h4>
|
||||||
|
<p className="text-sm text-gray-300">
|
||||||
|
Le premier joueur à atteindre le niveau 10 remporte le défi.
|
||||||
|
Le niveau est calculé automatiquement selon le score total.
|
||||||
|
</p>
|
||||||
|
<div className="mt-2 text-xs text-gray-400">
|
||||||
|
Points suggérés: 200
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="p-4 bg-black/40 rounded border border-[var(--border)]">
|
||||||
|
<h4 className="font-bold text-pixel-gold mb-2">
|
||||||
|
Meilleur feedback sur un événement
|
||||||
|
</h4>
|
||||||
|
<p className="text-sm text-gray-300">
|
||||||
|
Le joueur qui donne le feedback le plus détaillé et
|
||||||
|
constructif sur un événement remporte le défi. L'admin
|
||||||
|
désignera le gagnant selon la qualité du feedback.
|
||||||
|
</p>
|
||||||
|
<div className="mt-2 text-xs text-gray-400">
|
||||||
|
Points suggérés: 100
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="p-4 bg-black/40 rounded border border-[var(--border)]">
|
||||||
|
<h4 className="font-bold text-pixel-gold mb-2">
|
||||||
|
Plus grand nombre de points gagnés cette semaine
|
||||||
|
</h4>
|
||||||
|
<p className="text-sm text-gray-300">
|
||||||
|
Le joueur qui accumule le plus de points cette semaine
|
||||||
|
remporte le défi. Seuls les points gagnés après l'acceptation
|
||||||
|
du défi comptent.
|
||||||
|
</p>
|
||||||
|
<div className="mt-2 text-xs text-gray-400">
|
||||||
|
Points suggérés: 250
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="p-4 bg-black/40 rounded border border-[var(--border)]">
|
||||||
|
<h4 className="font-bold text-pixel-gold mb-2">
|
||||||
|
Défi créatif : meilleure bio de profil
|
||||||
|
</h4>
|
||||||
|
<p className="text-sm text-gray-300">
|
||||||
|
Le joueur avec la bio de profil la plus créative et originale
|
||||||
|
remporte le défi. L'admin désignera le gagnant selon
|
||||||
|
l'originalité et la qualité de la bio.
|
||||||
|
</p>
|
||||||
|
<div className="mt-2 text-xs text-gray-400">
|
||||||
|
Points suggérés: 120
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</Card>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user