// Copyright: © 2026 TWWIM UG. All rights reserved. (www.twwim.com) import { Globe } from 'lucide-react'; import { useTranslation } from '@/i18n/TranslationProvider'; import type { ConversationListItem as ConvListItem } from '../lib/types'; import { StatusBadge } from './StatusBadge'; import { VisitorAvatar } from './VisitorAvatar'; import { WaitTimeBadge } from './WaitTimeBadge'; import { visitorWaitMsItem, urgencyFor } from '../lib/waitTime'; interface ConversationListItemProps { conversation: ConvListItem; selected: boolean; onSelect: () => void; } function lastMessagePreview(conv: ConvListItem): string { const last = conv.lastMessage; if (!last) return ''; const trimmed = last.content.length > 80 ? `${last.content.slice(0, 80)}…` : last.content; if (last.role === 'operator') return `↳ ${trimmed}`; if (last.role === 'assistant') return `AI: ${trimmed}`; if (last.role === 'system') return `· ${trimmed}`; return trimmed; } function formatRelative(date: Date | string, locale: string): string { const d = typeof date === 'string' ? new Date(date) : date; const diffMs = Date.now() - d.getTime(); const min = Math.floor(diffMs / 60_000); if (min < 1) return locale === 'de' ? 'jetzt' : 'now'; if (min < 60) return `${min} min`; const hours = Math.floor(min / 60); if (hours < 24) return `${hours} h`; return d.toLocaleDateString(locale); } export function ConversationListItem({ conversation, selected, onSelect }: ConversationListItemProps) { const { locale } = useTranslation(); const waitMs = visitorWaitMsItem(conversation); const urgency = urgencyFor(waitMs); return ( ); }