'use client'; import React, { useState, useEffect } from 'react'; import { EmailResponder } from './EmailResponder'; interface ContactMessage { id: string; name: string; email: string; subject: string; message: string; timestamp: string; responded: boolean; } export const EmailManager: React.FC = () => { const [messages, setMessages] = useState([]); const [selectedMessage, setSelectedMessage] = useState(null); const [showResponder, setShowResponder] = useState(false); const [isLoading, setIsLoading] = useState(true); const [filter, setFilter] = useState<'all' | 'unread' | 'responded'>('all'); // Mock data for demonstration - in real app, fetch from API useEffect(() => { const mockMessages: ContactMessage[] = [ { id: '1', name: 'Max Mustermann', email: 'max@example.com', subject: 'Projekt-Anfrage', message: 'Hallo Dennis,\n\nich interessiere mich für eine Zusammenarbeit an einem Web-Projekt. Können wir uns mal unterhalten?\n\nViele Grüße\nMax', timestamp: new Date().toISOString(), responded: false }, { id: '2', name: 'Anna Schmidt', email: 'anna@example.com', subject: 'Frage zu deinem Portfolio', message: 'Hi Dennis,\n\nsehr cooles Portfolio! Wie lange hast du an dem Design gearbeitet?\n\nLG Anna', timestamp: new Date(Date.now() - 86400000).toISOString(), responded: true }, { id: '3', name: 'Tom Weber', email: 'tom@example.com', subject: 'Job-Anfrage', message: 'Hallo,\n\nwir suchen einen Full-Stack Developer. Bist du interessiert?\n\nTom', timestamp: new Date(Date.now() - 172800000).toISOString(), responded: false } ]; setTimeout(() => { setMessages(mockMessages); setIsLoading(false); }, 1000); }, []); const filteredMessages = messages.filter(message => { switch (filter) { case 'unread': return !message.responded; case 'responded': return message.responded; default: return true; } }); const handleRespond = (message: ContactMessage) => { setSelectedMessage(message); setShowResponder(true); }; const handleResponseSent = () => { if (selectedMessage) { setMessages(prev => prev.map(msg => msg.id === selectedMessage.id ? { ...msg, responded: true } : msg )); } setShowResponder(false); setSelectedMessage(null); }; const formatDate = (timestamp: string) => { return new Date(timestamp).toLocaleString('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit' }); }; const getMessagePreview = (message: string) => { return message.length > 100 ? message.substring(0, 100) + '...' : message; }; if (isLoading) { return (
); } return (
{/* Header */}

📧 E-Mail Manager

Verwalte Kontaktanfragen und sende schöne Antworten

{filteredMessages.length} von {messages.length} Nachrichten
{/* Filters */}
{/* Messages List */}
{filteredMessages.length === 0 ? (
📭

Keine Nachrichten

{filter === 'unread' && 'Alle Nachrichten wurden beantwortet!'} {filter === 'responded' && 'Noch keine Nachrichten beantwortet.'} {filter === 'all' && 'Noch keine Kontaktanfragen eingegangen.'}

) : ( filteredMessages.map((message) => (

{message.name}

{message.email} {!message.responded && ( Neu )}

{message.subject}

{getMessagePreview(message.message)}

📅 {formatDate(message.timestamp)} {message.responded && ( ✅ Beantwortet )}
{!message.responded && ( )}
)) )}
{/* Email Responder Modal */} {showResponder && selectedMessage && ( )}
); };