// Rôle : rend une ligne d'équipement et délègue ses panneaux d'édition spécialisés. import { useState } from "react"; import { Icon } from "../../../components/Icon.jsx"; import { useInlineEdit } from "../../../hooks/useInlineEdit.js"; import { DETAIL_TABS, getEquipmentTabLabel } from "./equipmentPlannerOptions.js"; import { CharacteristicsEditor, EquipmentDisplay, MaterialsEditor, SocketItemsEditor, TabIcon } from "./EquipmentPlannerEditors.jsx"; export function EquipmentItem({ equipment, reorder, textContent, onUpdate, onDelete }) { const [activeTab, setActiveTab] = useState("stats"); const [detailEditing, setDetailEditing] = useState(false); const nameEdit = useInlineEdit({ value: equipment.name, onCommit: (name) => onUpdate((current) => ({ ...current, name: name || current.name })), blurOnEscape: true }); const obtainEdit = useInlineEdit({ value: equipment.obtain || "", onCommit: (obtain) => onUpdate((current) => ({ ...current, obtain })), commitOnEnter: false }); const className = [ "equipment-planner-item", equipment.active ? "is-active" : "is-inactive", reorder.isItemDragging(equipment.id) ? "is-dragging" : "", reorder.isItemDropTarget(equipment.id) ? "is-drop-target" : "", reorder.getDropPlacement("item", equipment.id) === "after" ? "drop-after" : "" ].filter(Boolean).join(" "); return (
  • {equipment.name}
    {detailEditing ? ( <>
    {DETAIL_TABS.map((tab) => ( ))}
    {activeTab === "stats" && } {activeTab === "sockets" && } {activeTab === "craft" && (