import { FormEvent, useState } from "react"; import { useNavigate } from "react-router-dom"; import { api } from "../services/api"; import { useAuth } from "../state/AuthContext"; import { useCart } from "../state/CartContext"; import type { CheckoutForm } from "../types"; import { StatusView } from "../ui/StatusView"; export function CheckoutPage() { const { user } = useAuth(); const { items, subtotal, clearCart } = useCart(); const navigate = useNavigate(); const [submitting, setSubmitting] = useState(false); const [error, setError] = useState(null); const [form, setForm] = useState({ fullName: user?.name ?? "", email: user?.email ?? "", address: "", city: "", postalCode: "", paymentMethod: "CreditCard" }); if (items.length === 0) { return ; } async function handleSubmit(event: FormEvent) { event.preventDefault(); setSubmitting(true); setError(null); try { const order = await api.createOrder(form, items); clearCart(); navigate(`/order-confirmation/${order.id}`, { state: { order } }); } catch (submitError) { setError(submitError instanceof Error ? submitError.message : "Unable to create order"); } finally { setSubmitting(false); } } return (
Checkout

Collect shipping and payment details

{error ?

{error}

: null}
); }