From 1577303582c5cf130b8799fa0061841f28bb9c95 Mon Sep 17 00:00:00 2001 From: Mannu Date: Sat, 6 Jun 2026 13:11:14 +0530 Subject: [PATCH] feat(billing): header upgrade affordance on home page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Small, non-intrusive upgrade entry point before SOS + dark-mode toggle: - Free tier: muted gray 👑 crown with a pulsing rose dot (discoverable hint, not a nag) — links to /settings#upgrade - Premium tier: amber ✨ sparkle (status reward, no upsell) — links to the same Plan section showing their grants + cancel Reads tier from useFamily(). Both states link to the working Plan section built in Task 8, so it's wired into the real upgrade/cancel flow. Co-Authored-By: Claude Opus 4.8 --- src/app/(app)/home/page.tsx | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/app/(app)/home/page.tsx b/src/app/(app)/home/page.tsx index 0bfd17a..1b50f05 100644 --- a/src/app/(app)/home/page.tsx +++ b/src/app/(app)/home/page.tsx @@ -106,7 +106,7 @@ export default function HomePage() { const [showPhotoMenu, setShowPhotoMenu] = useState(false); const photoInputRef = useRef(null); const { theme, toggle: toggleTheme } = useTheme(); - const { childId, child, familyId, loading, updateChildImage } = useFamily(); + const { childId, child, familyId, loading, tier, updateChildImage } = useFamily(); const stage = useStageCheck(child?.birthDate ?? null); useEffect(() => { @@ -330,6 +330,25 @@ export default function HomePage() {
+ {tier === "pro" ? ( + + ✨ + + ) : ( + + 👑 + {/* Pulsing dot hints there's something to explore — non-intrusive */} + + + )} 🆘