From e60c5399af0d71fd83fcaec8c3ce80001f0121ee Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Tue, 28 Apr 2026 19:29:14 +0530 Subject: [PATCH 01/96] feat(icon-rail): integrate user profile component and enhance layout with user settings options --- .../layout/ui/icon-rail/IconRail.tsx | 24 ++++++++++++-- .../layout/ui/shell/LayoutShell.tsx | 6 ++++ .../components/layout/ui/sidebar/Sidebar.tsx | 20 +++++++----- .../layout/ui/sidebar/SidebarUserProfile.tsx | 32 +++++++++++++------ 4 files changed, 62 insertions(+), 20 deletions(-) diff --git a/surfsense_web/components/layout/ui/icon-rail/IconRail.tsx b/surfsense_web/components/layout/ui/icon-rail/IconRail.tsx index 062e8dcb7..756d6ffaf 100644 --- a/surfsense_web/components/layout/ui/icon-rail/IconRail.tsx +++ b/surfsense_web/components/layout/ui/icon-rail/IconRail.tsx @@ -6,6 +6,8 @@ import { ScrollArea } from "@/components/ui/scroll-area"; import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip"; import { cn } from "@/lib/utils"; import type { SearchSpace } from "../../types/layout.types"; +import type { User } from "../../types/layout.types"; +import { SidebarUserProfile } from "../sidebar/SidebarUserProfile"; import { SearchSpaceAvatar } from "./SearchSpaceAvatar"; interface IconRailProps { @@ -15,6 +17,11 @@ interface IconRailProps { onSearchSpaceDelete?: (searchSpace: SearchSpace) => void; onSearchSpaceSettings?: (searchSpace: SearchSpace) => void; onAddSearchSpace: () => void; + user: User; + onUserSettings?: () => void; + onLogout?: () => void; + theme?: string; + setTheme?: (theme: "light" | "dark" | "system") => void; className?: string; } @@ -25,11 +32,16 @@ export function IconRail({ onSearchSpaceDelete, onSearchSpaceSettings, onAddSearchSpace, + user, + onUserSettings, + onLogout, + theme, + setTheme, className, }: IconRailProps) { return ( -
+
You're all caught up! New announcements will appear here.