'use client' import { useState } from 'react' import { useTheme } from '@/lib/ThemeContext' import { useAlertsB2B, Package } from '@/lib/AlertsB2BContext' import { WizardStep1, WizardStep2, WizardStep3 } from './B2BWizardSteps' import { WizardStep4, WizardStep5 } from './B2BWizardDetails' import type { MigrationMethod } from './B2BWizardSteps' interface B2BMigrationWizardProps { onComplete: () => void onSkip?: () => void onCancel?: () => void } 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) { 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 = () => { 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 }) }) } 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 */}
{/* Blob Animation Styles */}
{/* Exit Button */} {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 && ( )} {step === 2 && ( )} {step === 3 && ( )} {step === 4 && ( )} {step === 5 && ( )}
{/* Navigation Buttons */}
{step > 1 && ( )}
{/* Skip Option */} {onSkip && step === 1 && ( )}
) }