'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 (
Request sent!

We’ll reach out to confirm your delivery time. Check your email for a copy of your request.

) } return (

Send us your order & we’ll confirm a time

setName(e.target.value)} style={{ flex: 1 }} /> setPhone(e.target.value)} style={{ flex: 1 }} />
setEmail(e.target.value)} style={{ marginBottom: '0.4rem', width: '100%' }} /> setPreferredTime(e.target.value)} style={{ marginBottom: '0.5rem', width: '100%' }} /> {error && (

{error}

)}
) }