"use client"; import { useEffect, useState } from "react"; type ApiItem = { id: string; item_name: string; amount: number; price: number; enabled: boolean; shop: { label: string; }; item: { stock: number; }; }; const formatName = (name: string) => { const parts = name.split(":"); if (!parts[1]) return ""; return parts[1] .split("_") .map((part) => part.charAt(0).toUpperCase() + part.slice(1)) .join(" "); }; const getImage = (name: string) => { const [mod, item] = name.split(":"); return `/textures/${mod}/${item}.png`; }; const Items = ({ query }: { query: string }) => { const [items, setItems] = useState([]); useEffect(() => { const loadItems = async () => { try { const res = await fetch("/api/items"); const data = (await res.json()) as ApiItem[]; setItems(data.filter((item) => item.enabled)); } catch (err) { console.error("Failed to load items", err); } }; void loadItems(); }, []); const filteredItems = items.filter((item) => formatName(item.item_name).toLowerCase().includes(query.toLowerCase()), ); return (
{filteredItems.map((item) => (
{item.item_name}

{formatName(item.item_name)}

{item.item.stock} available

Shop: {item.shop.label}

{item.price}$/{item.amount}

))}
); }; export default Items;