/** * @license * Copyright 2025 Qwen Team * SPDX-License-Identifier: Apache-2.0 */ import type React from 'react'; import { MessageContent } from '../MessageContent.js'; import './AssistantMessage.css'; interface AssistantMessageProps { content: string; timestamp: number; onFileClick?: (path: string) => void; status?: 'default' | 'success' | 'error' | 'warning' | 'loading'; // When true, render without the left status bullet (no ::before dot) hideStatusIcon?: boolean; } /** * AssistantMessage component - renders AI responses with Qwen Code styling * Supports different states: default, success, error, warning, loading */ export const AssistantMessage: React.FC = ({ content, timestamp: _timestamp, onFileClick, status = 'default', hideStatusIcon = false, }) => { // Empty content not rendered directly, avoid poor visual experience from only showing ::before dot if (!content || content.trim().length === 0) { return null; } // Map status to CSS class (only for ::before pseudo-element) const getStatusClass = () => { if (hideStatusIcon) { return ''; } switch (status) { case 'success': return 'assistant-message-success'; case 'error': return 'assistant-message-error'; case 'warning': return 'assistant-message-warning'; case 'loading': return 'assistant-message-loading'; default: return 'assistant-message-default'; } }; return (
); };