UNPKG

@atlaskit/rovo-agent-components

Version:

This package host public components related to rovo agents, the components here are needed for other public atlaskit packages

129 lines 4.85 kB
/* index.tsx generated by @compiled/babel-plugin v0.39.1 */ import _extends from "@babel/runtime/helpers/extends"; import "./index.compiled.css"; import { ax, ix } from "@compiled/react/runtime"; import React, { useMemo } from 'react'; import { useIntl } from 'react-intl'; import { IconButton } from '@atlaskit/button/new'; import RetryIcon from '@atlaskit/icon/core/retry'; import { Box, Inline, Pressable, Stack } from '@atlaskit/primitives/compiled'; import { AgentChatIcon } from '../../common/ui/agent-chat-icon'; import { BrowseAgentsPill } from '../../common/ui/chat-pill'; import { messages } from './messages'; const styles = { conversationStartersList: "_qtt8glyw _ca0qidpf _u5f3idpf _n3tdidpf _19bvidpf _1bsb1osq", conversationStarterIcon: "_1o9zidpf", conversationStarterText: "_1reo15vq _18m915vq _1bto1l2s _o5721q9c _1o9zkb7n _1ul9idpf", button: "_11c8fhey _2rko12b0 _syazazsu _ca0q12x7 _u5f312x7 _n3td12x7 _19bv12x7 _k48p1wq8 _1bto1l2s _o5721q9c _1o9zkb7n _1bsb1osq _bfhksm61 _irr31dpa _1di6fcek" }; export const getConversationStarters = ({ userDefinedConversationStarters: userDefinedConversationStartersParam, isAgentDefault }) => { const type = 'static'; const customAgentConversationStarters = [{ message: messages.agentEmptyStateSuggestion1, type }, { message: messages.agentEmptyStateSuggestion2, type }, { message: messages.agentEmptyStateSuggestion3, type }]; const userDefinedConversationStarters = userDefinedConversationStartersParam !== null && userDefinedConversationStartersParam !== void 0 ? userDefinedConversationStartersParam : []; const defaultAgentConversationStarters = [{ message: messages.emptyStateSuggestion1, type }, { message: messages.emptyStateSuggestion2, type }, { message: messages.emptyStateSuggestion3, type }]; const getCombinedConversationStarters = () => { const shouldCombine = !isAgentDefault; if (shouldCombine) { // Return user defined suggestions + static fallback suggestions with a max of 3 suggestions (user defined taking precendence over fallback) return [...userDefinedConversationStarters, ...customAgentConversationStarters].slice(0, 3); } return defaultAgentConversationStarters; }; return { userDefinedConversationStarters, customAgentConversationStarters, defaultAgentConversationStarters, combinedConversationStarters: getCombinedConversationStarters() }; }; export const AgentConversationStarters = ({ userDefinedConversationStarters, isAgentDefault, ...props }) => { const { formatMessage } = useIntl(); const { combinedConversationStarters } = useMemo(() => getConversationStarters({ userDefinedConversationStarters, isAgentDefault }), [userDefinedConversationStarters, isAgentDefault]); const starters = useMemo(() => combinedConversationStarters.map(starter => typeof starter.message === 'string' ? { message: starter.message, type: starter.type } : { message: formatMessage(starter.message), type: starter.type }), [combinedConversationStarters, formatMessage]); return /*#__PURE__*/React.createElement(ConversationStarters, _extends({ starters: starters }, props)); }; export const ConversationStarters = ({ starters, onConversationStarterClick, showReloadButton = false, onReloadButtonClick = () => {}, onBrowseAgentsClick }) => { return /*#__PURE__*/React.createElement(Stack, { as: "ul", space: "space.050", xcss: styles.conversationStartersList }, starters.map((starter, index) => { const isLastStarter = index === starters.length - 1; const chatPill = /*#__PURE__*/React.createElement(Box, { as: "li", key: starter.message }, /*#__PURE__*/React.createElement(Pressable, { xcss: styles.button, onClick: () => onConversationStarterClick(starter), testId: "conversation-starter" }, /*#__PURE__*/React.createElement(Inline, { space: "space.150", alignBlock: "center" }, /*#__PURE__*/React.createElement(Box, { xcss: styles.conversationStarterIcon }, /*#__PURE__*/React.createElement(AgentChatIcon, null)), /*#__PURE__*/React.createElement(Box, { xcss: styles.conversationStarterText }, starter.message)))); return isLastStarter && showReloadButton ? /*#__PURE__*/React.createElement(Inline, { space: "space.050", grow: "fill", alignInline: "end", key: starter.message }, chatPill, /*#__PURE__*/React.createElement(IconButton, { icon: RetryIcon, onClick: onReloadButtonClick, appearance: "subtle", label: "" })) : chatPill; }), !!onBrowseAgentsClick && /*#__PURE__*/React.createElement(Box, { as: "li" }, /*#__PURE__*/React.createElement(BrowseAgentsPill, { onClick: onBrowseAgentsClick }))); };