// 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}
))}
)}
);
}