'use client' import * as React from 'react' import { Command } from 'cmdk' import { Plus, Edit, Trash, Search, Eye, List, Package, Users, ShoppingCart, Calendar, Lock, BookOpen, Folder, DollarSign, ToggleLeft, Zap, } from 'lucide-react' import type { LucideIcon } from 'lucide-react' import { cn } from '@open-mercato/shared/lib/utils' import type { ToolInfo } from '../../types' import { humanizeToolName } from '../../utils/toolMatcher' interface CommandItemProps { tool: ToolInfo isSelected: boolean onSelect: () => void } const MODULE_ICONS: Record = { customers: Users, catalog: Package, sales: ShoppingCart, search: Search, auth: Lock, dictionaries: BookOpen, directory: Folder, currencies: DollarSign, feature_toggles: ToggleLeft, } const ACTION_ICONS: Record = { create: Plus, update: Edit, delete: Trash, search: Search, query: Search, get: Eye, list: List, } function getIcon(tool: ToolInfo): LucideIcon { // First try to match action const nameParts = tool.name.split('.') const action = nameParts[nameParts.length - 1] if (ACTION_ICONS[action]) { return ACTION_ICONS[action] } // Then try module const module = tool.module || nameParts[0] if (MODULE_ICONS[module]) { return MODULE_ICONS[module] } return Zap } export function CommandItem({ tool, isSelected, onSelect }: CommandItemProps) { const Icon = getIcon(tool) const displayName = humanizeToolName(tool.name) const module = tool.module || tool.name.split('.')[0] return (
{displayName}
{tool.description}
{module}
) }