Spaces:
Build error
Build error
import React from "react"; | |
import Markdown from "react-markdown"; | |
import remarkGfm from "remark-gfm"; | |
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 { SuccessIndicator } from "./success-indicator"; | |
import { ObservationResultStatus } from "./event-content-helpers/get-observation-result"; | |
interface GenericEventMessageProps { | |
title: React.ReactNode; | |
details: string | React.ReactNode; | |
success?: ObservationResultStatus; | |
} | |
export function GenericEventMessage({ | |
title, | |
details, | |
success, | |
}: GenericEventMessageProps) { | |
const [showDetails, setShowDetails] = React.useState(false); | |
return ( | |
<div className="flex flex-col gap-2 border-l-2 pl-2 my-2 py-2 border-neutral-300 text-sm w-full"> | |
<div className="flex items-center justify-between font-bold text-neutral-300"> | |
<div> | |
{title} | |
{details && ( | |
<button | |
type="button" | |
onClick={() => setShowDetails((prev) => !prev)} | |
className="cursor-pointer text-left" | |
> | |
{showDetails ? ( | |
<ArrowUp className="h-4 w-4 ml-2 inline fill-neutral-300" /> | |
) : ( | |
<ArrowDown className="h-4 w-4 ml-2 inline fill-neutral-300" /> | |
)} | |
</button> | |
)} | |
</div> | |
{success && <SuccessIndicator status={success} />} | |
</div> | |
{showDetails && | |
(typeof details === "string" ? ( | |
<Markdown | |
components={{ | |
code, | |
ul, | |
ol, | |
}} | |
remarkPlugins={[remarkGfm]} | |
> | |
{details} | |
</Markdown> | |
) : ( | |
details | |
))} | |
</div> | |
); | |
} | |