/**
* TabItem — local shell uses the same Terminal icon as the launcher (+)
*/
import { X, Terminal, FolderSync, Cable, Crown, TerminalSquare } from 'lucide-react'
import { useTranslation } from 'react-i18next'
import type { Tab } from '../../../stores/tabStore'
import { useSessionStore } from '../../../stores/sessionStore'
import HostDistroIcon from '../../common/HostDistroIcon'
import { resolveTabTitle } from '../../../utils/tabTitle'
interface TabItemProps {
tab: Tab
index: number
isActive: boolean
isDragging: boolean
dragOverIndex: number | null
onActivate: () => void
onClose: (e: { stopPropagation(): void }) => void
onContextMenu: (e: React.MouseEvent) => void
onDragStart: (e: React.DragEvent, index: number) => void
onDragOver: (e: React.DragEvent, index: number) => void
onDrop: (e: React.DragEvent, index: number) => void
onDragEnd: () => void
}
export function TabItem({
tab,
index,
isActive,
isDragging,
dragOverIndex,
onActivate,
onClose,
onContextMenu,
onDragStart,
onDragOver,
onDrop,
onDragEnd,
}: TabItemProps) {
const { t } = useTranslation(['terminal', 'common'])
const displayTitle = resolveTabTitle(tab)
const isLocalTerm = tab.type === 'terminal' && tab.isLocal
const session = useSessionStore((state) =>
tab.sessionId ? state.sessions.find((item) => item.id === tab.sessionId) : undefined
)
const getIcon = () => {
if (isLocalTerm) {
return (