'use client'; import { useState, useEffect } from 'react'; import { Listbox, ListboxItem } from '@nextui-org/react'; import { Home, Files, FlaskConical, Users, Settings } from 'lucide-react'; import { usePathname, useRouter } from '@/src/navigation'; import useGetCurrentIds from '@/utils/useGetCurrentIds'; import { ProjectMessages } from '@/types/project'; export type Props = { messages: ProjectMessages; locale: string; }; export default function Sidebar({ messages, locale }: Props) { const { projectId } = useGetCurrentIds(); const router = useRouter(); const pathname = usePathname(); const [currentKey, setCurrentTab] = useState('home'); const baseClass = 'p-3'; const selectedClass = `${baseClass} bg-neutral-200 dark:bg-neutral-700`; const handleTabClick = (key: string) => { if (key === 'home') { router.push(`/projects/${projectId}/home`, { locale: locale }); } else if (key === 'cases') { router.push(`/projects/${projectId}/folders`, { locale: locale }); } else if (key === 'runs') { router.push(`/projects/${projectId}/runs`, { locale: locale }); } else if (key === 'members') { router.push(`/projects/${projectId}/members`, { locale: locale }); } else if (key === 'settings') { router.push(`/projects/${projectId}/settings`, { locale: locale }); } }; useEffect(() => { const handleRouteChange = (currentPath: string) => { if (currentPath.includes('home')) { setCurrentTab('home'); } else if (currentPath.includes('folders')) { setCurrentTab('cases'); } else if (currentPath.includes('runs')) { setCurrentTab('runs'); } else if (currentPath.includes('members')) { setCurrentTab('members'); } else if (currentPath.includes('settings')) { setCurrentTab('settings'); } }; handleRouteChange(pathname); }, [pathname]); const tabItems = [ { key: 'home', text: messages.home, startContent: , }, { key: 'cases', text: messages.testCases, startContent: , }, { key: 'runs', text: messages.testRuns, startContent: , }, { key: 'members', text: messages.members, startContent: , }, { key: 'settings', text: messages.settings, startContent: , }, ]; return (
{tabItems.map((itr) => ( handleTabClick(itr.key)} className={currentKey === itr.key ? selectedClass : baseClass} > {itr.text} ))}
); }