UNPKG

@assistant-ui/react

Version:

React components for AI chat.

72 lines (71 loc) 2.55 kB
"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