"use client"; import { Button } from "@/components/ui/button"; import { Card } from "@/components/ui/card"; import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "@/components/ui/resizable"; import { ScrollArea } from "@/components/ui/scroll-area"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { LayoutGrid, Menu, MessageCircle, Network, Settings } from "lucide-react"; import React, { useState } from "react"; import { ThemeToggle } from "./ThemeToggle"; import Link from "next/link"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Sheet, SheetContent, SheetTrigger, SheetTitle, SheetDescription } from "@/components/ui/sheet"; import ResearchGraph from "@/components/visualizations/ResearchGraph"; import { useChatContext } from "@/lib/store/ChatContext"; interface ChatLayoutProps { sidebar: React.ReactNode; mainContent: React.ReactNode; settingsPanel: React.ReactNode; } const ChatLayout: React.FC = ({ sidebar, mainContent, settingsPanel }) => { const { chatState, connectionMode, setConnectionMode } = useChatContext(); const [activeTab, setActiveTab] = useState("chat"); const [visualizationType, setVisualizationType] = useState<"d3" | "reactflow">("d3"); // Get the latest research tree from messages const latestResearchTree = React.useMemo(() => { // First look for the most recent completed research message const completedResearch = [...chatState.messages].reverse().find((msg) => msg.role === "assistant" && !msg.isProgress && msg.research_tree); if (completedResearch?.research_tree) { return completedResearch.research_tree; } // If no completed research, look for progress messages const progressMessage = [...chatState.messages].reverse().find((msg) => msg.role === "assistant" && msg.isProgress && msg.research_tree); return progressMessage?.research_tree; }, [chatState.messages]); return (
Mobile Navigation Sidebar navigation for mobile devices

Conversations

{sidebar}

KnowledgeNet: Deep Research

KNet: Deep Research

Research Settings Configure your research parameters and preferences. {settingsPanel}
{sidebar}
Chat Visualizations
{mainContent}
); }; export default ChatLayout;