import React from 'react';
import { Search, Package, Plus, Calculator, Trash2, Minus, ShoppingCart, CheckCircle2, Facebook, Tag, ToggleLeft, ToggleRight } from 'lucide-react';
import { useCRM } from '../context/CRMContext';
import MarketplaceAnalytic from '../components/MarketplaceAnalytic';
const Sourcing: React.FC = () => {
const {
searchTerm, setSearchTerm, handleSearch, handleOpportunitySearch, products,
selectedProduct, setSelectedProduct, addToShoppingList,
shoppingList, removeFromShoppingList,
updateShoppingItemQuantity, saveOrderAsQuotation,
calculateShoppingTotals, overheadPercent,
useOverhead, setUseOverhead,
searchLoading, searchError, searchType, setSearchType
} = useCRM();
const onSearchSubmit = (e: React.FormEvent) => {
e.preventDefault();
if (searchType === 'specific') {
handleSearch(e);
} else {
handleOpportunitySearch(searchTerm);
}
};
const handleUpdateQuantity = (item: any, delta: number) => {
updateShoppingItemQuantity(item.id, delta);
};
const handleRemoveItem = (id: string) => {
removeFromShoppingList(id);
};
return (
{/* COLUNA 1: BUSCA */}
{/* TABS */}
{searchType === 'specific' ? : }
{searchType === 'specific' ? 'Sourcing Real-Time' : 'Caçador de Margem (>25%)'}
{searchError && (
)}
{searchLoading ? (
Consultando Compras Paraguai...
) : products.map((p, idx) => (
setSelectedProduct(p)}
className={`p-5 rounded-3xl border-2 cursor-pointer transition-all hover:scale-[1.02] active:scale-95 ${selectedProduct?.name === p.name
? 'border-indigo-500 bg-indigo-500/10 shadow-md'
: 'border-white/5 bg-white/5 hover:border-white/10 hover:bg-white/10'
}`}
>
{p.store}
{p.name}
US$ {p.priceUSD.toFixed(2)}
R$ {p.priceBRL.toLocaleString('pt-BR')}
{p.salesVolume && (
{p.salesVolume}
)}
))}
{!searchLoading && products.length === 0 && (
)}
{/* COLUNA 2: ANÁLISE DETALHADA */}
{selectedProduct ? (
) : (
Analítica de Arbitragem
Selecione um produto para ver a comparação de margem real entre os marketplaces do Brasil e sua venda direta no Facebook.
)}
{/* COLUNA 3: COTAÇÃO / CRM CHECKOUT */}
Minha Cotação
Sourcing Ativo
{shoppingList.length}
{shoppingList.length > 0 ? (
shoppingList.map(item => (
{item.store}
{item.name}
US$ {item.priceUSD.toFixed(2)}
{item.quantity}
))
) : (
)}
R$ {calculateShoppingTotals().totalCostWithOverhead.toLocaleString('pt-BR')}
Subtotal Paraguai
US$ {calculateShoppingTotals().totalUSD.toLocaleString('en-US')}
Lucro Est. Final
R$ {calculateShoppingTotals().totalApproxProfit.toLocaleString('pt-BR')}
);
};
export default Sourcing;