From c7ca7c1f96e25bd47f93a22e668dc300a75f2fd4 Mon Sep 17 00:00:00 2001 From: Matt Ciaccio Date: Tue, 28 Apr 2026 12:10:11 +0200 Subject: [PATCH] style(layout): sidebar stripe + topbar gradient + bell spring + search ring Sidebar active items: 4px brand left-edge stripe (rounded-r-full) replacing the border-l-2 + bg shift; section header smaller-caps + brand-200 colour; user-footer avatar gets shadow-sm + ring-2 ring-white/30. Topbar '+ New' uses bg-gradient-brand with shadow-sm + scale-1.02 hover. User avatar trigger gets shadow-sm + ring-2 ring-white. Notification badge gets gradient-brand fill + ring-2 ring-background + animate-badge-pop spring keyframe (retriggers on count change via key={unreadCount}). Command search gets shadow-xs inset + brand focus ring (ring-4 ring-brand/15). Adds badge-pop keyframes to tailwind config. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/components/layout/sidebar.tsx | 14 ++++++++++---- src/components/layout/topbar.tsx | 7 +++++-- src/components/notifications/notification-bell.tsx | 5 ++++- src/components/search/command-search.tsx | 6 ++++-- tailwind.config.ts | 6 ++++++ 5 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/components/layout/sidebar.tsx b/src/components/layout/sidebar.tsx index cd08190..279eaec 100644 --- a/src/components/layout/sidebar.tsx +++ b/src/components/layout/sidebar.tsx @@ -141,12 +141,18 @@ function NavItemLink({ // eslint-disable-next-line @typescript-eslint/no-explicit-any href={item.href as any} className={cn( - 'flex items-center gap-3 px-3 py-2 rounded-md text-sm font-medium transition-colors duration-150', + 'relative flex items-center gap-3 px-3 py-2 rounded-md text-sm font-medium transition-all duration-150', 'text-[#cdcfd6] hover:bg-[#171f35] hover:text-white', - active && 'border-l-2 border-[#3a7bc8] bg-[#3a7bc810] text-white pl-[10px]', + active && 'text-white pl-[14px]', collapsed && 'justify-center px-2', )} > + {active && !collapsed && ( + + )} {!collapsed && (
- + {section.title} {section.adminRequired && ( @@ -284,7 +290,7 @@ function SidebarContent({ ) : (
- + {(user?.name ?? 'U').slice(0, 1).toUpperCase()} diff --git a/src/components/layout/topbar.tsx b/src/components/layout/topbar.tsx index 3658b05..fefae42 100644 --- a/src/components/layout/topbar.tsx +++ b/src/components/layout/topbar.tsx @@ -57,7 +57,10 @@ export function Topbar({ ports, user }: TopbarProps) { {/* + New dropdown */} - @@ -93,7 +96,7 @@ export function Topbar({ ports, user }: TopbarProps) {