"use client"; import { useAtom, useAtomValue } from "jotai"; import { PanelRight } from "lucide-react"; import { usePathname } from "next/navigation"; import { currentThreadAtom } from "@/atoms/chat/current-thread.atom"; import { reportPanelAtom } from "@/atoms/chat/report-panel.atom"; import { documentsSidebarOpenAtom } from "@/atoms/documents/ui.atoms"; import { rightPanelCollapsedAtom } from "@/atoms/layout/right-panel.atom"; import { activeSearchSpaceIdAtom } from "@/atoms/search-spaces/search-space-query.atoms"; import { ChatHeader } from "@/components/new-chat/chat-header"; import { ChatShareButton } from "@/components/new-chat/chat-share-button"; import { Button } from "@/components/ui/button"; import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip"; import { useIsMobile } from "@/hooks/use-mobile"; import type { ChatVisibility, ThreadRecord } from "@/lib/chat/thread-persistence"; interface HeaderProps { mobileMenuTrigger?: React.ReactNode; } export function Header({ mobileMenuTrigger }: HeaderProps) { const pathname = usePathname(); const searchSpaceId = useAtomValue(activeSearchSpaceIdAtom); const isMobile = useIsMobile(); const isChatPage = pathname?.includes("/new-chat") ?? false; const currentThreadState = useAtomValue(currentThreadAtom); const hasThread = isChatPage && currentThreadState.id !== null; const threadForButton: ThreadRecord | null = hasThread && currentThreadState.id !== null ? { id: currentThreadState.id, visibility: currentThreadState.visibility ?? "PRIVATE", created_by_id: null, search_space_id: 0, title: "", archived: false, created_at: "", updated_at: "", } : null; const handleVisibilityChange = (_visibility: ChatVisibility) => {}; const [collapsed, setCollapsed] = useAtom(rightPanelCollapsedAtom); const documentsOpen = useAtomValue(documentsSidebarOpenAtom); const reportState = useAtomValue(reportPanelAtom); const reportOpen = reportState.isOpen && !!reportState.reportId; const hasRightPanelContent = documentsOpen || reportOpen; const showExpandButton = !isMobile && collapsed && hasRightPanelContent; return (
{/* Left side - Mobile menu trigger + Model selector */}
{mobileMenuTrigger} {isChatPage && searchSpaceId && ( )}
{/* Right side - Actions */}
{hasThread && ( )} {showExpandButton && ( Expand panel )}
); }