openhands / src /components /features /chat /error-message.tsx
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
9b906ea verified
Raw
History Blame Contribute Delete
1.34 kB
import React from "react";
import { useTranslation } from "react-i18next";
import ArrowDown from "#/icons/angle-down-solid.svg?react";
import ArrowUp from "#/icons/angle-up-solid.svg?react";
import i18n from "#/i18n";
import { MarkdownRenderer } from "../markdown/markdown-renderer";
interface ErrorMessageProps {
errorId?: string;
defaultMessage: string;
}
export function ErrorMessage({ errorId, defaultMessage }: ErrorMessageProps) {
const { t } = useTranslation("openhands");
const [showDetails, setShowDetails] = React.useState(false);
const hasValidTranslationId = !!errorId && i18n.exists(errorId);
const errorKey = hasValidTranslationId
? errorId
: "CHAT_INTERFACE$AGENT_ERROR_MESSAGE";
return (
<div className="flex flex-col gap-2 my-2 py-2 text-sm w-full">
<div className="font-bold text-danger">
{t(errorKey)}
<button
type="button"
onClick={() => setShowDetails((prev) => !prev)}
className="cursor-pointer text-left"
>
{showDetails ? (
<ArrowUp className="h-4 w-4 ml-2 inline fill-danger" />
) : (
<ArrowDown className="h-4 w-4 ml-2 inline fill-danger" />
)}
</button>
</div>
{showDetails && <MarkdownRenderer>{defaultMessage}</MarkdownRenderer>}
</div>
);
}