import { useState, useMemo } from 'react' import { Link } from 'react-router-dom' import { usePurchases } from '../hooks/useApi.ts' import { StoreIcon } from '../components/StoreIcon.tsx' export function Purchases() { const { data: purchases = [], isLoading, error } = usePurchases() const [storeFilter, setStoreFilter] = useState('all') const stores = useMemo( () => ['all', ...new Set(purchases.map((p) => p.storeName))], [purchases], ) const filtered = storeFilter === 'all' ? purchases : purchases.filter((p) => p.storeName === storeFilter) if (isLoading) { return (
{[1, 2, 3].map((i) => (
))}
) } if (error) { return (

Failed to load purchases.

) } return (

Purchase History

{/* Store filter chips */}
{stores.map((store) => ( ))}
{/* Purchase list */}
{filtered.length === 0 ? (

No purchases found for this filter.

) : ( filtered.map((purchase) => (

{purchase.storeName}

{new Date(purchase.date).toLocaleDateString('en-US', { weekday: 'short', month: 'short', day: 'numeric', year: 'numeric', })}

${purchase.total.toFixed(2)}

{purchase.items.length} items

{/* Item preview */}

{purchase.items .slice(0, 3) .map((i) => i.name) .join(', ')} {purchase.items.length > 3 && ` +${purchase.items.length - 3} more`}

)) )}
) }