/* Copyright (C) 2023-2026 QuantumNous This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . For commercial licensing, please contact support@quantumnous.com */ import { AlertCircle, AlertTriangle, Settings } from 'lucide-react' import { useTranslation } from 'react-i18next' import { useAuthStore } from '@/stores/auth-store' import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert' import { Button } from '@/components/ui/button' import { MESSAGE_STATUS } from '../constants' import type { Message } from '../types' interface MessageErrorProps { message: Message className?: string } /** * Display error messages using Alert component * Following ai-elements pattern for error handling */ export function MessageError({ message, className = '' }: MessageErrorProps) { const { t } = useTranslation() const user = useAuthStore((s) => s.auth.user) const isAdmin = user?.role != null && user.role >= 10 if (message.status !== MESSAGE_STATUS.ERROR) { return null } const errorContent = message.versions[0]?.content || 'An unknown error occurred' if (message.errorCode === 'model_price_error') { return ( {t('Model Price Not Configured')}

{errorContent}

{isAdmin && ( )}
) } return ( {t('Error')} {errorContent} ) }