"use client"; import Image from "next/image"; import { useEffect } from "react"; import { Tooltip, TooltipContent, TooltipTrigger, } from "@/components/ui/primitives/tooltip"; import { cn } from "@/lib/utils"; import useEditor, { CatalogCategory } from "@/store/use-editor"; import { CATALOG_ITEMS } from "./catalog-items"; import { AssetInput } from "@pascal-app/core"; export function ItemCatalog({ category }: { category: CatalogCategory }) { const selectedItem = useEditor((state) => state.selectedItem); const setSelectedItem = useEditor((state) => state.setSelectedItem); const filteredItems = CATALOG_ITEMS.filter( (item) => item.category === category, ); // Auto-select first item if current selection is not in the filtered list useEffect(() => { const isCurrentItemInCategory = filteredItems.some( (item) => item.src === selectedItem?.src, ); if (!isCurrentItemInCategory && filteredItems.length > 0) { setSelectedItem(filteredItems[0] as AssetInput); } }, [filteredItems, selectedItem?.src, setSelectedItem]); // Get attachment icon based on attachTo type const getAttachmentIcon = (attachTo: AssetInput["attachTo"]) => { if (attachTo === "wall" || attachTo === "wall-side") { return "/icons/wall.png"; } if (attachTo === "ceiling") { return "/icons/ceiling.png"; } return null; }; return (