import React, { useState } from 'react'; import { createReservation, type ReservationData } from '../lib/pocketbase'; interface ReservationModalProps { isOpen: boolean; onClose: () => void; } export default function ReservationModal({ isOpen, onClose }: ReservationModalProps) { const [formData, setFormData] = useState({ name: '', email: '', phone: '', date: new Date().toISOString().split('T')[0], time: '19:30', guests: 2, location: 'Chandigarh (Sector 9)', special_requests: '', }); const [loading, setLoading] = useState(false); const [confirmedId, setConfirmedId] = useState(null); const [errorMessage, setErrorMessage] = useState(null); if (!isOpen) return null; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setErrorMessage(null); const res = await createReservation(formData); setLoading(false); if (res.success && res.id) { setConfirmedId(res.id); } else { setErrorMessage(res.error || 'Failed to submit reservation. Please try again.'); } }; const handleReset = () => { setConfirmedId(null); setErrorMessage(null); onClose(); }; return (
e.stopPropagation()} > {/* Close button */} {confirmedId ? (
check_circle

Table Reserved!

We look forward to welcoming you to Hops n Grains ({formData.location}). A confirmation message will be sent to {formData.phone}.

Booking ID: #{confirmedId}
) : (
Table Booking

Reserve Your Experience

Handcrafted beer & artisanal dining at Chandigarh & Panchkula.

{errorMessage && (
{errorMessage}
)}
{/* Location selector */}
{/* Name & Phone */}
setFormData({ ...formData, name: e.target.value })} className="w-full bg-[#201f1f] border border-[#524439]/60 rounded-md px-3.5 py-2.5 text-sm text-[#e5e2e1] focus:outline-none focus:border-[#ffb77b]" />
setFormData({ ...formData, phone: e.target.value })} className="w-full bg-[#201f1f] border border-[#524439]/60 rounded-md px-3.5 py-2.5 text-sm text-[#e5e2e1] focus:outline-none focus:border-[#ffb77b]" />
{/* Email */}
setFormData({ ...formData, email: e.target.value })} className="w-full bg-[#201f1f] border border-[#524439]/60 rounded-md px-3.5 py-2.5 text-sm text-[#e5e2e1] focus:outline-none focus:border-[#ffb77b]" />
{/* Date, Time, Guests */}
setFormData({ ...formData, date: e.target.value })} className="w-full bg-[#201f1f] border border-[#524439]/60 rounded-md px-3 py-2 text-sm text-[#e5e2e1] focus:outline-none focus:border-[#ffb77b]" />
setFormData({ ...formData, time: e.target.value })} className="w-full bg-[#201f1f] border border-[#524439]/60 rounded-md px-3 py-2 text-sm text-[#e5e2e1] focus:outline-none focus:border-[#ffb77b]" />
{/* Special Requests */}