import React, { useState } from 'react' import type { TradeOffer } from '../../types' import { useInventoryContext } from '../../context/InventoryContext' import { useScale } from '../../context/ScaleContext' import { ItemCanvas } from '../ItemCanvas' import { Tooltip } from '../Tooltip' interface TradeRowProps { trade: TradeOffer index: number selected: boolean onSelect(): void } function TradeRow({ trade, index, selected, onSelect }: TradeRowProps) { const { scale } = useScale() const { sendAction } = useInventoryContext() const [hoveredItem, setHoveredItem] = useState<'in1' | 'in2' | 'out' | null>(null) const slotSize = 16 * scale const handleClick = () => { onSelect() sendAction({ type: 'trade', tradeIndex: index }) } return (
{/* Input 1 */}
setHoveredItem('in1')} onMouseLeave={() => setHoveredItem(null)} > {hoveredItem === 'in1' && ( )}
{/* Input 2 */} {trade.inputItem2 && (
setHoveredItem('in2')} onMouseLeave={() => setHoveredItem(null)} > {hoveredItem === 'in2' && ( )}
)} {/* Arrow */}
{/* Output */}
setHoveredItem('out')} onMouseLeave={() => setHoveredItem(null)} > {hoveredItem === 'out' && ( )}
{/* Uses */}
= trade.maxUses ? '#ff5555' : '#aaaaaa', whiteSpace: 'nowrap', }} > {trade.uses}/{trade.maxUses}
) } export function VillagerTradeList() { const { windowState } = useInventoryContext() const { scale } = useScale() const [selectedIndex, setSelectedIndex] = useState(0) const villagerState = windowState as (typeof windowState & { trades?: TradeOffer[] }) | null const trades = villagerState?.trades ?? [] if (trades.length === 0) return null return (
{trades.map((trade, i) => ( setSelectedIndex(i)} /> ))}
) }