'use client'; import { motion } from 'framer-motion'; import type { SessionTaskCard, Incursion } from '../../lib/agent-sessions'; import { statusBorder, statusDotColor, statusGradient, sessionStateGlow } from '../shared/status-utils'; interface SessionFeedCardProps { card: SessionTaskCard; onSelect: (id: string) => void; isHighlighted?: boolean; incursion?: Incursion; highlightSource?: 'task' | 'agent'; } export function SessionFeedCard({ card, onSelect, isHighlighted, incursion, highlightSource }: SessionFeedCardProps) { return ( onSelect(card.id)} className={`relative w-full cursor-pointer rounded-[1.25rem] border p-[1rem] text-left transition-all duration-200 ${ isHighlighted ? highlightSource === 'agent' ? 'border-emerald-500/50 bg-emerald-500/10 ring-1 ring-emerald-500/30 scale-[1.01] shadow-[0_0_16px_rgba(16,185,129,0.15)]' : 'border-sky-500 bg-sky-500/10 ring-1 ring-sky-500/50 scale-[1.02] shadow-[0_0_20px_rgba(56,189,248,0.15)]' : `${statusBorder(card.status)} ${statusGradient(card.status)} hover:bg-white/[0.04]` } ${sessionStateGlow(card.sessionState)} ${incursion ? 'ring-1 ring-rose-500/30' : ''}`} > {/* Critical state badges */} {card.sessionState === 'stuck' && (
STUCK
)} {card.sessionState === 'dead' && (
OFFLINE
)} {incursion && (
Conflict
)}
{/* Compact Avatar */}
{card.owner?.slice(0, 2).toUpperCase() || '??'}
{/* Dense Headline Content */}
{card.owner || 'Unassigned'} pulled {card.id}

{card.title}

{card.communication.latestSnippet && (

"{card.communication.latestSnippet}"

)}
); }