import { ChatbotUIContext } from "@/context/context" import { Tables } from "@/supabase/types" import { ContentType } from "@/types" import { FC, useContext } from "react" import { SIDEBAR_WIDTH } from "../ui/dashboard" import { TabsContent } from "../ui/tabs" import { WorkspaceSwitcher } from "../utility/workspace-switcher" import { WorkspaceSettings } from "../workspace/workspace-settings" import { SidebarContent } from "./sidebar-content" import { useTranslation } from "react-i18next"; interface SidebarProps { contentType: ContentType showSidebar: boolean } export const Sidebar: FC = ({ contentType, showSidebar }) => { const { t } = useTranslation(); const { folders, chats, presets, prompts, files, collections, assistants, tools, models } = useContext(ChatbotUIContext) const chatFolders = folders.filter(folder => folder.type === "chats") const presetFolders = folders.filter(folder => folder.type === "presets") const promptFolders = folders.filter(folder => folder.type === "prompts") const filesFolders = folders.filter(folder => folder.type === "files") const collectionFolders = folders.filter( folder => folder.type === "collections" ) const assistantFolders = folders.filter( folder => folder.type === "assistants" ) const toolFolders = folders.filter(folder => folder.type === "tools") const modelFolders = folders.filter(folder => folder.type === "models") const renderSidebarContent = ( contentType: ContentType, data: any[], folders: Tables<"folders">[] ) => { return ( ) } return (
{(() => { switch (contentType) { case "chats": return renderSidebarContent("chats", chats, chatFolders) case "presets": return renderSidebarContent("presets", presets, presetFolders) case "prompts": return renderSidebarContent("prompts", prompts, promptFolders) case "files": return renderSidebarContent("files", files, filesFolders) case "collections": return renderSidebarContent( "collections", collections, collectionFolders ) case "assistants": return renderSidebarContent( "assistants", assistants, assistantFolders ) case "tools": return renderSidebarContent("tools", tools, toolFolders) case "models": return renderSidebarContent("models", models, modelFolders) default: return null } })()}
) }