import { Link } from 'react-router-dom'; const AdminSettingsPanel = ({ adminSettings, adminSettingsLoading, status, error, onDismissError, onSettingChange, onIgnoredSlotChange, onAddIgnoredSlot, onRemoveIgnoredSlot, onNotificationChange, onSave }) => { return (

Admin-Einstellungen

Globale Abläufe und Verzögerungen für die Abhol-Automation verwalten.

Zur Konfiguration
{error && (
{error}
)} {status && (
{status}
)}
{adminSettingsLoading &&

Lade Admin-Einstellungen...

} {!adminSettingsLoading && !adminSettings &&

Keine Admin-Einstellungen verfügbar.

} {adminSettings && ( <>
onSettingChange('scheduleCron', event.target.value)} className="border rounded p-2 w-full focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500" placeholder="z. B. 0 * * * *" />
onSettingChange('initialDelayMinSeconds', event.target.value, true)} className="border rounded p-2 w-full focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500" placeholder="Min" /> onSettingChange('initialDelayMaxSeconds', event.target.value, true)} className="border rounded p-2 w-full focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500" placeholder="Max" />
onSettingChange('randomDelayMinSeconds', event.target.value, true)} className="border rounded p-2 w-full focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500" placeholder="Min" /> onSettingChange('randomDelayMaxSeconds', event.target.value, true)} className="border rounded p-2 w-full focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500" placeholder="Max" />
onSettingChange('storePickupCheckDelayMs', event.target.value, true)} className="border rounded p-2 w-full focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500" placeholder="z. B. 3000" />

Ignorierte Slots

{(!adminSettings.ignoredSlots || adminSettings.ignoredSlots.length === 0) && (

Keine Regeln definiert.

)} {adminSettings.ignoredSlots?.map((slot, index) => (
onIgnoredSlotChange(index, 'storeId', event.target.value)} placeholder="Store-ID" className="md:col-span-2 border rounded p-2 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500" /> onIgnoredSlotChange(index, 'description', event.target.value)} placeholder="Beschreibung (optional)" className="md:col-span-2 border rounded p-2 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500" />
))}

ntfy

Konfiguration für Systembenachrichtigungen via ntfy.

onNotificationChange('ntfy', 'serverUrl', event.target.value)} className="border rounded p-2 w-full focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500" placeholder="Server-URL" /> onNotificationChange('ntfy', 'topicPrefix', event.target.value)} className="border rounded p-2 w-full focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500" placeholder="Themenpräfix" /> onNotificationChange('ntfy', 'username', event.target.value)} className="border rounded p-2 w-full focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500" placeholder="Benutzername" /> onNotificationChange('ntfy', 'password', event.target.value)} className="border rounded p-2 w-full focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500" placeholder="Passwort" />

Telegram

Bot-Konfiguration für Telegram-Benachrichtigungen.

onNotificationChange('telegram', 'botToken', event.target.value)} className="border rounded p-2 w-full focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-purple-500" placeholder="Bot-Token" />
)}
); }; export default AdminSettingsPanel;