"use client"; import { useState, useTransition } from "react"; import { Clock3, Plus } from "lucide-react"; import { addSlot, toggleSlot } from "@/app/admission-actions"; import type { PickupSlot } from "@/lib/slots"; import type { ActionResult } from "@/lib/validation"; export function SlotManager({ slots }: { slots: PickupSlot[] }) { const [message, setMessage] = useState({}); const [pending, startTransition] = useTransition(); function run(action: () => Promise) { setMessage({}); startTransition(async () => { try { setMessage(await action()); } catch (error) { console.error("Slot speichern", error); setMessage({ error: "Speichern fehlgeschlagen. Bitte erneut versuchen." }); } }); } return <>
GEMEINSAM GUT ORGANISIERT

Abholslots

Feste Zeitfenster für einen entspannten Abschied.

Slots haben keine Kapazitätsgrenze. Ein deaktivierter Slot bleibt in bestehenden Plänen erhalten, wird aber nicht mehr neu angeboten. Für andere Zeiten einen neuen Slot anlegen; individuelle Abholzeiten bleiben möglich.

{message.error &&

{message.error}

} {message.success &&

Abholslots gespeichert.

}
{slots.map((slot) =>

{slot.start}–{slot.end} Uhr

{slot.active ? "Für neue Pläne verfügbar" : "Inaktiv · bestehende Pläne bleiben erhalten"}

)}

Neues Abholfenster

{ event.preventDefault(); const form = new FormData(event.currentTarget); run(() => addSlot({ start: form.get("start"), end: form.get("end") })); }}>
; }