import React from "react";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu.tsx";
import { Button } from "@/components/ui/button.tsx";
import {
ChevronDown,
Home,
Terminal as TerminalIcon,
Server as ServerIcon,
Folder as FolderIcon,
Shield as AdminIcon,
Network as SshManagerIcon
} from "lucide-react";
import { useTabs, type Tab } from "@/ui/Desktop/Navigation/Tabs/TabContext.tsx";
import { useTranslation } from "react-i18next";
export function TabDropdown(): React.ReactElement {
const { tabs, currentTab, setCurrentTab } = useTabs();
const { t } = useTranslation();
const getTabIcon = (tabType: Tab['type']) => {
switch (tabType) {
case 'home':
return ;
case 'terminal':
return ;
case 'server':
return ;
case 'file_manager':
return ;
case 'ssh_manager':
return ;
case 'admin':
return ;
default:
return ;
}
};
const getTabDisplayTitle = (tab: Tab) => {
switch (tab.type) {
case 'home':
return t('nav.home');
case 'server':
return tab.title || t('nav.serverStats');
case 'file_manager':
return tab.title || t('nav.fileManager');
case 'ssh_manager':
return tab.title || t('nav.sshManager');
case 'admin':
return tab.title || t('nav.admin');
case 'terminal':
default:
return tab.title || t('nav.terminal');
}
};
const handleTabSwitch = (tabId: number) => {
setCurrentTab(tabId);
};
// If only one tab (home), don't show dropdown
if (tabs.length <= 1) {
return null;
}
return (
{tabs.map((tab) => {
const isActive = tab.id === currentTab;
return (
handleTabSwitch(tab.id)}
className={`flex items-center gap-2 cursor-pointer px-3 py-2 ${
isActive
? 'bg-[#1d1d1f] text-white'
: 'hover:bg-[#2d2d30] text-gray-300'
}`}
>
{getTabIcon(tab.type)}
{getTabDisplayTitle(tab)}
{isActive && (
)}
);
})}
);
}