diff --git a/package.json b/package.json index 4a727a5..564267c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plotlink", - "version": "1.5.0", + "version": "1.6.0", "private": true, "workspaces": [ "packages/*" diff --git a/src/components/airdrop/CampaignHero.tsx b/src/components/airdrop/CampaignHero.tsx index e221501..2c54a0b 100644 --- a/src/components/airdrop/CampaignHero.tsx +++ b/src/components/airdrop/CampaignHero.tsx @@ -24,13 +24,15 @@ interface StatusData { lockerTx: string | null; } -const MILESTONE_CARDS = [ - { mcap: 1_000_000, label: "$1M", cmcRank: "#1900", pct: 10, key: "bronze" as const }, - { mcap: 10_000_000, label: "$10M", cmcRank: "#950", pct: 30, key: "silver" as const }, - { mcap: 50_000_000, label: "$50M", cmcRank: "#400", pct: 50, key: "gold" as const }, - { mcap: 100_000_000, label: "$100M", cmcRank: "#250", pct: 100, key: "diamond" as const }, +const MILESTONES = [ + { mcap: 1_000_000, label: "$1M", cmcRank: "≈ #1900", pct: 10, letter: "A" }, + { mcap: 10_000_000, label: "$10M", cmcRank: "≈ #950", pct: 30, letter: "B" }, + { mcap: 50_000_000, label: "$50M", cmcRank: "≈ #400", pct: 50, letter: "C" }, + { mcap: 100_000_000, label: "$100M", cmcRank: "≈ #250", pct: 100, letter: "D" }, ]; +const MAX_MCAP = 100_000_000; + /* ─── Helpers ─── */ function useAirdropStatus() { @@ -69,6 +71,160 @@ function useCountdown(endDateStr: string) { return remaining; } +/* ─── MCap Chart ─── */ + +function MCapChart({ currentFdv }: { currentFdv: number }) { + const progress = Math.min(currentFdv / MAX_MCAP, 1); + const svgW = 600; + const svgH = 80; + const pad = { left: 0, right: 0 }; + const chartW = svgW - pad.left - pad.right; + const fillX = pad.left + progress * chartW; + + return ( +