import React from 'react' import { useCheckoutAddress } from '../hooks/checkout-hooks' import { trpc } from '../lib/trpc-client' import { useQueryClient } from '@tanstack/react-query' import { p, div } from 'web-components' import { MapPin, Home, Briefcase, Check, Plus, Edit2, Trash2 } from 'lucide-react' interface AddressSelectorProps { onAddressSelect?: (addressId: number) => void onAddAddress?: () => void onEditAddress?: (address: any) => void } export function CheckoutAddressSelector({ onAddressSelect, onAddAddress, onEditAddress }: AddressSelectorProps) { const { sortedAddresses, selectedAddressId, handleAddressSelect, } = useCheckoutAddress({ onAddressSelect }) const queryClient = useQueryClient() const deleteMutation = trpc.user.address.deleteAddress.useMutation({ onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['user.address.getUserAddresses'] }) }, }) const getAddressIcon = (name: string) => { const lower = name.toLowerCase() if (lower.includes('home')) return if (lower.includes('work')) return return } return (

Delivery Address

Add New

{sortedAddresses.length === 0 ? (

No addresses found

Add Address

) : (
{sortedAddresses.map((address: any) => (
handleAddressSelect(address.id)} className={`relative cursor-pointer rounded-xl border-2 p-4 transition-all ${ selectedAddressId === address.id ? 'border-brand-500 bg-blue-50' : 'border-gray-200 bg-white hover:border-gray-300' }`} >
{getAddressIcon(address.name)}

{address.name}

{address.isDefault && ( Default )}

{address.addressLine1} {address.addressLine2 ? `, ${address.addressLine2}` : ''}

{address.city}, {address.state} - {address.pincode}

Phone: {address.phone}

{selectedAddressId === address.id && (
)}
{ e.stopPropagation() onEditAddress?.(address) }} className="flex h-8 w-8 items-center justify-center rounded-full text-gray-400 hover:bg-gray-100 hover:text-gray-600" >
{ e.stopPropagation() if (confirm('Are you sure you want to delete this address?')) { deleteMutation.mutate({ id: address.id }) } }} className="flex h-8 w-8 items-center justify-center rounded-full text-gray-400 hover:bg-red-50 hover:text-red-500" >
))}
)}
) }