@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
JavaScript
/* 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
})));
};