From ffb399237783af8856879ada70ce39dc919a6ac4 Mon Sep 17 00:00:00 2001 From: jyswee Date: Thu, 23 Jul 2026 22:10:20 +0000 Subject: [PATCH] Seed: restaurant template (17 files) --- src/pages/Reservations.tsx | 156 +++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 src/pages/Reservations.tsx diff --git a/src/pages/Reservations.tsx b/src/pages/Reservations.tsx new file mode 100644 index 0000000..9a1fe78 --- /dev/null +++ b/src/pages/Reservations.tsx @@ -0,0 +1,156 @@ +import { useState } from "react"; +import { toast } from "sonner"; +import { Button } from "@/components/ui/button"; +import { Card, CardContent } from "@/components/ui/card"; +import { Input } from "@/components/ui/input"; +import { Textarea } from "@/components/ui/textarea"; +import { ArrowRight, Wine, Clock, Shirt, Car, AlertCircle, MapPin, CheckCircle2 } from "lucide-react"; +import Header from "@/components/Header"; +import Footer from "@/components/Footer"; +import { useSaasMutation } from "@/hooks/use-tygarun"; + +export default function ReservationsPage() { + const [time, setTime] = useState("7:00 PM"); + const [guests, setGuests] = useState("2"); + const [occasion, setOccasion] = useState("No special occasion"); + const { mutate: bookTable, loading: booking } = useSaasMutation("scheduling", "/bookings"); + + const handleReserve = async (e: React.FormEvent) => { + e.preventDefault(); + const form = e.currentTarget; + const fd = new FormData(form); + try { + await bookTable({ + name: fd.get("name"), + email: fd.get("email"), + phone: fd.get("phone"), + date: fd.get("date"), + time, + partySize: guests, + occasion, + requests: fd.get("requests"), + }); + toast.success("Reservation confirmed! Check your email for details."); + form.reset(); + } catch { + toast.error("Could not confirm reservation. Please try again."); + } + }; + + return ( +
+
+ +
+
+
+ +
+

Make a Reservation

+

Join us for an unforgettable evening of exceptional cuisine

+
+
+ +
+
+ {/* ── FORM ── */} +
+
+ +
+ + +
+
+
+ + +
+
+ + +
+
+
+ + +
+
+
+ + +
+
+ + +

Most popular: 7:00 PM — 8:30 PM

+
+
+ + +
+
+
+ + +
+
+ +