From 51b6165f09c322ae790e045d5089f8dc9d3ec0bb Mon Sep 17 00:00:00 2001 From: Tiago Yamamoto Date: Tue, 23 Dec 2025 12:03:47 -0300 Subject: [PATCH] Add cart empty state --- marketplace/package-lock.json | 10 +++++++++ marketplace/package.json | 1 + marketplace/src/pages/Cart.tsx | 38 ++++++++++++++++++++++++++-------- 3 files changed, 40 insertions(+), 9 deletions(-) diff --git a/marketplace/package-lock.json b/marketplace/package-lock.json index 2ed97c7..763b47e 100644 --- a/marketplace/package-lock.json +++ b/marketplace/package-lock.json @@ -12,6 +12,7 @@ "@types/leaflet": "^1.9.21", "axios": "^1.7.4", "leaflet": "^1.9.4", + "lucide-react": "^0.562.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-leaflet": "^4.2.1", @@ -3024,6 +3025,15 @@ "yallist": "^3.0.2" } }, + "node_modules/lucide-react": { + "version": "0.562.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.562.0.tgz", + "integrity": "sha512-82hOAu7y0dbVuFfmO4bYF1XEwYk/mEbM5E+b1jgci/udUBEE/R7LF5Ip0CCEmXe8AybRM8L+04eP+LGZeDvkiw==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/lz-string": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", diff --git a/marketplace/package.json b/marketplace/package.json index 465ea26..f121caf 100644 --- a/marketplace/package.json +++ b/marketplace/package.json @@ -15,6 +15,7 @@ "@types/leaflet": "^1.9.21", "axios": "^1.7.4", "leaflet": "^1.9.4", + "lucide-react": "^0.562.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-leaflet": "^4.2.1", diff --git a/marketplace/src/pages/Cart.tsx b/marketplace/src/pages/Cart.tsx index 422207b..a6010cc 100644 --- a/marketplace/src/pages/Cart.tsx +++ b/marketplace/src/pages/Cart.tsx @@ -1,3 +1,4 @@ +import { ShoppingBasket } from 'lucide-react' import { Shell } from '../layouts/Shell' import { selectGroupedCart, selectCartSummary, useCartStore } from '../stores/cartStore' import { formatCurrency } from '../utils/format' @@ -6,6 +7,7 @@ export function CartPage() { const items = useCartStore((state) => state.items) const groups = useCartStore(selectGroupedCart) const summary = useCartStore(selectCartSummary) + const isEmpty = items.length === 0 const updateQuantity = useCartStore((state) => state.updateQuantity) const removeItem = useCartStore((state) => state.removeItem) const clearVendor = useCartStore((state) => state.clearVendor) @@ -14,20 +16,39 @@ export function CartPage() { return (
-
+

Carrinho B2B

Agrupamento automático por distribuidora para suportar checkout unificado ou múltiplo.

-
-

Itens: {summary.totalItems}

-

R$ {formatCurrency(summary.totalValue)}

-
+ {!isEmpty && ( +
+

Itens: {summary.totalItems}

+

R$ {formatCurrency(summary.totalValue)}

+
+ )}
- {items.length === 0 ? ( -
Nenhum item no carrinho.
+ {isEmpty ? ( +
+
+
+ +
+

Seu carrinho está vazio

+

+ Parece que você ainda não adicionou produtos das distribuidoras. Explore nosso catálogo para + encontrar medicamentos e suprimentos. +

+ + Explorar Produtos + +
+
) : ( Object.entries(groups).map(([vendorId, group]) => (
@@ -93,7 +114,7 @@ export function CartPage() {
)) )} - {items.length > 0 && ( + {!isEmpty && (