// MilestonesPanel.tsx — Paliers de prestige (Sprint 3) // Progress bar vers le prochain milestone, claim button, preview reward import { useGameStore } from "../store/useGameStore"; import { getClaimableMilestones, getNextMilestone } from "../core/economy"; import { PRESTIGE_MILESTONES } from "../data/prestigeMilestones"; export function MilestonesPanel() { const state = useGameStore((s) => s.state); const claim = useGameStore((s) => s.claimMilestone); if (state.prestigeCount < 1) return null; const claimable = getClaimableMilestones(state); const nextMilestone = getNextMilestone(state); const claimed = state.claimedMilestones ?? []; const totalClaimed = claimed.length; return (
Milestones {totalClaimed}/{PRESTIGE_MILESTONES.length}
{/* Claimable milestones */} {claimable.length > 0 && (
{claimable.map((m) => (
{m.name} {m.reward.label}
))}
)} {/* Progress vers le prochain milestone */} {nextMilestone && (
Prochain : {nextMilestone.name} {state.prestigeCount}/{nextMilestone.threshold}
{nextMilestone.reward.label}
)} {/* Tous les milestones réclamés */} {!nextMilestone && claimable.length === 0 && ( Tous les milestones reclames ! )} {/* Liste compacte des milestones passés */} {totalClaimed > 0 && claimable.length === 0 && (
{PRESTIGE_MILESTONES.filter((m) => claimed.includes(m.id)).map((m) => ( {m.threshold} ))}
)}
); }