'use client'; import { useEffect, useState } from 'react'; import Link from "next/link"; import { usePathname } from "next/navigation"; import { Tooltip } from "@heroui/react"; import { UserButton } from "@/app/lib/components/user_button"; import { DatabaseIcon, SettingsIcon, WorkflowIcon, PlayIcon, FolderOpenIcon, ChevronLeftIcon, ChevronRightIcon, Moon, Sun, HelpCircle } from "lucide-react"; import { getProjectConfig } from "@/app/actions/project_actions"; import { useTheme } from "@/app/providers/theme-provider"; import { USE_TESTING_FEATURE, USE_PRODUCT_TOUR } from '@/app/lib/feature_flags'; import { useHelpModal } from "@/app/providers/help-modal-provider"; interface SidebarProps { projectId: string; useRag: boolean; useAuth: boolean; collapsed?: boolean; onToggleCollapse?: () => void; } const EXPANDED_ICON_SIZE = 20; const COLLAPSED_ICON_SIZE = 20; // DO NOT CHANGE THIS export default function Sidebar({ projectId, useRag, useAuth, collapsed = false, onToggleCollapse }: SidebarProps) { const pathname = usePathname(); const [projectName, setProjectName] = useState("Select Project"); const isProjectsRoute = pathname === '/projects' || pathname === '/projects/select'; const { theme, toggleTheme } = useTheme(); const { showHelpModal } = useHelpModal(); useEffect(() => { async function fetchProjectName() { if (!isProjectsRoute && projectId) { try { const project = await getProjectConfig(projectId); setProjectName(project.name); } catch (error) { console.error('Failed to fetch project name:', error); setProjectName("Select Project"); } } } fetchProjectName(); }, [projectId, isProjectsRoute]); const navItems = [ { href: 'workflow', label: 'Build', icon: WorkflowIcon, requiresProject: true }, ...(USE_TESTING_FEATURE ? [{ href: 'test', label: 'Test', icon: PlayIcon, requiresProject: true }] : []), ...(useRag ? [{ href: 'sources', label: 'RAG', icon: DatabaseIcon, requiresProject: true }] : []), { href: 'config', label: 'Settings', icon: SettingsIcon, requiresProject: true } ]; const handleStartTour = () => { localStorage.removeItem('user_product_tour_completed'); window.location.reload(); }; return ( <> ); }