From da001e5a24104ee36081342646ae3dd3435f3e22 Mon Sep 17 00:00:00 2001 From: tusharmagar Date: Mon, 16 Mar 2026 21:49:19 +0530 Subject: [PATCH] Enhance WelcomeStep component in onboarding flow with new feature highlights and animations. Introduce icons for memory, connectivity, and privacy features. Update logo display with ambient glow effect and improve user feedback during connection states. --- apps/x/.claude/launch.json | 11 ++ .../onboarding/steps/welcome-step.tsx | 174 ++++++++++++------ 2 files changed, 132 insertions(+), 53 deletions(-) create mode 100644 apps/x/.claude/launch.json diff --git a/apps/x/.claude/launch.json b/apps/x/.claude/launch.json new file mode 100644 index 00000000..3ba43066 --- /dev/null +++ b/apps/x/.claude/launch.json @@ -0,0 +1,11 @@ +{ + "version": "0.0.1", + "configurations": [ + { + "name": "renderer-dev", + "runtimeExecutable": "/Users/tusharmagar/Rowboat/rowboat-V2/apps/x/apps/renderer/node_modules/.bin/vite", + "runtimeArgs": ["--port", "5173"], + "port": 5173 + } + ] +} diff --git a/apps/x/apps/renderer/src/components/onboarding/steps/welcome-step.tsx b/apps/x/apps/renderer/src/components/onboarding/steps/welcome-step.tsx index 90bbcd02..4bd4a366 100644 --- a/apps/x/apps/renderer/src/components/onboarding/steps/welcome-step.tsx +++ b/apps/x/apps/renderer/src/components/onboarding/steps/welcome-step.tsx @@ -1,4 +1,5 @@ -import { Loader2, CheckCircle2 } from "lucide-react" +import { Loader2, CheckCircle2, Brain, Plug, ShieldCheck } from "lucide-react" +import { motion } from "motion/react" import { Button } from "@/components/ui/button" import type { OnboardingState } from "../use-onboarding-state" @@ -6,78 +7,145 @@ interface WelcomeStepProps { state: OnboardingState } +const features = [ + { + icon: Brain, + label: "Memory", + desc: "Builds a knowledge graph from your work", + }, + { + icon: Plug, + label: "Connected", + desc: "Syncs email, calendar, and meetings", + }, + { + icon: ShieldCheck, + label: "Private", + desc: "Your data stays local on your machine", + }, +] + export function WelcomeStep({ state }: WelcomeStepProps) { const rowboatState = state.providerStates['rowboat'] || { isConnected: false, isLoading: false, isConnecting: false } return (
- {/* Logo */} - Rowboat + {/* Logo with ambient glow */} + +
+ Rowboat + {/* Tagline badge */} -
+ Your AI coworker, with memory -
+ {/* Main heading */} -

+ Welcome to Rowboat -

-

+ + Connect your Rowboat account for instant access to all models through our gateway — no API keys needed. -

+ - {/* Product preview placeholder */} -
- Product Preview + {/* Feature highlights */} +
+ {features.map((f, i) => ( + +
+ +
+ {f.label} + {f.desc} +
+ ))}
{/* Sign in / connected state */} - {rowboatState.isConnected ? ( -
-
- - Connected to Rowboat + + {rowboatState.isConnected ? ( +
+
+ + Connected to Rowboat +
+
- -
- ) : ( -
- + {rowboatState.isConnecting && ( +

+ Complete sign in in your browser, then return here. +

)} - - {rowboatState.isConnecting && ( -

- Complete sign in in your browser, then return here. -

- )} -
- )} +
+ )} + {/* BYOK link */} -
+ -
+
) }