import { MessageSquare, Clock, Globe, Bot } from 'lucide-react'; import type { Session } from '../types'; // SVG brand icons (not available in lucide) function DiscordIcon({ size = 15, className = '' }: { size?: number; className?: string }) { return ( ); } function TelegramIcon({ size = 15, className = '' }: { size?: number; className?: string }) { return ( ); } function SignalIcon({ size = 15, className = '' }: { size?: number; className?: string }) { return ( ); } function WhatsAppIcon({ size = 15, className = '' }: { size?: number; className?: string }) { return ( ); } function SlackIcon({ size = 15, className = '' }: { size?: number; className?: string }) { return ( ); } /** * Returns the appropriate icon for a session based on its channel or kind. * Detects cron sessions from the session key pattern. */ export function SessionIcon({ session, isActive, isCurrentSession }: { session: Session; isActive?: boolean; isCurrentSession?: boolean; }) { const size = 15; const baseClass = isCurrentSession ? 'text-cyan-300/70' : isActive ? 'text-violet-400/70' : ''; // Detect cron sessions from key pattern const isCron = session.key.includes(':cron:'); if (isCron) { return ; } // Detect sub-agent / spawned sessions const isSubAgent = session.key.includes(':spawn:') || session.key.includes(':sub:'); if (isSubAgent) { return ; } const channel = session.channel?.toLowerCase(); switch (channel) { case 'discord': return ; case 'telegram': return ; case 'signal': return ; case 'whatsapp': return ; case 'slack': return ; case 'webchat': return ; case 'teamspeak': return ; default: return ; } }