Files
Mana-Loop/src/components/game/tabs/EquipmentControls.tsx
T
Refactoring Agent dc1aad3700
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m22s
Fix LeftPanel.tsx to use modular stores instead of legacy useGameStore
- Added useCraftingStore import for crafting progress fields
- Changed spireMode/enterSpireMode to useCombatStore
- Changed currentStudyTarget to useSkillStore
- Changed crafting progress fields to useCraftingStore
- Added useCraftingStore export to stores/index.ts
- Kept useGameStore only for gatherMana, day, hour
2026-05-05 11:10:33 +02:00

75 lines
2.3 KiB
TypeScript

'use client';
import { EquipmentSlot } from '@/lib/game/data/equipment';
// GameStore import removed - not used
import { ActionButton } from '@/components/ui/action-button';
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';
import { X } from 'lucide-react';
interface EquipmentControlsProps {
onUnequip: (slot: EquipmentSlot) => void;
onDelete: (instanceId: string, name: string) => void;
selectedSlot: EquipmentSlot | null;
isSlotBlocked: (slot: EquipmentSlot) => boolean;
isEquipped: (instanceId: string) => boolean;
getEquippableSlots: (typeId: string) => EquipmentSlot[];
}
export function EquipmentControls({
onUnequip,
onDelete,
selectedSlot,
isSlotBlocked,
isEquipped,
getEquippableSlots,
}: EquipmentControlsProps) {
const SLOT_NAMES = {
mainHand: 'Main Hand',
offHand: 'Off Hand',
head: 'Head',
body: 'Body',
hands: 'Hands',
feet: 'Feet',
accessory1: 'Accessory 1',
accessory2: 'Accessory 2',
} as const;
return {
renderUnequipButton: (slot: EquipmentSlot, instanceName: string) => (
<ActionButton
variant="ghost"
size="sm"
className="h-6 w-6 p-0 text-[var(--color-danger)] hover:text-[var(--interactive-danger-hover)] hover:bg-[var(--interactive-danger)]/20"
onClick={(e) => {
e.stopPropagation();
onUnequip(slot);
}}
aria-label={`Unequip ${instanceName}`}
>
<X size={14} />
</ActionButton>
),
renderDeleteButton: (instanceId: string, name: string) => (
<TooltipProvider>
<Tooltip>
<TooltipTrigger asChild>
<ActionButton
variant="ghost"
size="sm"
className="h-8 w-8 p-0 text-[var(--color-danger)] hover:text-[var(--interactive-danger-hover)] hover:bg-[var(--interactive-danger)]/20"
onClick={() => onDelete(instanceId, name)}
aria-label={`Delete ${name}`}
>
<X size={14} />
</ActionButton>
</TooltipTrigger>
<TooltipContent className="bg-[var(--bg-elevated)] border-[var(--border-default)] text-[var(--text-primary)]">
<p>Delete this item</p>
</TooltipContent>
</Tooltip>
</TooltipProvider>
),
};
}