diff --git a/frontend/src/components/inventory/DetailPanel.tsx b/frontend/src/components/inventory/DetailPanel.tsx index 13b9bbd7..b628e6a8 100644 --- a/frontend/src/components/inventory/DetailPanel.tsx +++ b/frontend/src/components/inventory/DetailPanel.tsx @@ -1,3 +1,35 @@ -// Stub — replaced in Task 6 +import React from 'react'; import type { InvItem } from './types'; -export function DetailPanel(_: { item: InvItem; onClose: () => void }) { return null; } + +function Row({ k, v }: { k: string; v: React.ReactNode }) { + return
{k}{v ?? '—'}
; +} + +export function DetailPanel({ item, onClose }: { item: InvItem; onClose: () => void }) { + return ( +
+ × +

{item.name}

+
+ {item.slot_name ?? item.object_class_name ?? ''} · {item.is_equipped ? '⚔ Equipped' : '📦 Inventory'} + {item.is_rare && ' · ★ Rare'} +
+ + + + + + {item.armor_level != null && item.armor_level > 0 && } + {item.max_damage != null && item.max_damage > 0 && } + {item.condition_percent != null && } + {item.item_set_name && } + {(item.is_bonded || item.is_attuned) && } +
+
Spells ({item.spell_names?.length ?? 0})
+ {(item.spell_names ?? []).map((s, i) => ( +
{s}
+ ))} +
↑/↓ next item · Esc close
+
+ ); +}