From 34ea99e99d6f2a3304aeb3b6db36f7077b806769 Mon Sep 17 00:00:00 2001 From: Waleed Date: Tue, 24 Mar 2026 12:59:29 -0700 Subject: [PATCH] feat(home): auth-aware landing page navigation (#3743) * feat(home): auth-aware landing page navigation - Redirect authenticated users from / to /workspace via middleware (?home param bypasses) - Show "Go to App" instead of "Log in / Get started" in navbar for authenticated users - Logo links to /?home for authenticated users to stay in marketing context - Settings "Home Page" button opens /?home - Handle isPending session state to prevent CTA button flash * lint * fix(home): remove stale ?from=nav params in landing nav * fix(home): preserve ?home param in nav links during session pending state * lint --- .../app/(home)/components/navbar/navbar.tsx | 165 ++++++++++++------ apps/sim/app/(landing)/components/nav/nav.tsx | 114 +++++++----- .../settings/components/general/general.tsx | 2 +- apps/sim/proxy.ts | 6 +- 4 files changed, 184 insertions(+), 103 deletions(-) diff --git a/apps/sim/app/(home)/components/navbar/navbar.tsx b/apps/sim/app/(home)/components/navbar/navbar.tsx index 35cea4f68a..ff638da0b7 100644 --- a/apps/sim/app/(home)/components/navbar/navbar.tsx +++ b/apps/sim/app/(home)/components/navbar/navbar.tsx @@ -3,7 +3,9 @@ import { useCallback, useEffect, useRef, useState } from 'react' import Image from 'next/image' import Link from 'next/link' +import { useSearchParams } from 'next/navigation' import { GithubOutlineIcon } from '@/components/icons' +import { useSession } from '@/lib/auth/auth-client' import { cn } from '@/lib/core/utils/cn' import { BlogDropdown, @@ -40,6 +42,12 @@ interface NavbarProps { export default function Navbar({ logoOnly = false, blogPosts = [] }: NavbarProps) { const brand = getBrandConfig() + const searchParams = useSearchParams() + const { data: session, isPending: isSessionPending } = useSession() + const isAuthenticated = Boolean(session?.user?.id) + const isBrowsingHome = searchParams.has('home') + const useHomeLinks = isAuthenticated || isBrowsingHome + const logoHref = useHomeLinks ? '/?home' : '/' const [activeDropdown, setActiveDropdown] = useState(null) const [hoveredLink, setHoveredLink] = useState(null) const [mobileMenuOpen, setMobileMenuOpen] = useState(false) @@ -92,7 +100,7 @@ export default function Navbar({ logoOnly = false, blogPosts = [] }: NavbarProps itemScope itemType='https://schema.org/SiteNavigationElement' > - + {brand.name} @@ -121,7 +129,9 @@ export default function Navbar({ logoOnly = false, blogPosts = [] }: NavbarProps {!logoOnly && ( <>