From 166720f43f639738067a06bbe477bbe8d40f0e88 Mon Sep 17 00:00:00 2001 From: Cho Young-Hwi Date: Wed, 22 Apr 2026 19:28:21 +0900 Subject: [PATCH] [#945] Polish streak card: boost tier header, white button text, tidy table MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Header shows boost inline (e.g., "โšก 12 Days Streak ยท +10% Boost") - Shows "Next: 7 days โ†’ +5%" when no boost yet - Check In button text set to white for contrast on brown bg - Boost tiers table: clean 3-column grid, locked tiers show ๐Ÿ”’ - Current tier highlighted with "โ† active" badge - Explanation condensed to single line with visual separator Fixes #945 Co-Authored-By: Claude Opus 4.6 (1M context) --- package.json | 2 +- src/components/airdrop/StreakCard.tsx | 43 +++++++++++++++++---------- 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 9eec94c3..c489ac45 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plotlink", - "version": "0.1.41", + "version": "0.1.42", "private": true, "workspaces": [ "packages/*" diff --git a/src/components/airdrop/StreakCard.tsx b/src/components/airdrop/StreakCard.tsx index 6369e64a..a49bea35 100644 --- a/src/components/airdrop/StreakCard.tsx +++ b/src/components/airdrop/StreakCard.tsx @@ -132,14 +132,17 @@ export function StreakCard({ streak, address }: { streak: StreakData; address: s return (
- {/* Header: streak count + boost */} + {/* Header: streak count + boost tier */}
⚡ {streak.currentStreak} Day{streak.currentStreak !== 1 ? "s" : ""} Streak + {streak.boostPercent > 0 && ( + · +{streak.boostPercent}% Boost + )}
- {streak.boostPercent > 0 && ( -
- Current boost: +{streak.boostPercent}% + {streak.boostPercent === 0 && streak.nextTier && ( +
+ Next: {streak.nextTier.days} days → +{streak.nextTier.boost * 100}%
)}
@@ -166,7 +169,7 @@ export function StreakCard({ streak, address }: { streak: StreakData; address: s type="button" onClick={handleCheckIn} disabled={streak.checkedInToday || checking} - className="bg-accent text-bg rounded px-4 py-1.5 text-xs font-medium disabled:opacity-50 cursor-pointer" + className="bg-accent text-white rounded px-4 py-1.5 text-xs font-medium disabled:opacity-50 cursor-pointer" > {streak.checkedInToday ? "Checked in today \u2713" @@ -179,8 +182,8 @@ export function StreakCard({ streak, address }: { streak: StreakData; address: s {error &&
{error}
} {/* Boost tiers table */} -
-
+
+
Boost Tiers
@@ -190,26 +193,34 @@ export function StreakCard({ streak, address }: { streak: StreakData; address: s return (
{tier.days}+ days +{tier.boost}% - + {isCurrent ? ( - ← current + ← active ) : unlocked ? ( - ✓ unlocked - ) : null} + + ) : ( + 🔒 + )}
); })}
-

- Boost applies to all PL point earnings. Miss a day? Drop one tier (not full reset). -

+
+

+ Miss a day → drop one tier +

+
);