diff --git a/surfsense_web/components/layout/providers/FreeLayoutDataProvider.tsx b/surfsense_web/components/layout/providers/FreeLayoutDataProvider.tsx index 68ee552f8..1c5d7af6e 100644 --- a/surfsense_web/components/layout/providers/FreeLayoutDataProvider.tsx +++ b/surfsense_web/components/layout/providers/FreeLayoutDataProvider.tsx @@ -1,6 +1,6 @@ "use client"; -import { Inbox, SquareLibrary } from "lucide-react"; +import { Inbox, LibraryBig } from "lucide-react"; import { useRouter } from "next/navigation"; import type { ReactNode } from "react"; import { Fragment, useCallback, useEffect, useMemo, useState } from "react"; @@ -69,7 +69,7 @@ export function FreeLayoutDataProvider({ children }: FreeLayoutDataProviderProps ? { title: "Documents", url: "#documents", - icon: SquareLibrary, + icon: LibraryBig, isActive: false, } : null, diff --git a/surfsense_web/components/layout/providers/LayoutDataProvider.tsx b/surfsense_web/components/layout/providers/LayoutDataProvider.tsx index c125ff0eb..6884da7c7 100644 --- a/surfsense_web/components/layout/providers/LayoutDataProvider.tsx +++ b/surfsense_web/components/layout/providers/LayoutDataProvider.tsx @@ -2,7 +2,7 @@ import { useQuery, useQueryClient } from "@tanstack/react-query"; import { useAtom, useAtomValue, useSetAtom } from "jotai"; -import { AlertTriangle, Inbox, SquareLibrary } from "lucide-react"; +import { AlertTriangle, Inbox, LibraryBig } from "lucide-react"; import { useParams, usePathname, useRouter } from "next/navigation"; import { useTranslations } from "next-intl"; import { useTheme } from "next-themes"; @@ -361,7 +361,7 @@ export function LayoutDataProvider({ searchSpaceId, children }: LayoutDataProvid ? { title: "Documents", url: "#documents", - icon: SquareLibrary, + icon: LibraryBig, isActive: isDocumentsSidebarOpen, } : null, diff --git a/surfsense_web/components/layout/ui/icon-rail/SearchSpaceAvatar.tsx b/surfsense_web/components/layout/ui/icon-rail/SearchSpaceAvatar.tsx index 28fb235fe..944536c8f 100644 --- a/surfsense_web/components/layout/ui/icon-rail/SearchSpaceAvatar.tsx +++ b/surfsense_web/components/layout/ui/icon-rail/SearchSpaceAvatar.tsx @@ -128,9 +128,9 @@ export function SearchSpaceAvatar({ onClick={onClick} className={cn( "relative rounded-lg font-semibold text-white transition-all select-none", - "hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", + "hover:text-white hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", sizeClasses, - isActive && "ring-2 ring-primary ring-offset-1 ring-offset-background" + isActive && "ring-2 ring-primary ring-offset-1 ring-offset-rail" )} style={{ backgroundColor: bgColor }} > @@ -139,12 +139,12 @@ export function SearchSpaceAvatar({ {isShared && ( - + )} diff --git a/surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx b/surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx index 06c074800..83f4f26f1 100644 --- a/surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx +++ b/surfsense_web/components/layout/ui/sidebar/InboxSidebar.tsx @@ -561,7 +561,10 @@ export function InboxSidebarContent({ onOpenChange={setFilterDrawerOpen} shouldScaleBackground={false} > - + diff --git a/surfsense_web/components/layout/ui/sidebar/MobileSidebar.tsx b/surfsense_web/components/layout/ui/sidebar/MobileSidebar.tsx index f69b0223d..12809ec22 100644 --- a/surfsense_web/components/layout/ui/sidebar/MobileSidebar.tsx +++ b/surfsense_web/components/layout/ui/sidebar/MobileSidebar.tsx @@ -108,11 +108,11 @@ export function MobileSidebar({ return ( - + Navigation {/* Vertical Search Spaces Rail - left side */} -
+
{searchSpaces.map((space) => ( diff --git a/surfsense_web/components/layout/ui/sidebar/Sidebar.tsx b/surfsense_web/components/layout/ui/sidebar/Sidebar.tsx index a55909ab2..540a3dcc1 100644 --- a/surfsense_web/components/layout/ui/sidebar/Sidebar.tsx +++ b/surfsense_web/components/layout/ui/sidebar/Sidebar.tsx @@ -134,11 +134,16 @@ export function Sidebar({ const t = useTranslations("sidebar"); const [openDropdownChatId, setOpenDropdownChatId] = useState(null); - // Inbox is rendered explicitly right below New Chat. Pull it out of the - // nav items list so it doesn't also appear in the bottom NavSection. + // Inbox and Documents are rendered explicitly right below New Chat. Pull + // them out of the nav items list so they don't also appear in the bottom + // NavSection. Documents is only present in navItems on mobile. const inboxItem = useMemo(() => navItems.find((item) => item.url === "#inbox"), [navItems]); + const documentsItem = useMemo( + () => navItems.find((item) => item.url === "#documents"), + [navItems] + ); const footerNavItems = useMemo( - () => navItems.filter((item) => item.url !== "#inbox"), + () => navItems.filter((item) => item.url !== "#inbox" && item.url !== "#documents"), [navItems] ); @@ -202,6 +207,16 @@ export function Sidebar({ } /> )} + {documentsItem && ( + onNavItemClick?.(documentsItem)} + isCollapsed={isCollapsed} + isActive={documentsItem.isActive} + tooltipContent={isCollapsed ? documentsItem.title : undefined} + /> + )}
{/* Chat sections - fills available space */}