/** InboxPanelContent — ADR-119 extracted from usePanelContent.tsx */ import React from 'react'; import { X, Search, Loader2, Users, User, Inbox, Filter, Pencil, Link2, ChevronRight } from 'lucide-react'; import { cn } from '@/shared/utils/cn'; import { useAuthStore } from '@/features/auth/store/authStore'; import type { PanelContentDeps } from './PanelContentTypes'; export function InboxPanelContent(d: PanelContentDeps) { const safeAgents = d.safeAgents; return (
Все чаты
{d.totalUnreadCount > 0 && {d.totalUnreadCount}}
d.setInboxSearch(e.target.value)} placeholder="Поиск чатов..." className="w-full pl-8 pr-3 py-1.5 text-xs rounded-lg bg-[var(--bg-tertiary)] border border-[var(--border-primary)] text-[var(--text-primary)] placeholder:text-[var(--text-tertiary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-primary-500)]/30" /> {d.inboxSearch && ( )}
{d.showInboxFilters && (
d.setInboxDateFrom(e.target.value)} className="w-full px-2 py-1 text-xs rounded-lg bg-[var(--bg-tertiary)] border border-[var(--border-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-primary-500)]/30" />
d.setInboxDateTo(e.target.value)} className="w-full px-2 py-1 text-xs rounded-lg bg-[var(--bg-tertiary)] border border-[var(--border-primary)] text-[var(--text-primary)] focus:outline-none focus:ring-1 focus:ring-[var(--color-primary-500)]/30" />
{d.hasActiveInboxFilters && ( )}
)}
{d.isLoadingInbox ? (
) : d.inboxConversations.length === 0 ? (
{d.hasActiveInboxFilters ? 'Ничего не найдено' : 'Нет активных бесед'}
) : ( d.inboxConversations.map(conv => { const currentUserId = useAuthStore.getState().user?.id; const otherParticipants = conv.participants?.filter(p => currentUserId && p.user_id !== Number(currentUserId)) || []; const agentForConv = conv.agent_id ? safeAgents.find(a => a.id === conv.agent_id) : null; const agentName = conv.agent_name || agentForConv?.name || null; const agentIcon = conv.agent_icon || agentForConv?.icon || null; const displayName = conv.title || otherParticipants.map(p => p.name).join(', ') || agentName || 'Беседа'; return (
)}
{agentName ? `\uD83E\uDD16 ${agentName}` : conv.type === 'direct' ? 'Личный чат' : `${conv.participants?.length || 0} участников`} {' \u2022 '} {new Date(conv.updated_at).toLocaleDateString('ru-RU', { day: 'numeric', month: 'short' })}
{conv.bound_row_id && (
{conv.bound_table_icon || ''}{' '}{conv.bound_table_name ? `${conv.bound_table_name}: ` : ''}{conv.bound_row_title || `#${conv.bound_row_id}`}
)}
{conv.unread_count > 0 && } ); }) )} ); }