'use client' import { useState } from 'react' import { BASE } from '@/lib/basepath' import type { EmailLineItem } from '@/lib/notify' interface Props { address: string defaultName: string defaultPhone: string defaultEmail: string lineItems: EmailLineItem[] } export default function BookingRequestPanel({ address, defaultName, defaultPhone, defaultEmail, lineItems }: Props) { const [name, setName] = useState(defaultName) const [phone, setPhone] = useState(defaultPhone) const [email, setEmail] = useState(defaultEmail) const [preferredTime, setPreferredTime] = useState('') const [submitting, setSubmitting] = useState(false) const [success, setSuccess] = useState(false) const [error, setError] = useState('') const handleSubmit = async () => { setError('') setSubmitting(true) try { const res = await fetch(`${BASE}/api/booking-request`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ customerName: name, customerPhone: phone, customerEmail: email, preferredTime, address, lineItems }), }) const data = await res.json() if (!res.ok) { setError(data.error ?? 'Something went wrong.'); return } setSuccess(true) } catch { setError('Network error — please try again.') } finally { setSubmitting(false) } } if (success) { return (
We’ll reach out to confirm your delivery time. Check your email for a copy of your request.
Send us your order & we’ll confirm a time
{error}
)}