'use client' import { useState, useEffect } from 'react' import { useRouter } from 'next/navigation' import { useTheme } from '@/lib/ThemeContext' import { useLanguage } from '@/lib/LanguageContext' import { useAlerts, Alert, getImportanceColor, getRelativeTime } from '@/lib/AlertsContext' import { Sidebar } from '@/components/Sidebar' import { AlertsWizard } from '@/components/AlertsWizard' import { InfoBox, TipBox } from '@/components/InfoBox' import { Footer } from '@/components/Footer' import { LanguageDropdown } from '@/components/LanguageDropdown' import { ThemeToggle } from '@/components/ThemeToggle' // Alert Detail Modal function AlertDetailModal({ alert, onClose, onMarkRead }: { alert: Alert onClose: () => void onMarkRead: () => void }) { const { isDark } = useTheme() useEffect(() => { if (!alert.isRead) { onMarkRead() } }, [alert, onMarkRead]) return (
{/* Header */}
{alert.importance} {getRelativeTime(alert.timestamp)}
{/* Title */}

{alert.title}

{/* LLM Summary */}

🤖 KI-Zusammenfassung

{alert.summary}

{/* Sources */}

Quellen:

{alert.sources.map((source, idx) => (

{source.title}

{source.domain}

))}
{/* Original Source */}

Quelle: {alert.source}

) } // Alert Headline Component function AlertHeadline({ alert, onClick }: { alert: Alert onClick: () => void }) { const { isDark } = useTheme() return ( ) } export default function AlertsPage() { const router = useRouter() const { isDark } = useTheme() const { t } = useLanguage() const { alerts, unreadCount, isLoading, topics, settings, markAsRead, markAllAsRead, updateSettings } = useAlerts() const [selectedAlert, setSelectedAlert] = useState(null) const [showWizard, setShowWizard] = useState(false) const [filterImportance, setFilterImportance] = useState('all') const [viewMode, setViewMode] = useState<'simple' | 'expert'>('simple') // Zeige Wizard wenn noch nicht abgeschlossen useEffect(() => { if (!settings.wizardCompleted && topics.length === 0) { setShowWizard(true) } }, [settings.wizardCompleted, topics.length]) // Gefilterte Alerts const filteredAlerts = alerts.filter(alert => { if (filterImportance === 'all') return true if (filterImportance === 'unread') return !alert.isRead return alert.importance === filterImportance }) // Wizard-Modus if (showWizard) { return ( setShowWizard(false)} onSkip={() => { updateSettings({ wizardCompleted: true }) setShowWizard(false) }} /> ) } return (
{/* Animated Background Blobs */}
{/* Sidebar */} {/* Main Content */}
{/* Header */}

🔔 Alerts {unreadCount > 0 && ( {unreadCount} neu )}

Aktuelle Nachrichten zu Ihren Bildungsthemen

{/* Mode Toggle */}
{/* Alerts Liste */}
{/* Filter Bar */}
{['all', 'unread', 'KRITISCH', 'DRINGEND', 'WICHTIG'].map((filter) => ( ))}
{unreadCount > 0 && ( )}
{/* Alerts */} {isLoading ? (
) : filteredAlerts.length === 0 ? (
📭

Keine Alerts gefunden

) : (
{filteredAlerts.map(alert => ( setSelectedAlert(alert)} /> ))}
)}
{/* Right Sidebar */}
{/* Topics */}

📋 Meine Themen

{topics.length === 0 ? (

Noch keine Themen konfiguriert.

) : (
{topics.map(topic => (
{topic.icon}

{topic.name}

{topic.keywords.slice(0, 3).join(', ')}

))}
)}
{/* Stats */}

📊 Statistik

Gesamt {alerts.length}
Ungelesen {unreadCount}
Themen {topics.length}
{/* Info */}

Alle Alerts werden automatisch mit KI zusammengefasst, um Ihnen Zeit zu sparen.

{/* Alert Detail Modal */} {selectedAlert && ( setSelectedAlert(null)} onMarkRead={() => markAsRead(selectedAlert.id)} /> )}
) }