Skip to content

Conversation

@ameer2468
Copy link
Contributor

@ameer2468 ameer2468 commented Sep 16, 2025

  • Improves mobile menu
  • New upgrade button for site/landing page with the Rive animation like dashboard
  • Login is now a button instead

Summary by CodeRabbit

  • New Features

    • Added an animated "Upgrade to Pro" CTA used across the homepage and header.
    • Added a dedicated Login button in the header for signed-out users with responsive full-width behavior on small screens.
  • Style

    • Simplified main navigation by removing the standalone Login link while keeping Sign Up access.
    • Mobile menu now surfaces both Sign Up and Login actions and standardizes a "Download App" button.
  • UI

    • Visual/size tweaks to homepage artwork for improved responsive layout.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 16, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

Moved the unauthenticated “Log In” nav item out of the main navigation into the header’s right-side Suspense block as a small gray button; added an UpgradeToPro CTA with Rive hover animations and made ProArt accept a className prop. Several HomePage CTA buttons were replaced with the new UpgradeToPro component and MobileMenu/ReadyToGetStarted adjusted styling and auth action layout.

Changes

Cohort / File(s) Summary
Navbar login UI refactor
apps/web/app/(site)/Navbar.tsx
Removed AuthLinks and main-nav login rendering; added a header-right Suspense login Button (variant="gray", size="sm", href="/login", responsive full-width). Kept Links and LoginOrDashboard (possible dual visibility).
Upgrade CTA component added
apps/web/components/pages/_components/UpgradeToPro.tsx
New UpgradeToPro component with Rive animation, hover handlers that play specific animations, renders a blue large Button linking to /pricing, exported default.
Home page CTAs switched to UpgradeToPro
apps/web/components/pages/HomePage/Header.tsx, apps/web/components/pages/HomePage/RecordingModes.tsx, apps/web/components/pages/HomePage/Pricing/ProArt.tsx, apps/web/components/pages/HomePage/ReadyToGetStarted.tsx
Replaced previous pricing/primary CTA Buttons with UpgradeToPro (text from homepageCopy.header.cta.primaryButton). ProArt now accepts className?: string and merges it via clsx. Header added useRef and proArtRef import usage. ReadyToGetStarted layout class adjustments and CTA replacement.
Mobile menu auth and link styling changes
apps/web/components/ui/MobileMenu.tsx
Adjusted wrapper class order; changed list item keys to index.toString(); updated text color classes; unauthenticated branch now shows both a primary Sign Up (or Dashboard) action and a gray Login button; Download action stabilized to fixed /download blue button with mt-6.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant Navbar
  participant AuthState as Auth State
  participant HeaderRight as Header Right (Suspense)

  User->>Navbar: Request page
  Navbar->>AuthState: Read auth state
  alt Authenticated
    Navbar->>HeaderRight: Render LoginOrDashboard → Dashboard
    Navbar-->>User: Show main nav + dashboard entry
  else Not authenticated
    Navbar->>HeaderRight: Render LoginOrDashboard → Sign Up
    HeaderRight->>User: Render gray Login button (/login, sm)
    Navbar-->>User: Show main nav + Sign Up + Login
  end
Loading
sequenceDiagram
  participant User
  participant UpgradeToPro
  participant RiveEngine as Rive instance
  participant Router

  User->>UpgradeToPro: Hover enter (mouseEnter)
  UpgradeToPro->>RiveEngine: stop() then play("items-coming-out")
  User->>UpgradeToPro: Hover leave (mouseLeave)
  UpgradeToPro->>RiveEngine: stop() then play("items-coming-in")
  User->>UpgradeToPro: Click
  UpgradeToPro->>Router: navigate to /pricing
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

codex

Suggested reviewers

  • Brendonovich

Poem

I hopped and nudged the header bright,
Moved Log In left into the light.
A Rive wave dances on each hover,
Upgrade calls out — come discover!
Two buttons now, both doors to try,
Hop on, dear user — give it a try 🐇✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title "chore: make login a button instead" is concise and directly describes the primary change (converting the login UI into a button), and it matches the Navbar changes in the provided summary without extraneous details.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9352409 and aa47080.

📒 Files selected for processing (6)
  • apps/web/components/ReadyToGetStarted.tsx (2 hunks)
  • apps/web/components/pages/HomePage/Header.tsx (4 hunks)
  • apps/web/components/pages/HomePage/Pricing/ProArt.tsx (2 hunks)
  • apps/web/components/pages/HomePage/RecordingModes.tsx (2 hunks)
  • apps/web/components/pages/_components/UpgradeToPro.tsx (1 hunks)
  • apps/web/components/ui/MobileMenu.tsx (1 hunks)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (5)
apps/web/app/(site)/Navbar.tsx (5)

172-181: Login CTA addition: looks good

Meets the PR goal and fits the header layout.

Copy nit: consider “Log in” (verb) to match “Sign up” style.


96-101: Avoid double suspense/fetch for auth; compute once and pass down

Navbar already calls use(useAuthContext().user); LoginOrDashboard calls it again, causing extra suspense/flicker. Compute a boolean here and pass it to the child.

 export const Navbar = () => {
   const pathname = usePathname();
   const [showMobileMenu, setShowMobileMenu] = useState(false);
   const auth = use(useAuthContext().user);
+  const isAuthed = Boolean(auth);
 
   return (

182-183: Pass auth state to child to remove nested use()

Prevents a second suspend and avoids duplicate user reads.

-                <LoginOrDashboard />
+                <LoginOrDashboard isAuthed={isAuthed} />

230-243: Make LoginOrDashboard a pure component driven by props

Removes the nested use() and aligns with strict TS prop-driven components.

-function LoginOrDashboard() {
-  const auth = use(useAuthContext().user);
+type LoginOrDashboardProps = { isAuthed: boolean };
+function LoginOrDashboard({ isAuthed }: LoginOrDashboardProps) {
 
   return (
     <Button
       variant="dark"
-      href={auth ? "/dashboard" : "/signup"}
+      href={isAuthed ? "/dashboard" : "/signup"}
       size="sm"
       className="w-full font-medium sm:w-auto"
     >
-      {auth ? "Dashboard" : "Sign Up"}
+      {isAuthed ? "Dashboard" : "Sign Up"}
     </Button>
   );
 }

1-1: Filename style

Repo guideline prefers kebab-case for TS/TSX filenames. Consider renaming Navbar.tsxnavbar.tsx in a follow-up to avoid churn in this PR.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e237cf7 and 9352409.

📒 Files selected for processing (1)
  • apps/web/app/(site)/Navbar.tsx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (4)
apps/web/**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

apps/web/**/*.{ts,tsx}: Use TanStack Query v5 for client-side server state and data fetching in the web app
Mutations should call Server Actions and perform precise cache updates with setQueryData/setQueriesData, avoiding broad invalidations
Prefer Server Components for initial data and pass initialData to client components for React Query hydration

Files:

  • apps/web/app/(site)/Navbar.tsx
{apps/web,packages/ui}/**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

{apps/web,packages/ui}/**/*.{ts,tsx}: Use Tailwind CSS exclusively for styling in the web app and shared React UI components
Component naming: React components in PascalCase; hooks in camelCase starting with 'use'

Files:

  • apps/web/app/(site)/Navbar.tsx
**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

Use strict TypeScript and avoid any; prefer shared types from packages

**/*.{ts,tsx}: Use Biome to format/lint TypeScript with a 2-space indent
TypeScript file names should be kebab-case (e.g., user-menu.tsx)

Files:

  • apps/web/app/(site)/Navbar.tsx
**/*.{tsx,jsx}

📄 CodeRabbit inference engine (AGENTS.md)

React/Solid components should be named using PascalCase

Files:

  • apps/web/app/(site)/Navbar.tsx
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Build Desktop (aarch64-apple-darwin, macos-latest)
  • GitHub Check: Build Desktop (x86_64-pc-windows-msvc, windows-latest)
  • GitHub Check: Analyze (rust)
🔇 Additional comments (1)
apps/web/app/(site)/Navbar.tsx (1)

223-226: Mobile parity: Login present in MobileMenu

MobileMenu exposes a Login button linking to /login for unauthenticated users — apps/web/components/ui/MobileMenu.tsx lines 95–102.

@ameer2468 ameer2468 merged commit 401cd7c into main Sep 16, 2025
13 of 15 checks passed
@ameer2468 ameer2468 deleted the login-button-instead branch September 16, 2025 13:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants