Skip to content

Conversation

@recoupableorg
Copy link
Collaborator

@recoupableorg recoupableorg commented Feb 9, 2026

Summary by CodeRabbit

Release Notes

  • New Features

    • Sidebar now automatically collapses on mouse leave and expands on hover for space-efficient navigation on desktop
  • UI & Styling

    • Added smooth fade animations and transitions during sidebar expand/collapse
    • Enhanced spacing and padding throughout navigation menu
    • Added subscription status badge in user profile dropdown
    • Refined icon rendering and styling across sidebar components

sidneyswift and others added 3 commits February 9, 2026 17:24
- Sidebar starts collapsed (56px) and expands on hover (240px)
- Smooth transitions: icons stay in place, text fades with max-w + opacity
- Logo shows icon when collapsed, icon + 'Recoupable' text when expanded
- Nav buttons use icon-only centered squares when collapsed
- Active page accent bar in brand color (#345A5D)
- Compact chat items (text-xs, tighter padding)
- User profile: compact avatar at bottom, always visible
- Moved 'Recoupable Pro: Active' badge into account dropdown
- New Chat uses SquarePen icon instead of plus
- Uses Plus Jakarta Sans for brand name
- Light/dark mode logo support (icon-lightmode/darkmode SVGs)
- Removed MiniMenu dependency (no longer used)
- Consistent font weight (font-normal) across all nav and chat items
- Stroke-based robot icon replacing filled version
- Chat items same font size as nav (text-sm)
- Tighter chat item spacing (py-[6px])
- Section label: lowercase 'Chats', removed divider line
- Chat items aligned with nav (px-3)
- Reduced sidebar widths (240px expanded, 56px collapsed)
- Brand name reduced to text-base
- Active accent bar in brand color
- Removed extra spacer between New Chat and nav items
feat: sidebar expand on hover with polished UI
@vercel
Copy link
Contributor

vercel bot commented Feb 9, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
recoup-chat Building Building Preview Feb 9, 2026 11:37pm

Request Review

@recoupableorg recoupableorg merged commit 51d70f1 into main Feb 9, 2026
1 check was pending
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 9, 2026

Caution

Review failed

The pull request is closed.

📝 Walkthrough

Walkthrough

The changes introduce a hover-based sidebar expansion mechanism by adding an isExpanded boolean prop throughout sidebar and related UI components. The Sidebar now uses mouse enter/leave events instead of a toggle button, and Menu, Logo, NavButton, nav items, and user profile components conditionally adapt their rendering and styling based on expansion state. MiniMenu is removed in favor of a unified Menu component. Additional refinements include SVG simplification, animation additions with framer-motion, and UI spacing adjustments.

Changes

Cohort / File(s) Summary
Icon Assets
components/Icon/resolver.tsx
Robot icon SVG replaced with simpler 24x24 inline markup using basic shapes (rect, circle, lines) instead of complex path definitions.
Sidebar Core Expansion
components/Sidebar/Sidebar.tsx
Removed MiniMenu component and toggle state; added useIsMobile hook; width animation adjusted from 265/80 to 56/240; expanded state now driven by onMouseEnter/onMouseLeave with mobile awareness; always renders Menu with isExpanded prop.
Menu Container
components/Sidebar/Menu.tsx
Replaced toggleMenuExpanded() prop with isExpanded boolean; added framer-motion animations for Recent Chats section; removed UnlockPro UI; Logo now receives isExpanded; nav items and UserInfo updated to accept and use isExpanded; new chat button reworked with icon and conditional label visibility.
Navigation Components
components/Sidebar/NavButton.tsx, components/Sidebar/AgentsNavItem.tsx, components/Sidebar/FanGroupNavItem.tsx, components/Sidebar/FilesNavItem.tsx, components/Sidebar/TasksNavItem.tsx
NavButton introduces isExpanded logic with size switching ("sm" expanded, "icon" collapsed), conditional styling, and accent bar in expanded mode; nav items (Agents, FanGroup, Files, Tasks) add optional isExpanded prop forwarding to NavButton.
User Profile Components
components/Sidebar/UserInfo.tsx, components/Sidebar/UserProfileButton.tsx
UserInfo accepts and forwards isExpanded prop; UserProfileButton adds isExpanded logic controlling name/chevron visibility, reduces avatar size (10x10 to 7x7), and adds smooth opacity/max-width transitions.
Logo
components/Logo/Logo.tsx
Added optional isExpanded prop; replaces single light-mode icon with light and dark mode images; adds brand name span with conditional opacity/max-width based on isExpanded with transition styling.
Recent Chats
components/Sidebar/RecentChats/ChatItem.tsx, components/Sidebar/RecentChats/RecentChats.tsx
ChatItem adjusts padding (py-1.5 px-2 to py-[6px] px-3) and border radius (rounded-xl to rounded-lg); RecentChats header simplified and reorganized with "Chats" label; vertical spacing between items removed.
Sidebar Utilities
components/Sidebar/RecoupablePro.tsx, components/Sidebar/UserProfileDropdown/UserProfileDropdown.tsx
RecoupablePro adds whitespace-nowrap and overflow-hidden classes; UserProfileDropdown integrates usePaymentProvider hook and conditionally renders subscription badge when active.

Sequence Diagram

sequenceDiagram
    participant User
    participant Sidebar
    participant Menu
    participant NavButton
    participant Logo
    participant UserInfo

    User->>Sidebar: onMouseEnter
    Sidebar->>Sidebar: setIsExpanded(true)
    Sidebar->>Menu: isExpanded=true
    
    Menu->>Logo: isExpanded=true
    Logo->>Logo: Show brand name (opacity transition)
    
    Menu->>NavButton: isExpanded=true
    NavButton->>NavButton: size="sm", show label, add accent bar
    
    Menu->>UserInfo: isExpanded=true
    UserInfo->>UserInfo: Forward to UserProfileButton
    UserInfo->>UserInfo: Show name & chevron (opacity transition)
    
    Menu->>Menu: Render RecentChats (AnimatePresence)
    Menu->>Menu: Show full chat list with fade-in

    User->>Sidebar: onMouseLeave
    Sidebar->>Sidebar: setIsExpanded(false)
    Sidebar->>Menu: isExpanded=false
    
    Menu->>Logo: isExpanded=false
    Logo->>Logo: Hide brand name (opacity transition)
    
    Menu->>NavButton: isExpanded=false
    NavButton->>NavButton: size="icon", hide label, remove accent bar
    
    Menu->>UserInfo: isExpanded=false
    UserInfo->>UserInfo: Hide name & chevron (opacity transition)
    
    Menu->>Menu: Hide RecentChats (AnimatePresence fade-out)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

The changes introduce interconnected prop propagation across multiple sidebar components with new animation logic and mouse event handling. While individual nav item updates are repetitive (reducing review complexity), the core Menu and NavButton components contain significant logic restructuring. The pattern is consistent and well-scoped, but the breadth of file modifications and animation integration warrant careful verification of prop flow and styling transitions.

Possibly related PRs

  • feat: sidebar expand on hover with polished UI #1525: Directly related—both PRs modify the same sidebar and brand components, adding and propagating the isExpanded prop across Logo, Menu, NavButton, Sidebar, and nav items with nearly identical pattern implementations.

Suggested reviewers

  • sweetmantech

Poem

🎯 The sidebar learns to breathe,
Hovering in and out with ease,
Icons collapse, labels dance free,
Framer-motion brings harmony,
A compact dance, expanded spree! ✨

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch test

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.

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