import { createFileRoute, useNavigate } from '@tanstack/react-router' import { useState } from 'react' import { useAuth } from '../lib/auth-context' import { useGetCart } from '../hooks/cart-query-hooks' import { useAllProducts } from '../hooks/prominent-api-hooks' import { ProtectedRoute } from '../components/ProtectedRoute' import { CheckoutAddressSelector } from '../components/CheckoutAddressSelector' import { PaymentAndOrderComponent } from '../components/PaymentAndOrderComponent' import { AddressForm } from '../components/AddressForm' import { Dialog } from '../components/Dialog' import { useAddressStore } from '../lib/stores/address-store' import { useQueryClient } from '@tanstack/react-query' import { ShoppingCart, ChevronLeft, MapPin } from 'lucide-react' export const Route = createFileRoute('/checkout')({ component: CheckoutPage }) function CheckoutPage() { return ( ) } function CheckoutContent() { const navigate = useNavigate() const queryClient = useQueryClient() const { isAuthenticated } = useAuth() const { selectedAddressId, setSelectedAddressId } = useAddressStore() const [showAddAddress, setShowAddAddress] = useState(false) const [editingAddress, setEditingAddress] = useState(null) const cartType: 'regular' | 'flash' = 'regular' const { data: cartData } = useGetCart(cartType) const { data: productsData } = useAllProducts() const products = productsData?.products || [] const productsById: Record = {} products.forEach((p: any) => { productsById[p.id] = p }) const cartItems = (cartData?.items || []).filter((item) => productsById[item.productId]) // Handle empty cart case if (cartItems.length === 0) { return (

Your cart is empty

Add some delicious items to your cart before checking out

) } return (
{/* Checkout Header */}

Checkout

{/* Left: Address Selection + Payment */}
{ setEditingAddress(null) setShowAddAddress(true) }} onEditAddress={(address) => { setEditingAddress(address) setShowAddAddress(true) }} />
{/* Right: Order summary + payment */}
navigate({ to: '/cart' })} />
{/* Add/Edit Address Dialog */} { setShowAddAddress(false) setEditingAddress(null) }} title={editingAddress ? 'Edit Address' : 'Add Address'} > { setShowAddAddress(false) setEditingAddress(null) if (addressId) { setSelectedAddressId(addressId) } queryClient.invalidateQueries({ queryKey: ['user.address.getUserAddresses'] }) }} initialValues={editingAddress || undefined} isEdit={!!editingAddress} />
) }