diff --git a/apps/web/app/layout.tsx b/apps/web/app/layout.tsx index 707e4185..07106558 100644 --- a/apps/web/app/layout.tsx +++ b/apps/web/app/layout.tsx @@ -39,8 +39,8 @@ export default function RootLayout({ > +
+
-
diff --git a/apps/web/app/onboarding/page.tsx b/apps/web/app/onboarding/page.tsx index ec0e7d6c..09e4a470 100644 --- a/apps/web/app/onboarding/page.tsx +++ b/apps/web/app/onboarding/page.tsx @@ -20,7 +20,7 @@ import { SetupHeader } from "./setup/header" import { ChatSidebar } from "./setup/chat-sidebar" import { Logo } from "@ui/assets/Logo" import NovaOrb from "@/components/nova/nova-orb" -import { AnimatedGradientBackground } from "./setup/page" +import { AnimatedGradientBackground } from "@/components/new/animated-gradient-background" function UserSupermemory({ name }: { name: string }) { return ( @@ -33,7 +33,9 @@ function UserSupermemory({ name }: { name: string }) { >
-

{name}'s

+

+ {name.split(" ")[0]}'s +

supermemory

@@ -57,6 +59,7 @@ export default function OnboardingPage() { description: string otherLinks: string[] } | null>(null) + const [showWelcomeContent, setShowWelcomeContent] = useState(false) const currentFlow = flow || "welcome" const currentStep = step || "input" @@ -68,6 +71,16 @@ export default function OnboardingPage() { } }, [user?.name]) + useEffect(() => { + if (currentFlow === "welcome" && currentStep === "input") { + setShowWelcomeContent(false) + const timer = setTimeout(() => { + setShowWelcomeContent(true) + }, 1250) + return () => clearTimeout(timer) + } + }, [currentFlow, currentStep]) + useEffect(() => { if (currentFlow !== "welcome") return @@ -179,10 +192,14 @@ export default function OnboardingPage() { {isSetupFlow && } - {isWelcomeFlow && ( -
+ {isWelcomeFlow && currentStep === "input" && ( + + )} + + {isWelcomeFlow && showWelcomeContent && ( +
diff --git a/apps/web/app/onboarding/setup/header.tsx b/apps/web/app/onboarding/setup/header.tsx index e452a57b..95121b06 100644 --- a/apps/web/app/onboarding/setup/header.tsx +++ b/apps/web/app/onboarding/setup/header.tsx @@ -14,6 +14,8 @@ export function SetupHeader() { setName(storedName) }, []) + const userName = name ? `${name.split(" ")[0]}'s` : "My" + return ( {name && (
-

{name}'s

+

+ {userName} +

supermemory

diff --git a/apps/web/app/onboarding/setup/page.tsx b/apps/web/app/onboarding/setup/page.tsx deleted file mode 100644 index 7437e49f..00000000 --- a/apps/web/app/onboarding/setup/page.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { motion } from "motion/react" - -export function AnimatedGradientBackground() { - return ( -
- - - -
- ) -} diff --git a/apps/web/app/onboarding/setup/relatable-question.tsx b/apps/web/app/onboarding/setup/relatable-question.tsx index a4f2dc99..5e65140e 100644 --- a/apps/web/app/onboarding/setup/relatable-question.tsx +++ b/apps/web/app/onboarding/setup/relatable-question.tsx @@ -1,7 +1,7 @@ "use client" import { useState } from "react" -import { motion } from "motion/react" +import { motion, AnimatePresence } from "motion/react" import { Button } from "@ui/components/button" import { useRouter } from "next/navigation" import { cn } from "@lib/utils" @@ -62,48 +62,71 @@ export function RelatableQuestion() { )} > {relatableOptions.map((option, index) => ( - + }} + onKeyDown={(e) => { + if (e.key === "Enter" || e.key === " ") { + e.preventDefault() + setSelectedOptions((prev) => + prev.includes(index) + ? prev.filter((i) => i !== index) + : [...prev, index], + ) + } + }} + type="button" + > + + {selectedOptions.includes(index) && ( + + )} + +
+ + {option.emoji} + +

+ {option.text} +

+
+ +
))}
diff --git a/apps/web/app/onboarding/welcome/memories-step.tsx b/apps/web/app/onboarding/welcome/memories-step.tsx index 11de1506..5545a723 100644 --- a/apps/web/app/onboarding/welcome/memories-step.tsx +++ b/apps/web/app/onboarding/welcome/memories-step.tsx @@ -114,7 +114,7 @@ export function MemoriesStep({ onSubmit }: MemoriesStepProps) { Let's add your memories -
+