Spaces:
Build error
Build error
import React from "react"; | |
import Markdown from "react-markdown"; | |
import remarkGfm from "remark-gfm"; | |
import { useTranslation } from "react-i18next"; | |
import { code } from "../markdown/code"; | |
import { ol, ul } from "../markdown/list"; | |
import ArrowDown from "#/icons/angle-down-solid.svg?react"; | |
import ArrowUp from "#/icons/angle-up-solid.svg?react"; | |
import i18n from "#/i18n"; | |
interface ErrorMessageProps { | |
errorId?: string; | |
defaultMessage: string; | |
} | |
export function ErrorMessage({ errorId, defaultMessage }: ErrorMessageProps) { | |
const { t } = useTranslation(); | |
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 border-l-2 pl-2 my-2 py-2 border-danger 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 && ( | |
<Markdown | |
components={{ | |
code, | |
ul, | |
ol, | |
}} | |
remarkPlugins={[remarkGfm]} | |
> | |
{defaultMessage} | |
</Markdown> | |
)} | |
</div> | |
); | |
} | |