'use client' import React, { createContext, useContext, useState, useCallback } from 'react' interface Element { type: string emoji: string text: string } interface ElementsContextType { elements: Map addElement: (type: string, emoji: string) => void getElementContent: (type: string) => string } const ElementsContext = createContext(undefined) export function ElementsProvider({ children }: { children: React.ReactNode }) { const [elements, setElements] = useState>(new Map([ ['water', { type: 'water', emoji: '💧', text: 'Water' }], ['fire', { type: 'fire', emoji: '🔥', text: 'Fire' }], ['earth', { type: 'earth', emoji: '🌎', text: 'Earth' }], ['wind', { type: 'wind', emoji: '💨', text: 'Wind' }], ])) const addElement = useCallback((type: string, emoji: string) => { setElements(prev => { const newElements = new Map(prev) if (!newElements.has(type)) { newElements.set(type, { type, emoji, text: type.charAt(0).toUpperCase() + type.slice(1) }) } return newElements }) }, []) const getElementContent = useCallback((type: string) => { const element = Array.from(elements.values()).find(el => el.type === type) return element ? `${element.emoji} ${element.text}` : type }, [elements]) return ( {children} ) } export function useElements() { const context = useContext(ElementsContext) if (context === undefined) { throw new Error('useElements must be used within a ElementsProvider') } return context }