@assistant-ui/react
Version:
React components for AI chat.
72 lines (71 loc) • 2.55 kB
JavaScript
"use client";
// src/ui/assistant-message.tsx
import { forwardRef, useMemo } from "react";
import { MessagePrimitive } from "../primitives/index.mjs";
import BranchPicker from "./branch-picker.mjs";
import { Avatar } from "./base/avatar.mjs";
import { withDefaults } from "./utils/withDefaults.mjs";
import { useThreadConfig } from "./thread-config.mjs";
import AssistantActionBar from "./assistant-action-bar.mjs";
import ContentPart from "./content-part.mjs";
import { jsx, jsxs } from "react/jsx-runtime";
var AssistantMessage = () => {
return /* @__PURE__ */ jsxs(AssistantMessageRoot, { children: [
/* @__PURE__ */ jsx(AssistantMessageAvatar, {}),
/* @__PURE__ */ jsx(AssistantMessageContent, {}),
/* @__PURE__ */ jsx(BranchPicker, {}),
/* @__PURE__ */ jsx(AssistantActionBar, {})
] });
};
AssistantMessage.displayName = "AssistantMessage";
var AssistantMessageAvatar = () => {
const { assistantAvatar: avatar = { fallback: "A" } } = useThreadConfig();
return /* @__PURE__ */ jsx(Avatar, { ...avatar });
};
var AssistantMessageRoot = withDefaults(MessagePrimitive.Root, {
className: "aui-assistant-message-root"
});
AssistantMessageRoot.displayName = "AssistantMessageRoot";
var AssistantMessageContentWrapper = withDefaults("div", {
className: "aui-assistant-message-content"
});
var AssistantMessageContent = forwardRef(({ components: componentsProp, ...rest }, ref) => {
const { tools, assistantMessage: { components = {} } = {} } = useThreadConfig();
const toolsComponents = useMemo(
() => ({
by_name: !tools ? void 0 : Object.fromEntries(
tools.map((t) => [
t.unstable_tool.toolName,
t.unstable_tool.render
])
),
Fallback: components.ToolFallback
}),
// eslint-disable-next-line react-hooks/exhaustive-deps
[...tools ?? [], components.ToolFallback]
);
return /* @__PURE__ */ jsx(AssistantMessageContentWrapper, { ...rest, ref, children: /* @__PURE__ */ jsx(
MessagePrimitive.Content,
{
components: {
...componentsProp,
Text: componentsProp?.Text ?? components.Text ?? ContentPart.Text,
tools: toolsComponents
}
}
) });
});
AssistantMessageContent.displayName = "AssistantMessageContent";
var exports = {
Root: AssistantMessageRoot,
Avatar: AssistantMessageAvatar,
Content: AssistantMessageContent
};
var assistant_message_default = Object.assign(
AssistantMessage,
exports
);
export {
assistant_message_default as default
};
//# sourceMappingURL=assistant-message.mjs.map