'use client'; import { Accordion, AccordionItem, Checkbox } from '@nextui-org/react'; import { useCart } from 'components/cart/cart-context'; import CartItemView from 'components/cart/cart-item'; import Price from 'components/price'; import ShippingForm from 'components/shipping/form'; import { OrderPayload } from 'lib/woocomerce/storeApi'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; import { z } from 'zod'; const shippingSchema = z.object({ first_name: z.string().min(3), last_name: z.string().min(3), address_1: z.string().min(3), address_2: z.string().optional(), city: z.string().min(3), state: z.string().min(3), postcode: z.string().min(3), country: z.string().min(3) }); export default function CheckoutPage() { const { cart } = useCart(); const router = useRouter(); const initialState: OrderPayload = { shipping_address: { first_name: '', last_name: '', company: '', address_1: '', address_2: '', city: '', state: '', postcode: '', country: '' }, billing_address: { first_name: '', last_name: '', company: '', email: '', phone: '', address_1: '', address_2: '', city: '', state: '', postcode: '', country: '' }, payment_method: '', payment_data: [] }; const [formData, setFormData] = useState(initialState); const [sameBilling, setSameBilling] = useState(true); const handleChangeShipping = (e: any) => { setFormData(e); }; const handleChangeBilling = (e: any) => { setFormData(e); }; return (

Checkout

{ try { console.log(formData); shippingSchema.parse(formData.shipping_address); } catch (error) { console.log(error); } }} className="rounded-lg border border-neutral-200 bg-white p-4 dark:border-neutral-800 dark:bg-black" >
setSameBilling(v)} className="mt-2"> Use same address for billing?

Payment

{cart && (
    {cart.items?.length && cart.items .sort((a, b) => a.name.localeCompare(b.name)) .map((item, i) => { return (
  • ); })}

Total

)}
); }