- {/* 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
+
+
);