/** * Node Palette Component * Categorized, searchable node palette for workflow editor */ "use client"; import { useState } from 'react'; import { Search } from 'lucide-react'; import * as Icons from 'lucide-react'; import { Input } from '@/components/ui/input'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { NODE_METADATA, NODE_CATEGORIES, type NodeType } from '@/types/workflow-nodes'; interface NodePaletteProps { onNodeSelect: (nodeType: NodeType) => void; } export function NodePalette({ onNodeSelect }: NodePaletteProps) { const [search, setSearch] = useState(''); // Filter nodes based on search const filterNodes = (nodeTypes: readonly string[]) => { if (!search) return nodeTypes; return nodeTypes.filter(type => { const metadata = NODE_METADATA[type as NodeType]; return ( metadata.label.toLowerCase().includes(search.toLowerCase()) || metadata.description.toLowerCase().includes(search.toLowerCase()) ); }); }; return (