import React, { useState, useEffect } from "react"; import GameDataManager from "../../../services/GameDataManager"; import MeteorRegion from "../../../components/Meteor/MeteorRegion.jsx"; import { config } from "../../../config/api"; import DatapackDetailsModal from "./components/DatapackDetailsModal"; import "./styles/DatapackTab.css"; const DatapackTab = () => { const [activeSection, setActiveSection] = useState("items"); const [searchQuery, setSearchQuery] = useState(""); const [displayList, setDisplayList] = useState([]); const [selectedItem, setSelectedItem] = useState(null); const sections = [ { id: "items", label: "Items", icon: "fa-box" }, { id: "hostiles", label: "Hostiles", icon: "fa-biohazard" }, { id: "dungeons", label: "Dungeons", icon: "fa-dungeon" }, { id: "recipes", label: "Recipes", icon: "fa-scroll" }, ]; useEffect(() => { let data = []; switch (activeSection) { case "items": data = Array.from(GameDataManager.items.values()).map((i) => GameDataManager.getItem(i.id), ); break; case "hostiles": data = Array.from(GameDataManager.hostiles.values()).map((h) => GameDataManager.getHostile(h.id), ); break; case "dungeons": data = Array.from(GameDataManager.dungeons.values()).map((d) => GameDataManager.getDungeon(d.id), ); break; case "recipes": data = Array.from(GameDataManager.recipes.values()).map((r) => GameDataManager.getRecipe(r.id), ); break; default: data = []; } if (searchQuery) { const query = searchQuery.toLowerCase(); data = data.filter( (item) => item.displayName?.toLowerCase().includes(query) || item.id?.toLowerCase().includes(query), ); } setDisplayList(data); }, [activeSection, searchQuery]); return (