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 ;
}
}