import type { ChatMessagePart, TransientPart } from "../../types";
import TextPart from "./TextPart";
import StepPart from "./StepPart";
import StatusPart from "./StatusPart";
import ProductsPart from "./ProductsPart";
interface MessagePartRendererProps {
part: ChatMessagePart;
partComponents?: Record<
string,
React.ComponentType<{ part: ChatMessagePart | TransientPart }>
>;
}
export function MessagePartRenderer({
part,
partComponents,
}: MessagePartRendererProps) {
switch (part.type) {
case "text":
return ;
case "step":
return ;
case "data-products":
if (partComponents?.["data-products"]) {
const Custom = partComponents["data-products"];
return ;
}
return ;
case "source-url":
case "source-document":
if (partComponents?.[part.type]) {
const Custom = partComponents[part.type];
return ;
}
return null;
default:
return null;
}
}
export interface TransientPartRendererProps {
part: TransientPart;
partComponents?: Record<
string,
React.ComponentType<{ part: ChatMessagePart | TransientPart }>
>;
}
export function TransientPartRenderer({
part,
partComponents,
}: TransientPartRendererProps) {
switch (part.type) {
case "data-status":
if (partComponents?.["data-status"]) {
const Custom = partComponents["data-status"];
return ;
}
return ;
default:
return null;
}
}