'use client'
import { useTheme } from '@/lib/ThemeContext'
import { B2BTemplate, Package, getPackageIcon, getPackageLabel } from '@/lib/AlertsB2BContext'
import { InfoBox, TipBox, StepBox } from './InfoBox'
import type { MigrationMethod } from './B2BWizardSteps'
// =============================================================================
// Step 4: Migration Details (Email / RSS / Reconstruct)
// =============================================================================
interface Step4Props {
migrationMethod: MigrationMethod
setMigrationMethod: (v: MigrationMethod) => void
inboundEmail: string
testEmailSent: boolean
setTestEmailSent: (v: boolean) => void
rssUrls: string[]
setRssUrls: (v: string[]) => void
alertDescription: string
setAlertDescription: (v: string) => void
}
export function WizardStep4({
migrationMethod,
setMigrationMethod,
inboundEmail,
testEmailSent,
setTestEmailSent,
rssUrls,
setRssUrls,
alertDescription,
setAlertDescription,
}: Step4Props) {
const { isDark } = useTheme()
return (
{/* Email Forwarding */}
{migrationMethod === 'email' && (
)}
{/* RSS Import */}
{migrationMethod === 'rss' && (
)}
{/* Reconstruction */}
{migrationMethod === 'reconstruct' && (
)}
)
}
// =============================================================================
// Email Forwarding Details
// =============================================================================
function EmailForwardingDetails({
inboundEmail,
testEmailSent,
setTestEmailSent,
}: {
inboundEmail: string
testEmailSent: boolean
setTestEmailSent: (v: boolean) => void
}) {
const { isDark } = useTheme()
return (
<>
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 && (
setTestEmailSent(true)}
className="px-4 py-2 rounded-lg bg-white/20 hover:bg-white/30 transition-all"
>
Test senden
)}
>
)
}
// =============================================================================
// RSS Import Details
// =============================================================================
function RSSImportDetails({
rssUrls,
setRssUrls,
setMigrationMethod,
}: {
rssUrls: string[]
setRssUrls: (v: string[]) => void
setMigrationMethod: (v: MigrationMethod) => void
}) {
const { isDark } = useTheme()
return (
<>
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 .
setMigrationMethod('email')}
className="mt-3 text-sm font-medium text-purple-400 hover:text-purple-300 underline"
>
→ Zur E-Mail-Weiterleitung wechseln
{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 && (
setRssUrls(rssUrls.filter((_, i) => i !== idx))}
className={`p-3 rounded-lg ${isDark ? 'hover:bg-white/10' : 'hover:bg-slate-100'}`}
>
✕
)}
))}
setRssUrls([...rssUrls, ''])}
className={`w-full py-3 rounded-lg border-2 border-dashed transition-all ${
isDark
? 'border-white/20 text-white/60 hover:border-white/40 hover:text-white'
: 'border-slate-200 text-slate-500 hover:border-slate-300 hover:text-slate-700'
}`}
>
+ Weiteren Feed hinzufuegen
Falls RSS verfuegbar ist:
1. Oeffnen Sie google.de/alerts
2. Suchen Sie nach einem orangefarbenen RSS-Symbol
3. Klicken Sie darauf und kopieren Sie die URL
>
)
}
// =============================================================================
// Reconstruction Details
// =============================================================================
function ReconstructionDetails({
alertDescription,
setAlertDescription,
}: {
alertDescription: string
setAlertDescription: (v: string) => void
}) {
const { isDark } = useTheme()
return (
<>
Was moechten Sie beobachten?
Beschreiben Sie Ihre Beobachtungsziele - wir erstellen die optimale Konfiguration
>
)
}
// =============================================================================
// Step 5: Notification Settings & Summary
// =============================================================================
interface Step5Props {
selectedTemplate: B2BTemplate | undefined
selectedRegions: string[]
setSelectedRegions: (v: string[]) => void
selectedPackages: string[]
setSelectedPackages: (v: string[]) => void
companyName: string
migrationMethod: MigrationMethod
}
export function WizardStep5({
selectedTemplate,
selectedRegions,
setSelectedRegions,
selectedPackages,
setSelectedPackages,
companyName,
migrationMethod,
}: Step5Props) {
const { isDark } = useTheme()
return (
Benachrichtigungen konfigurieren
Wie moechten Sie ueber relevante Ausschreibungen informiert werden?
{/* Regions */}
{selectedTemplate && (
Regionen
{selectedTemplate.guidedConfig.regionSelector.options.map(region => (
{
if (selectedRegions.includes(region)) {
setSelectedRegions(selectedRegions.filter(r => r !== region))
} else {
setSelectedRegions([...selectedRegions, region])
}
}}
className={`px-3 py-2 rounded-lg text-sm font-medium transition-all ${
selectedRegions.includes(region)
? 'bg-blue-500 text-white'
: isDark
? 'bg-white/10 text-white/60 hover:bg-white/20'
: 'bg-slate-100 text-slate-600 hover:bg-slate-200'
}`}
>
{region}
))}
)}
{/* Packages */}
{selectedTemplate && (
Produktbereiche
{selectedTemplate.guidedConfig.packageSelector.options.map(pkg => (
{
if (selectedPackages.includes(pkg)) {
setSelectedPackages(selectedPackages.filter(p => p !== pkg))
} else {
setSelectedPackages([...selectedPackages, pkg])
}
}}
className={`px-3 py-2 rounded-lg text-sm font-medium transition-all ${
selectedPackages.includes(pkg)
? 'bg-blue-500 text-white'
: isDark
? 'bg-white/10 text-white/60 hover:bg-white/20'
: 'bg-slate-100 text-slate-600 hover:bg-slate-200'
}`}
>
{getPackageIcon(pkg)} {getPackageLabel(pkg)}
))}
)}
{/* Summary */}
Ihre Konfiguration
• Firma: {companyName}
• Template: {selectedTemplate?.templateName || 'Eigene Konfiguration'}
• Migration: {
migrationMethod === 'email' ? 'E-Mail Weiterleitung' :
migrationMethod === 'rss' ? 'RSS Import' : 'Rekonstruktion'
}
• Regionen: {selectedRegions.join(', ')}
• Produkte: {selectedPackages.map(p => getPackageLabel(p as Package)).join(', ')}
• Digest: Taeglich um 08:00, max. 10 Treffer
Nach Abschluss werden wir Ihre Alerts analysieren und nur die wirklich
relevanten Ausschreibungen herausfiltern. Erwarten Sie ca. 80-90% weniger
irrelevante Treffer.
)
}