"use client"; import type { FC } from "react"; import { MessagePrimitiveParts as MessagePrimitivePartsBase, MessagePartComponent as MessagePartComponentBase, MessagePrimitivePartByIndex as MessagePrimitivePartByIndexBase, messagePartsDefaultComponents, } from "@assistant-ui/core/react"; import { MessagePartPrimitiveText } from "../messagePart/MessagePartText"; import { MessagePartPrimitiveImage } from "../messagePart/MessagePartImage"; import { MessagePartPrimitiveInProgress } from "../messagePart/MessagePartInProgress"; const webDefaultComponents = { ...messagePartsDefaultComponents, Text: () => (

{" \u25CF"}

), Image: () => , } satisfies MessagePrimitiveParts.Props["components"]; export namespace MessagePrimitiveParts { export type Props = MessagePrimitivePartsBase.Props; } /** * Renders the parts of a message with web-specific default components. */ export const MessagePrimitiveParts: FC = ( props, ) => { if ("children" in props) { return ( {props.children} ); } const { components, ...rest } = props; const merged = components ? { Text: components.Text ?? webDefaultComponents.Text, Image: components.Image ?? webDefaultComponents.Image, Reasoning: components.Reasoning ?? messagePartsDefaultComponents.Reasoning, Source: components.Source ?? messagePartsDefaultComponents.Source, File: components.File ?? messagePartsDefaultComponents.File, Unstable_Audio: components.Unstable_Audio ?? messagePartsDefaultComponents.Unstable_Audio, ...("ChainOfThought" in components ? { ChainOfThought: components.ChainOfThought } : { tools: components.tools, data: components.data, ToolGroup: components.ToolGroup ?? messagePartsDefaultComponents.ToolGroup, ReasoningGroup: components.ReasoningGroup ?? messagePartsDefaultComponents.ReasoningGroup, }), Empty: components.Empty, Quote: components.Quote, } : webDefaultComponents; return ; }; MessagePrimitiveParts.displayName = "MessagePrimitive.Parts"; // Re-export everything else unchanged export { MessagePartComponentBase as MessagePartComponent, MessagePrimitivePartByIndexBase as MessagePrimitivePartByIndex, };