diff --git a/public/AGB.pdf b/public/AGB.pdf new file mode 100644 index 0000000..acd76cf Binary files /dev/null and b/public/AGB.pdf differ diff --git a/src/client/components/booking-form.tsx b/src/client/components/booking-form.tsx index b1d22c7..71225a2 100644 --- a/src/client/components/booking-form.tsx +++ b/src/client/components/booking-form.tsx @@ -10,6 +10,7 @@ export function BookingForm() { const [appointmentDate, setAppointmentDate] = useState(""); const [selectedSlotId, setSelectedSlotId] = useState(""); const [notes, setNotes] = useState(""); + const [agbAccepted, setAgbAccepted] = useState(false); const { data: treatments } = useQuery( queryClient.treatments.live.list.experimental_liveOptions() @@ -38,6 +39,10 @@ export function BookingForm() { alert("Bitte fülle alle erforderlichen Felder aus"); return; } + if (!agbAccepted) { + alert("Bitte bestätige die Kenntnisnahme der Allgemeinen Geschäftsbedingungen"); + return; + } const slot = availableSlots.find((s) => s.id === selectedSlotId); const appointmentTime = slot?.time || ""; createBooking( @@ -60,6 +65,7 @@ export function BookingForm() { setAppointmentDate(""); setSelectedSlotId(""); setNotes(""); + setAgbAccepted(false); alert("Buchung erfolgreich erstellt! Wir werden dich kontaktieren, um deinen Termin zu bestätigen."); }, } @@ -88,7 +94,7 @@ export function BookingForm() { {treatments?.map((treatment) => ( ))} @@ -196,6 +202,35 @@ export function BookingForm() { /> + {/* AGB Acceptance */} +
+
+ setAgbAccepted(e.target.checked)} + className="mt-1 h-4 w-4 text-pink-600 focus:ring-pink-500 border-gray-300 rounded" + required + /> +
+ +

+ 📋 Die AGB enthalten wichtige Informationen zu Buchungsgebühren, Stornierungsregeln und unseren Serviceleistungen. +

+
+
+
+