From 6e022614b8721cc54033158fced0edd009b91727 Mon Sep 17 00:00:00 2001 From: davidercruz Date: Tue, 14 Apr 2026 11:23:41 +0100 Subject: [PATCH] feat(onboarding): add results screen, tag chips, and lower swipe milestones Co-Authored-By: Claude Opus 4.6 --- .../modals/hotTakes/HotAndColdModal.tsx | 12 ++++ .../webapp/lib/swipeOnboardingGuidance.ts | 18 +++--- packages/webapp/pages/onboarding/swipe.tsx | 61 ++++++++++++++++++- 3 files changed, 79 insertions(+), 12 deletions(-) diff --git a/packages/shared/src/components/modals/hotTakes/HotAndColdModal.tsx b/packages/shared/src/components/modals/hotTakes/HotAndColdModal.tsx index d58821bd58..0e146c15af 100644 --- a/packages/shared/src/components/modals/hotTakes/HotAndColdModal.tsx +++ b/packages/shared/src/components/modals/hotTakes/HotAndColdModal.tsx @@ -1433,6 +1433,18 @@ const OnboardingPostCard = ({ {card.title || 'Popular developer story'} + {card.tags && card.tags.length > 0 && ( +
+ {card.tags.slice(0, 5).map((tag) => ( + + {tag} + + ))} +
+ )}
{card.image ? ( ('prompt'); const [promptText, setPromptText] = useState(''); const [promptLoading, setPromptLoading] = useState(false); @@ -313,14 +313,69 @@ function SwipeOnboardingPage(): ReactElement { variant={ButtonVariant.Primary} type="button" onClick={() => { - onComplete().catch(() => null); + setOnboardingUiMode('results'); }} > - Go to my feed + See my interests
) : null; + if (onboardingUiMode === 'results') { + return ( +
+
+

+ Your interests +

+

+ Based on your swipes, we selected these tags for your feed. +

+ {adaptiveSelectedTags.length > 0 ? ( +
+ {adaptiveSelectedTags.map((tag) => ( + + {tag} + + ))} +
+ ) : ( +

+ No tags selected yet. Swipe right on posts you find interesting! +

+ )} +
+ + +
+
+
+ ); + } + if (onboardingUiMode === 'prompt') { return (