'use client' import React from 'react' import { motion, AnimatePresence } from 'motion/react' import { Activity, Lightbulb, UserPlus, X, Zap, Eye } from 'lucide-react' import type { BrainstormActivityItem } from '@/types/brainstorm' interface ActivityFeedProps { activities: BrainstormActivityItem[] isOpen: boolean onToggle: () => void t: (key: string) => string | undefined } function getActionIcon(action: string) { switch (action) { case 'manual_idea': return case 'wave_generated': return case 'joined': return case 'idea_dismissed': return case 'invite_created': return default: return } } function getActionLabel(action: string, t: (key: string) => string | undefined): string { const key = `brainstorm.activity.${action}` const translated = t(key) if (translated) return translated switch (action) { case 'manual_idea': return 'added an idea' case 'wave_generated': return 'generated a wave' case 'joined': return 'joined the session' case 'idea_dismissed': return 'dismissed an idea' case 'invite_created': return 'created an invite' default: return action } } function timeAgo(dateStr: string, t: (key: string) => string | undefined): string { const diff = Date.now() - new Date(dateStr).getTime() const mins = Math.floor(diff / 60000) if (mins < 1) return t('brainstorm.justNow') if (mins < 60) return `${mins}m` const hours = Math.floor(mins / 60) if (hours < 24) return `${hours}h` const days = Math.floor(hours / 24) return `${days}d` } export function ActivityFeed({ activities, isOpen, onToggle, t }: ActivityFeedProps) { return ( {isOpen && (

{t('brainstorm.activityTitle')}

{activities.length === 0 ? (

{t('brainstorm.noActivity')}

) : (
{activities.map((item, idx) => (
{getActionIcon(item.action)}

{item.user?.name || 'AI'} {' '} {getActionLabel(item.action, t)} {item.details?.ideaTitle && ( « {item.details.ideaTitle.length > 30 ? item.details.ideaTitle.substring(0, 30) + '…' : item.details.ideaTitle} » )}

{timeAgo(item.createdAt, t)}

))}
)}
)}
) }