import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, Tooltip, TooltipTrigger, TooltipContent, TooltipProvider, } from '@/components'; import { MoreHorizontal, Pencil, Trash2, DollarSign } from 'lucide-react'; import { // formatTokenCount, getModalityIcon, ModelOption, } from '../helpers'; import { cn } from '@/lib/utils/utils'; interface AIModelCardProps { config: ModelOption; onEdit?: (id: string) => void; onDelete?: (id: string) => void; mode?: 'configured' | 'selectable'; isSelected?: boolean; onSelect?: () => void; isDisabled?: boolean; } export function AIModelCard({ config, onEdit, onDelete, mode = 'configured', isSelected = false, onSelect, isDisabled = false, }: AIModelCardProps) { const isSelectableMode = mode === 'selectable'; const handleCardClick = () => { if (isSelectableMode && !isDisabled && onSelect) { onSelect(); } }; return (
{/* Configured mode: More button */} {mode === 'configured' && onEdit && onDelete && ( onEdit(config.id)} > System Prompt onDelete(config.id)} className="text-red-600 dark:text-red-400 flex flex-row gap-3 px-3 py-2 cursor-pointer" > Delete )} {/* Selectable mode: Added badge */} {isSelectableMode && isDisabled && (
Added
)} {/* Header with logo */}
{/* Provider Logo */}
{config.logo ? ( ) : (
{config.providerName.charAt(0).toUpperCase()}
)}

{config.providerName}

{/* Model Info */}

{config.modelName ? config.modelName : config.providerName}

{(!isSelectableMode || (isSelectableMode && isDisabled)) &&
}
{/* Modality indicators - use config modalities directly */}
Input
{config.inputModality.map((modality) => { const IconComponent = getModalityIcon(modality); return (

{modality}

); })}
Output
{config.outputModality.map((modality) => { const IconComponent = getModalityIcon(modality); return (

{modality}

); })}
{isSelectableMode ? (
Credit Usage
{typeof config.priceLevel === 'number' && config.priceLevel > 0 ? ( Array.from({ length: config.priceLevel }).map((_, i) => (
)) ) : ( Free )}
) : (
Requests {config.usageStats?.totalRequests || 0}
)}
); }