/** * EmailCategoryCard.tsx * * @author Descomplicar® Crescimento Digital * @link https://descomplicar.pt * @copyright 2025 Descomplicar® */ import React, { useState, useEffect } from 'react'; import type { Email } from '../types'; import { EmailCategory } from '../types'; interface EmailCategoryCardProps { category: string; summary: string; emails: Email[]; onClear: () => void; } const categoryStyles: { [key in EmailCategory]?: { icon: string; bg: string; text: string; } } = { [EmailCategory.PROMOTIONS]: { icon: '🛍️', bg: 'bg-indigo-100 dark:bg-indigo-900/50', text: 'text-indigo-600 dark:text-indigo-300' }, [EmailCategory.NOTIFICATIONS]: { icon: '🔔', bg: 'bg-amber-100 dark:bg-amber-900/50', text: 'text-amber-600 dark:text-amber-300' }, [EmailCategory.NEWSLETTERS]: { icon: '📰', bg: 'bg-cyan-100 dark:bg-cyan-900/50', text: 'text-cyan-600 dark:text-cyan-300' }, [EmailCategory.SPAM]: { icon: '🗑️', bg: 'bg-red-100 dark:bg-red-900/50', text: 'text-red-600 dark:text-red-300' }, }; const EmailCategoryCard: React.FC = ({ category, summary, emails, onClear }) => { const [isExpanded, setIsExpanded] = useState(false); const [isVisible, setIsVisible] = useState(false); useEffect(() => { const timer = setTimeout(() => setIsVisible(true), 10); return () => clearTimeout(timer); }, []); const styles = categoryStyles[category as EmailCategory] || { icon: '✉️', bg: 'bg-slate-100 dark:bg-slate-700', text: 'text-slate-600 dark:text-slate-300' }; if (emails.length === 0) return null; return (
{styles.icon}

{category.toLowerCase()}

{summary}

{emails.length}
{isExpanded && (
    {emails.map(email => (
  • {email.sender}

    {email.subject}

  • ))}
)}
); }; export default EmailCategoryCard;