'use client'; import { useState } from 'react'; import clsx from 'clsx'; import { PenLine, FlaskConical, Sparkles } from 'lucide-react'; import { EnchantmentDesigner, EnchantmentPreparer, EnchantmentApplier, } from '@/components/game/crafting'; import { useCraftingStore } from '@/lib/game/stores'; import { DebugName } from '@/components/game/debug/debug-context'; type EnchanterPhase = 'design' | 'prepare' | 'apply'; const PHASES: { key: EnchanterPhase; label: string; icon: typeof PenLine }[] = [ { key: 'design', label: 'Design', icon: PenLine }, { key: 'prepare', label: 'Prepare', icon: FlaskConical }, { key: 'apply', label: 'Apply', icon: Sparkles }, ]; export function EnchanterSubTab() { const [activePhase, setActivePhase] = useState('design'); const resetEnchantmentSelection = useCraftingStore((s) => s.resetEnchantmentSelection); const setSelectedEquipmentInstance = useCraftingStore((s) => s.setSelectedEquipmentInstance); const setSelectedDesign = useCraftingStore((s) => s.setSelectedDesign); // Read persisted selection state from the store const selectedEquipmentInstance = useCraftingStore( (s) => s.enchantmentSelection.selectedEquipmentInstance, ); const selectedDesign = useCraftingStore( (s) => s.enchantmentSelection.selectedDesign, ); const handlePhaseChange = (phase: EnchanterPhase) => { setActivePhase(phase); }; const handleEnchantmentApplied = () => { // Reset selection after successful application resetEnchantmentSelection(); setSelectedEquipmentInstance(null); setSelectedDesign(null); // Go back to design phase setActivePhase('design'); }; return (
{/* Phase selector */}
{PHASES.map(({ key, label, icon: Icon }) => ( ))}
{/* Phase content */} {activePhase === 'design' && ( )} {activePhase === 'prepare' && ( )} {activePhase === 'apply' && ( )}
); } EnchanterSubTab.displayName = 'EnchanterSubTab';