'use client' import { useState } from 'react' import { useTheme } from '@/lib/ThemeContext' import { useAlertsB2B, B2BTemplate, Package, getPackageIcon, getPackageLabel } from '@/lib/AlertsB2BContext' import { InfoBox, TipBox, StepBox } from './InfoBox' interface B2BMigrationWizardProps { onComplete: () => void onSkip?: () => void onCancel?: () => void } type MigrationMethod = 'email' | 'rss' | 'reconstruct' | null export function B2BMigrationWizard({ onComplete, onSkip, onCancel }: B2BMigrationWizardProps) { const { isDark } = useTheme() const { tenant, updateTenant, settings, updateSettings, availableTemplates, selectTemplate, generateInboundEmail, addSource } = useAlertsB2B() const [step, setStep] = useState(1) const [migrationMethod, setMigrationMethod] = useState(null) const [companyName, setCompanyName] = useState(tenant.companyName || '') const [selectedTemplateId, setSelectedTemplateId] = useState(null) const [inboundEmail, setInboundEmail] = useState('') const [rssUrls, setRssUrls] = useState(['']) const [alertDescription, setAlertDescription] = useState('') const [testEmailSent, setTestEmailSent] = useState(false) const [selectedRegions, setSelectedRegions] = useState(['EUROPE']) const [selectedPackages, setSelectedPackages] = useState(['PARKING', 'EV_CHARGING']) const totalSteps = 5 const handleNext = () => { if (step < totalSteps) { // Special handling for step transitions if (step === 1 && companyName.trim()) { updateTenant({ companyName: companyName.trim() }) } if (step === 2 && selectedTemplateId) { selectTemplate(selectedTemplateId) } if (step === 3 && migrationMethod === 'email' && !inboundEmail) { setInboundEmail(generateInboundEmail()) } setStep(step + 1) } else { completeWizard() } } const handleBack = () => { if (step > 1) { setStep(step - 1) } } const completeWizard = () => { // Save sources based on migration method if (migrationMethod === 'email' && inboundEmail) { addSource({ tenantId: tenant.id, type: 'email', inboundAddress: inboundEmail, label: 'Google Alerts Weiterleitung', active: true }) } else if (migrationMethod === 'rss') { rssUrls.filter(url => url.trim()).forEach((url, idx) => { addSource({ tenantId: tenant.id, type: 'rss', rssUrl: url.trim(), label: `RSS Feed ${idx + 1}`, active: true }) }) } // Update settings updateSettings({ migrationCompleted: true, wizardCompleted: true, selectedRegions, selectedPackages: selectedPackages as any[] }) onComplete() } const canProceed = () => { switch (step) { case 1: return companyName.trim().length > 0 case 2: return selectedTemplateId !== null case 3: return migrationMethod !== null case 4: if (migrationMethod === 'email') return inboundEmail.length > 0 if (migrationMethod === 'rss') return rssUrls.some(url => url.trim().length > 0) if (migrationMethod === 'reconstruct') return alertDescription.trim().length > 10 return true case 5: return true default: return false } } const selectedTemplate = availableTemplates.find(t => t.templateId === selectedTemplateId) return (
{/* Animated Background Blobs - Dashboard Style */}
{/* Blob Animation Styles */}
{/* Exit Button - Fixed Top Right */} {onCancel && ( )} {/* Header */}
🏢

B2B Alerts einrichten

Bringen Sie Ihre bestehenden Google Alerts mit

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

Willkommen im B2B-Bereich

Wie heisst Ihr Unternehmen?

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

Ihr Firmenname wird verwendet, um:

  • Ihre eindeutige E-Mail-Adresse zu generieren
  • Berichte und Digests zu personalisieren
  • Ihr Dashboard anzupassen
)} {/* Step 2: Template waehlen */} {step === 2 && (

Branchenvorlage waehlen

Waehlen Sie eine Vorlage fuer Ihre Branche oder starten Sie leer

{availableTemplates.map((template) => ( ))} {/* Custom option */}
)} {/* Step 3: Migration Method */} {step === 3 && (

Nutzen Sie bereits Google Alerts?

Waehlen Sie, wie Sie Ihre bestehenden Alerts uebernehmen moechten

{/* Email Forwarding (Recommended) */} {/* RSS Import */} {/* Reconstruction */}

Ihre bestehenden Google Alerts bleiben bestehen. Wir sind eine zusaetzliche Intelligenzschicht, die filtert, priorisiert und zusammenfasst.

)} {/* Step 4: Migration Details */} {step === 4 && (
{/* Email Forwarding */} {migrationMethod === 'email' && ( <>

E-Mail Weiterleitung einrichten

Google Alerts sendet E-Mails - leiten Sie diese einfach an uns weiter

Google Alerts versendet Benachrichtigungen per E-Mail an Ihr Konto. Sie richten einen Gmail-Filter ein, der diese E-Mails automatisch weiterleitet - wir uebernehmen die Verarbeitung und Auswertung.

{/* Inbound Email */}
{/* Steps */}
Oeffnen Sie Gmail → Einstellungen → Filter und blockierte Adressen Klicken Sie auf "Neuen Filter erstellen" und geben Sie bei "Von" ein: googlealerts-noreply@google.com Waehlen Sie "Weiterleiten an" und fuegen Sie die obige Adresse ein. Aktivieren Sie auch "Filter auf passende Konversationen anwenden".

Ihre bestehenden Google Alerts bleiben unveraendert. Der Gmail-Filter leitet eingehende Alert-E-Mails automatisch an uns weiter. Sie koennen die E-Mails auch weiterhin in Ihrem Posteingang sehen.

{/* Test Button */}

{testEmailSent ? '✓ Test-E-Mail empfangen' : 'Verbindung testen'}

{testEmailSent ? 'Die Weiterleitung funktioniert!' : 'Senden Sie eine Test-E-Mail, um die Einrichtung zu pruefen'}

{!testEmailSent && ( )}
)} {/* RSS Import */} {migrationMethod === 'rss' && ( <>

RSS-Feeds importieren

Fuegen Sie die RSS-URLs Ihrer Google Alerts hinzu

{/* Warning Box */}

Google hat die RSS-Option fuer viele Konten entfernt. Falls Sie in Google Alerts kein RSS-Symbol sehen oder die Option "RSS-Feed" nicht verfuegbar ist, nutzen Sie bitte stattdessen die E-Mail-Weiterleitung.

{rssUrls.map((url, idx) => (
{ const newUrls = [...rssUrls] newUrls[idx] = e.target.value setRssUrls(newUrls) }} className={`flex-1 px-4 py-3 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' }`} /> {rssUrls.length > 1 && ( )}
))}

Falls RSS verfuegbar ist:

  1. 1. Oeffnen Sie google.de/alerts
  2. 2. Suchen Sie nach einem orangefarbenen RSS-Symbol
  3. 3. Klicken Sie darauf und kopieren Sie die URL
)} {/* Reconstruction */} {migrationMethod === 'reconstruct' && ( <>

Was moechten Sie beobachten?

Beschreiben Sie Ihre Beobachtungsziele - wir erstellen die optimale Konfiguration