import React, { memo, type SVGProps } from 'react'; import { cn } from '../../lib/utils'; import type { CodingCliProviderId } from '../../domain/codingCliProviders'; import type { CodingCliActivityPhase } from '../../domain/codingCliTitleParse'; import { getAgentIconVisual, type AgentIconKey } from '../../domain/agentIcon'; type IconProps = SVGProps; const ClaudeIcon: React.FC = (props) => ( ); const OpencodeIcon: React.FC = (props) => ( ); const GeminiIcon: React.FC = (props) => ( ); const KimiIcon: React.FC = (props) => ( ); const INLINE_PROVIDER_ICONS: Partial>> = { claude: ClaudeIcon, opencode: OpencodeIcon, gemini: GeminiIcon, kimi: KimiIcon, }; const activityClassName: Record = { idle: 'text-foreground dark:text-foreground', busy: 'text-sky-500 coding-cli-icon-busy', waiting: 'text-amber-500 coding-cli-icon-waiting', }; export const CodingCliProviderIcon: React.FC<{ providerId: CodingCliProviderId; iconKey?: AgentIconKey; activityPhase?: CodingCliActivityPhase; className?: string; }> = memo(({ providerId, iconKey, activityPhase = 'idle', className }) => { const InlineIcon = INLINE_PROVIDER_ICONS[providerId]; const boxClass = cn('shrink-0 h-4 w-4', className); const toneClass = activityClassName[activityPhase]; if (InlineIcon) { return (