'use client' import { useState } from 'react' import { useTheme } from '@/lib/ThemeContext' import { useAlerts, lehrerThemen, Topic, AlertImportance } from '@/lib/AlertsContext' import { InfoBox, TipBox, StepBox } from './InfoBox' import { BPIcon } from './Logo' interface AlertsWizardProps { onComplete: () => void onSkip?: () => void } export function AlertsWizard({ onComplete, onSkip }: AlertsWizardProps) { const { isDark } = useTheme() const { addTopic, updateSettings, settings } = useAlerts() const [step, setStep] = useState(1) const [selectedTopics, setSelectedTopics] = useState([]) const [customTopic, setCustomTopic] = useState({ name: '', keywords: '' }) const [rssFeedUrl, setRssFeedUrl] = useState('') const [notificationFrequency, setNotificationFrequency] = useState<'realtime' | 'hourly' | 'daily'>('daily') const [minImportance, setMinImportance] = useState('PRUEFEN') const totalSteps = 4 const handleNext = () => { if (step < totalSteps) { setStep(step + 1) } else { // Wizard abschliessen completeWizard() } } const handleBack = () => { if (step > 1) { setStep(step - 1) } } const completeWizard = () => { // Ausgewaehlte vordefinierte Topics hinzufuegen selectedTopics.forEach(topicId => { const topic = lehrerThemen.find(t => t.name === topicId) if (topic) { addTopic({ id: `topic-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`, name: topic.name, keywords: topic.keywords, icon: topic.icon, isActive: true, rssFeedUrl: rssFeedUrl || undefined }) } }) // Custom Topic hinzufuegen falls vorhanden if (customTopic.name.trim()) { addTopic({ id: `topic-${Date.now()}-custom`, name: customTopic.name, keywords: customTopic.keywords.split(',').map(k => k.trim()).filter(k => k), icon: '📌', isActive: true, rssFeedUrl: rssFeedUrl || undefined }) } // Settings speichern updateSettings({ notificationFrequency, minImportance, wizardCompleted: true }) onComplete() } const toggleTopic = (topicName: string) => { setSelectedTopics(prev => prev.includes(topicName) ? prev.filter(t => t !== topicName) : [...prev, topicName] ) } const canProceed = () => { switch (step) { case 1: return selectedTopics.length > 0 || customTopic.name.trim().length > 0 case 2: return true // Info-Schritt, immer weiter case 3: return true // RSS optional case 4: return true // Einstellungen immer gueltig default: return false } } return (
{/* Animated Background */}
{/* Logo & Titel */}
🔔

Google Alerts einrichten

Bleiben Sie informiert ueber Bildungsthemen

{/* Progress Bar */}
{[1, 2, 3, 4].map((s) => (
{s < step ? '✓' : s}
))}
{/* Main Card */}
{/* Step 1: Themen waehlen */} {step === 1 && (

Welche Themen interessieren Sie?

Waehlen Sie Themen, ueber die Sie informiert werden moechten

{/* Vordefinierte Themen */}
{lehrerThemen.map((topic) => { const isSelected = selectedTopics.includes(topic.name) return ( ) })}
{/* Custom Topic */}

📌 Eigenes Thema hinzufuegen

setCustomTopic({ ...customTopic, name: e.target.value })} className={`w-full px-4 py-2 rounded-lg border ${ isDark ? 'bg-white/10 border-white/20 text-white placeholder-white/40' : 'bg-white border-slate-200 text-slate-900 placeholder-slate-400' }`} /> setCustomTopic({ ...customTopic, keywords: e.target.value })} className={`w-full px-4 py-2 rounded-lg border ${ isDark ? 'bg-white/10 border-white/20 text-white placeholder-white/40' : 'bg-white border-slate-200 text-slate-900 placeholder-slate-400' }`} />
)} {/* Step 2: Google Alerts Anleitung */} {step === 2 && (

Google Alerts einrichten

Google sendet Alerts per E-Mail - wir verarbeiten sie fuer Sie

Google Alerts versendet Benachrichtigungen per E-Mail an Ihr Konto. Sie richten einfach eine Weiterleitung ein - wir uebernehmen die Auswertung, Filterung und Zusammenfassung.

Besuchen Sie google.de/alerts und melden Sie sich mit Ihrem Google-Konto an.

Geben Sie Suchbegriffe ein (z.B. "{selectedTopics[0] || 'Bildungspolitik'}") und erstellen Sie Alerts. Die Alerts werden an Ihre E-Mail-Adresse gesendet.

Im naechsten Schritt richten Sie eine automatische Weiterleitung der Google Alert E-Mails an uns ein. So verarbeiten wir Ihre Alerts automatisch.

Sie koennen beliebig viele Google Alerts erstellen. Alle werden per E-Mail an Sie gesendet und durch die Weiterleitung automatisch verarbeitet - gefiltert, priorisiert und zusammengefasst.

)} {/* Step 3: E-Mail Weiterleitung einrichten */} {step === 3 && (

E-Mail Weiterleitung einrichten

Leiten Sie Ihre Google Alert E-Mails automatisch an uns weiter

{/* Empfohlene Methode: E-Mail Weiterleitung */}
📧

E-Mail Weiterleitung

Empfohlen

Richten Sie in Gmail einen Filter ein, der Google Alert E-Mails automatisch weiterleitet.

Ihre Weiterleitungsadresse:

alerts@breakpilot.de

So richten Sie die Weiterleitung in Gmail ein:

  1. 1. Oeffnen Sie Gmail → Einstellungen → Filter
  2. 2. Neuer Filter: Von "googlealerts-noreply@google.com"
  3. 3. Aktion: Weiterleiten an "alerts@breakpilot.de"
{/* Alternative: RSS (mit Warnung) */}
📡

Alternativ: RSS-Feed (eingeschraenkt verfuegbar)

Google hat die RSS-Option fuer viele Konten entfernt. Falls Sie RSS noch sehen, koennen Sie die Feed-URL hier eingeben:

setRssFeedUrl(e.target.value)} className={`w-full px-4 py-2 rounded-lg border text-sm ${ isDark ? 'bg-white/10 border-white/20 text-white placeholder-white/30' : 'bg-white border-slate-200 text-slate-900 placeholder-slate-400' }`} />

⚠️ Die meisten Nutzer sehen keine RSS-Option mehr in Google Alerts. Verwenden Sie in diesem Fall die E-Mail-Weiterleitung.

Sie koennen diesen Schritt auch ueberspringen und die Weiterleitung spaeter einrichten. Die Demo-Alerts werden weiterhin angezeigt.

)} {/* Step 4: Benachrichtigungs-Einstellungen */} {step === 4 && (

Benachrichtigungen einstellen

Wie moechten Sie informiert werden?

{/* Frequenz */}
{[ { id: 'realtime', label: 'Sofort', icon: '⚡', desc: 'Bei jedem neuen Alert' }, { id: 'hourly', label: 'Stuendlich', icon: '🕐', desc: 'Zusammenfassung pro Stunde' }, { id: 'daily', label: 'Taeglich', icon: '📅', desc: 'Einmal am Tag' }, ].map((freq) => ( ))}
{/* Mindest-Wichtigkeit */}
{[ { id: 'KRITISCH', label: 'Kritisch', color: 'red' }, { id: 'DRINGEND', label: 'Dringend', color: 'orange' }, { id: 'WICHTIG', label: 'Wichtig', color: 'yellow' }, { id: 'PRUEFEN', label: 'Pruefen', color: 'blue' }, { id: 'INFO', label: 'Info', color: 'slate' }, ].map((imp) => ( ))}

Sie erhalten nur Benachrichtigungen fuer Alerts mit dieser Wichtigkeit oder hoeher.

{/* Zusammenfassung */}

Ihre Einstellungen

  • • {selectedTopics.length + (customTopic.name ? 1 : 0)} Themen ausgewaehlt
  • • Benachrichtigungen: {notificationFrequency === 'realtime' ? 'Sofort' : notificationFrequency === 'hourly' ? 'Stuendlich' : 'Taeglich'}
  • • Mindest-Wichtigkeit: {minImportance}
  • {rssFeedUrl &&
  • • RSS-Feed verbunden
  • }
)}
{/* Navigation Buttons */}
{step > 1 && ( )}
{/* Skip Option */} {onSkip && ( )}
) }