@servicetitan/titan-chatbot-ui-anvil2 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +166 -0
- package/README.md +15 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-help-center.test.d.ts +2 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-help-center.test.d.ts.map +1 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-help-center.test.js +8 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-help-center.test.js.map +1 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-live.test.d.ts +2 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-live.test.d.ts.map +1 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-live.test.js +8 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-live.test.js.map +1 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-titan-chatbot.test.d.ts +2 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-titan-chatbot.test.d.ts.map +1 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-titan-chatbot.test.js +8 -0
- package/dist/components/chatbot/__tests-cy__/chatbot-titan-chatbot.test.js.map +1 -0
- package/dist/components/chatbot/__tests-cy__/chatbot.test.d.ts +2 -0
- package/dist/components/chatbot/__tests-cy__/chatbot.test.d.ts.map +1 -0
- package/dist/components/chatbot/__tests-cy__/chatbot.test.js +8 -0
- package/dist/components/chatbot/__tests-cy__/chatbot.test.js.map +1 -0
- package/dist/components/chatbot/chatbot-to-chat-provider-adapter.d.ts +6 -0
- package/dist/components/chatbot/chatbot-to-chat-provider-adapter.d.ts.map +1 -0
- package/dist/components/chatbot/chatbot-to-chat-provider-adapter.js +21 -0
- package/dist/components/chatbot/chatbot-to-chat-provider-adapter.js.map +1 -0
- package/dist/components/chatbot/chatbot.d.ts +10 -0
- package/dist/components/chatbot/chatbot.d.ts.map +1 -0
- package/dist/components/chatbot/chatbot.js +69 -0
- package/dist/components/chatbot/chatbot.js.map +1 -0
- package/dist/components/chatbot/chatbot.module.less +4 -0
- package/dist/components/chatbot/dialog/__tests-cy__/chatbot-restart-dialog.test.d.ts +2 -0
- package/dist/components/chatbot/dialog/__tests-cy__/chatbot-restart-dialog.test.d.ts.map +1 -0
- package/dist/components/chatbot/dialog/__tests-cy__/chatbot-restart-dialog.test.js +8 -0
- package/dist/components/chatbot/dialog/__tests-cy__/chatbot-restart-dialog.test.js.map +1 -0
- package/dist/components/chatbot/dialog/__tests-cy__/chatbot-restart-link.test.d.ts +2 -0
- package/dist/components/chatbot/dialog/__tests-cy__/chatbot-restart-link.test.d.ts.map +1 -0
- package/dist/components/chatbot/dialog/__tests-cy__/chatbot-restart-link.test.js +8 -0
- package/dist/components/chatbot/dialog/__tests-cy__/chatbot-restart-link.test.js.map +1 -0
- package/dist/components/chatbot/dialog/chatbot-restart-dialog.d.ts +6 -0
- package/dist/components/chatbot/dialog/chatbot-restart-dialog.d.ts.map +1 -0
- package/dist/components/chatbot/dialog/chatbot-restart-dialog.js +20 -0
- package/dist/components/chatbot/dialog/chatbot-restart-dialog.js.map +1 -0
- package/dist/components/chatbot/dialog/chatbot-restart-link.d.ts +4 -0
- package/dist/components/chatbot/dialog/chatbot-restart-link.d.ts.map +1 -0
- package/dist/components/chatbot/dialog/chatbot-restart-link.js +13 -0
- package/dist/components/chatbot/dialog/chatbot-restart-link.js.map +1 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form-guardrail.test.d.ts +2 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form-guardrail.test.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form-guardrail.test.js +8 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form-guardrail.test.js.map +1 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form.test.d.ts +2 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form.test.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form.test.js +8 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form.test.js.map +1 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-popover.test.d.ts +2 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-popover.test.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-popover.test.js +8 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-popover.test.js.map +1 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-session-feedback-modal.test.d.ts +2 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-session-feedback-modal.test.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-session-feedback-modal.test.js +8 -0
- package/dist/components/chatbot/feedback/__tests-cy__/chatbot-session-feedback-modal.test.js.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form-guardrail.d.ts +3 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form-guardrail.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form-guardrail.js +16 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form-guardrail.js.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form.d.ts +3 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form.js +18 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form.js.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-form.module.less +15 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-popover.d.ts +9 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-popover.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-popover.js +61 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-popover.js.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback-popover.module.less +14 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback.d.ts +9 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback.js +17 -0
- package/dist/components/chatbot/feedback/chatbot-message-feedback.js.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-session-feedback-link.d.ts +4 -0
- package/dist/components/chatbot/feedback/chatbot-session-feedback-link.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-session-feedback-link.js +15 -0
- package/dist/components/chatbot/feedback/chatbot-session-feedback-link.js.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-session-feedback-modal.d.ts +5 -0
- package/dist/components/chatbot/feedback/chatbot-session-feedback-modal.d.ts.map +1 -0
- package/dist/components/chatbot/feedback/chatbot-session-feedback-modal.js +25 -0
- package/dist/components/chatbot/feedback/chatbot-session-feedback-modal.js.map +1 -0
- package/dist/components/chatbot/filters/__tests-cy__/chatbot-filters.test.d.ts +2 -0
- package/dist/components/chatbot/filters/__tests-cy__/chatbot-filters.test.d.ts.map +1 -0
- package/dist/components/chatbot/filters/__tests-cy__/chatbot-filters.test.js +8 -0
- package/dist/components/chatbot/filters/__tests-cy__/chatbot-filters.test.js.map +1 -0
- package/dist/components/chatbot/filters/chatbot-filter-button.d.ts +7 -0
- package/dist/components/chatbot/filters/chatbot-filter-button.d.ts.map +1 -0
- package/dist/components/chatbot/filters/chatbot-filter-button.js +39 -0
- package/dist/components/chatbot/filters/chatbot-filter-button.js.map +1 -0
- package/dist/components/chatbot/filters/chatbot-filter.d.ts +8 -0
- package/dist/components/chatbot/filters/chatbot-filter.d.ts.map +1 -0
- package/dist/components/chatbot/filters/chatbot-filter.js +71 -0
- package/dist/components/chatbot/filters/chatbot-filter.js.map +1 -0
- package/dist/components/chatbot/filters/chatbot-filter.module.css +43 -0
- package/dist/components/chatbot/filters/chatbot-filters.d.ts +5 -0
- package/dist/components/chatbot/filters/chatbot-filters.d.ts.map +1 -0
- package/dist/components/chatbot/filters/chatbot-filters.js +11 -0
- package/dist/components/chatbot/filters/chatbot-filters.js.map +1 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-links.test.d.ts +2 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-links.test.d.ts.map +1 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-links.test.js +8 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-links.test.js.map +1 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-answer-readonly.test.d.ts +2 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-answer-readonly.test.d.ts.map +1 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-answer-readonly.test.js +8 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-answer-readonly.test.js.map +1 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-answer.test.d.ts +2 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-answer.test.d.ts.map +1 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-answer.test.js +8 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-answer.test.js.map +1 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-typing.test.d.ts +2 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-typing.test.d.ts.map +1 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-typing.test.js +8 -0
- package/dist/components/chatbot/messages/__tests-cy__/chatbot-message-typing.test.js.map +1 -0
- package/dist/components/chatbot/messages/chatbot-links.d.ts +15 -0
- package/dist/components/chatbot/messages/chatbot-links.d.ts.map +1 -0
- package/dist/components/chatbot/messages/chatbot-links.js +21 -0
- package/dist/components/chatbot/messages/chatbot-links.js.map +1 -0
- package/dist/components/chatbot/messages/chatbot-links.module.less +24 -0
- package/dist/components/chatbot/messages/chatbot-message-agent-footer.d.ts +8 -0
- package/dist/components/chatbot/messages/chatbot-message-agent-footer.d.ts.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-agent-footer.js +13 -0
- package/dist/components/chatbot/messages/chatbot-message-agent-footer.js.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-answer-readonly.d.ts +6 -0
- package/dist/components/chatbot/messages/chatbot-message-answer-readonly.d.ts.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-answer-readonly.js +17 -0
- package/dist/components/chatbot/messages/chatbot-message-answer-readonly.js.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-answer.d.ts +6 -0
- package/dist/components/chatbot/messages/chatbot-message-answer.d.ts.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-answer.js +29 -0
- package/dist/components/chatbot/messages/chatbot-message-answer.js.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-answer.module.less +3 -0
- package/dist/components/chatbot/messages/chatbot-message-timeout.d.ts +6 -0
- package/dist/components/chatbot/messages/chatbot-message-timeout.d.ts.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-timeout.js +17 -0
- package/dist/components/chatbot/messages/chatbot-message-timeout.js.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-typing.d.ts +8 -0
- package/dist/components/chatbot/messages/chatbot-message-typing.d.ts.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-typing.js +27 -0
- package/dist/components/chatbot/messages/chatbot-message-typing.js.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-welcome.d.ts +3 -0
- package/dist/components/chatbot/messages/chatbot-message-welcome.d.ts.map +1 -0
- package/dist/components/chatbot/messages/chatbot-message-welcome.js +4 -0
- package/dist/components/chatbot/messages/chatbot-message-welcome.js.map +1 -0
- package/dist/components/chatbot/templates/chatbot-message-template-agent-readonly.d.ts +6 -0
- package/dist/components/chatbot/templates/chatbot-message-template-agent-readonly.d.ts.map +1 -0
- package/dist/components/chatbot/templates/chatbot-message-template-agent-readonly.js +12 -0
- package/dist/components/chatbot/templates/chatbot-message-template-agent-readonly.js.map +1 -0
- package/dist/components/chatbot/templates/chatbot-message-template-agent.d.ts +6 -0
- package/dist/components/chatbot/templates/chatbot-message-template-agent.d.ts.map +1 -0
- package/dist/components/chatbot/templates/chatbot-message-template-agent.js +10 -0
- package/dist/components/chatbot/templates/chatbot-message-template-agent.js.map +1 -0
- package/dist/components/chatbot/templates/chatbot-message-template-user-readonly.d.ts +6 -0
- package/dist/components/chatbot/templates/chatbot-message-template-user-readonly.d.ts.map +1 -0
- package/dist/components/chatbot/templates/chatbot-message-template-user-readonly.js +7 -0
- package/dist/components/chatbot/templates/chatbot-message-template-user-readonly.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/package.json +59 -0
- package/src/components/chatbot/__tests-cy__/chatbot-help-center.test.tsx +9 -0
- package/src/components/chatbot/__tests-cy__/chatbot-live.test.tsx +7 -0
- package/src/components/chatbot/__tests-cy__/chatbot-titan-chatbot.test.tsx +9 -0
- package/src/components/chatbot/__tests-cy__/chatbot.test.tsx +7 -0
- package/src/components/chatbot/chatbot-to-chat-provider-adapter.tsx +36 -0
- package/src/components/chatbot/chatbot.module.less +4 -0
- package/src/components/chatbot/chatbot.module.less.d.ts +3 -0
- package/src/components/chatbot/chatbot.tsx +99 -0
- package/src/components/chatbot/dialog/__tests-cy__/chatbot-restart-dialog.test.tsx +9 -0
- package/src/components/chatbot/dialog/__tests-cy__/chatbot-restart-link.test.tsx +9 -0
- package/src/components/chatbot/dialog/chatbot-restart-dialog.tsx +41 -0
- package/src/components/chatbot/dialog/chatbot-restart-link.tsx +29 -0
- package/src/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form-guardrail.test.tsx +10 -0
- package/src/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-form.test.tsx +9 -0
- package/src/components/chatbot/feedback/__tests-cy__/chatbot-message-feedback-popover.test.tsx +9 -0
- package/src/components/chatbot/feedback/__tests-cy__/chatbot-session-feedback-modal.test.tsx +9 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback-form-guardrail.tsx +40 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback-form.module.less +15 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback-form.module.less.d.ts +4 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback-form.tsx +76 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback-popover.module.less +14 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback-popover.module.less.d.ts +5 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback-popover.tsx +207 -0
- package/src/components/chatbot/feedback/chatbot-message-feedback.tsx +27 -0
- package/src/components/chatbot/feedback/chatbot-session-feedback-link.tsx +27 -0
- package/src/components/chatbot/feedback/chatbot-session-feedback-modal.tsx +95 -0
- package/src/components/chatbot/filters/__tests-cy__/chatbot-filters.test.tsx +9 -0
- package/src/components/chatbot/filters/chatbot-filter-button.tsx +58 -0
- package/src/components/chatbot/filters/chatbot-filter.module.css +43 -0
- package/src/components/chatbot/filters/chatbot-filter.module.css.d.ts +5 -0
- package/src/components/chatbot/filters/chatbot-filter.tsx +166 -0
- package/src/components/chatbot/filters/chatbot-filters.tsx +17 -0
- package/src/components/chatbot/messages/__tests-cy__/chatbot-links.test.tsx +9 -0
- package/src/components/chatbot/messages/__tests-cy__/chatbot-message-answer-readonly.test.tsx +9 -0
- package/src/components/chatbot/messages/__tests-cy__/chatbot-message-answer.test.tsx +9 -0
- package/src/components/chatbot/messages/__tests-cy__/chatbot-message-typing.test.tsx +9 -0
- package/src/components/chatbot/messages/chatbot-links.module.less +24 -0
- package/src/components/chatbot/messages/chatbot-links.module.less.d.ts +5 -0
- package/src/components/chatbot/messages/chatbot-links.tsx +73 -0
- package/src/components/chatbot/messages/chatbot-message-agent-footer.tsx +35 -0
- package/src/components/chatbot/messages/chatbot-message-answer-readonly.tsx +39 -0
- package/src/components/chatbot/messages/chatbot-message-answer.module.less +3 -0
- package/src/components/chatbot/messages/chatbot-message-answer.module.less.d.ts +3 -0
- package/src/components/chatbot/messages/chatbot-message-answer.tsx +55 -0
- package/src/components/chatbot/messages/chatbot-message-timeout.tsx +20 -0
- package/src/components/chatbot/messages/chatbot-message-typing.tsx +43 -0
- package/src/components/chatbot/messages/chatbot-message-welcome.tsx +16 -0
- package/src/components/chatbot/templates/chatbot-message-template-agent-readonly.tsx +25 -0
- package/src/components/chatbot/templates/chatbot-message-template-agent.tsx +25 -0
- package/src/components/chatbot/templates/chatbot-message-template-user-readonly.tsx +16 -0
- package/src/cypress.d.ts +10 -0
- package/src/index.ts +5 -0
- package/tsconfig.json +25 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { MultilineText } from '@servicetitan/titan-chat-ui-anvil2';
|
|
2
|
+
import { ChatMessageModelText } from '@servicetitan/titan-chat-ui-common';
|
|
3
|
+
import { Models } from '@servicetitan/titan-chatbot-api';
|
|
4
|
+
import classNames from 'classnames';
|
|
5
|
+
import { observer } from 'mobx-react';
|
|
6
|
+
import { FC, Fragment, useMemo } from 'react';
|
|
7
|
+
import { ChatbotLinks } from './chatbot-links';
|
|
8
|
+
import * as Styles from './chatbot-message-answer.module.less';
|
|
9
|
+
|
|
10
|
+
export const ChatbotMessageAnswerReadonly: FC<{ message: ChatMessageModelText }> = observer(
|
|
11
|
+
({ message }) => {
|
|
12
|
+
const linkProps = useMemo(
|
|
13
|
+
() => ({
|
|
14
|
+
primary: false,
|
|
15
|
+
className: classNames(Styles.link, 'm-block-1'),
|
|
16
|
+
}),
|
|
17
|
+
[]
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
const chatbotMessageData = useMemo(
|
|
21
|
+
() => message?.data as Models.IBotMessageWithFeedback,
|
|
22
|
+
[message]
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<Fragment>
|
|
27
|
+
<MultilineText text={message.message} className="m-block-1" />
|
|
28
|
+
{chatbotMessageData && (
|
|
29
|
+
<ChatbotLinks
|
|
30
|
+
links={chatbotMessageData.scoredUrls ?? []}
|
|
31
|
+
seeMoreLabel="Learn more"
|
|
32
|
+
seeLessLabel="Learn more"
|
|
33
|
+
linkProps={linkProps}
|
|
34
|
+
/>
|
|
35
|
+
)}
|
|
36
|
+
</Fragment>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
);
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { useDependencies } from '@servicetitan/react-ioc';
|
|
2
|
+
import { MultilineText } from '@servicetitan/titan-chat-ui-anvil2';
|
|
3
|
+
import { ChatMessageModelText } from '@servicetitan/titan-chat-ui-common';
|
|
4
|
+
import { CHATBOT_UI_STORE_TOKEN, Models } from '@servicetitan/titan-chatbot-api';
|
|
5
|
+
import classNames from 'classnames';
|
|
6
|
+
import { observer } from 'mobx-react';
|
|
7
|
+
import { FC, Fragment, useCallback, useMemo } from 'react';
|
|
8
|
+
import { ChatbotLinks } from './chatbot-links';
|
|
9
|
+
import * as Styles from './chatbot-message-answer.module.less';
|
|
10
|
+
|
|
11
|
+
export const ChatbotMessageAnswer: FC<{ message: ChatMessageModelText }> = observer(
|
|
12
|
+
({ message }) => {
|
|
13
|
+
const [chatbotUiStore] = useDependencies(CHATBOT_UI_STORE_TOKEN);
|
|
14
|
+
const chatbotMessageData = useMemo(
|
|
15
|
+
() => message?.data as Models.IBotMessageWithFeedback,
|
|
16
|
+
[message]
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
const handleToggleLinks = useCallback(() => {
|
|
20
|
+
if (chatbotUiStore.messages.at(-1)?.id !== message.id) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
setTimeout(() => {
|
|
24
|
+
chatbotUiStore.triggerScroll();
|
|
25
|
+
}, 100);
|
|
26
|
+
}, [message.id, chatbotUiStore]);
|
|
27
|
+
|
|
28
|
+
const linkProps = useMemo(
|
|
29
|
+
() => ({
|
|
30
|
+
primary: false,
|
|
31
|
+
className: classNames(Styles.link, 'm-block-1'),
|
|
32
|
+
}),
|
|
33
|
+
[]
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
return (
|
|
37
|
+
<Fragment>
|
|
38
|
+
<MultilineText
|
|
39
|
+
text={message.message}
|
|
40
|
+
className="m-block-1"
|
|
41
|
+
data-cy="titan-chatbot-message-answer"
|
|
42
|
+
/>
|
|
43
|
+
{chatbotMessageData && (
|
|
44
|
+
<ChatbotLinks
|
|
45
|
+
links={chatbotMessageData.scoredUrls ?? []}
|
|
46
|
+
onToggle={handleToggleLinks}
|
|
47
|
+
seeMoreLabel="Learn more"
|
|
48
|
+
seeLessLabel="Learn less"
|
|
49
|
+
linkProps={linkProps}
|
|
50
|
+
/>
|
|
51
|
+
)}
|
|
52
|
+
</Fragment>
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { useDependencies } from '@servicetitan/react-ioc';
|
|
2
|
+
import { MessageTimeout } from '@servicetitan/titan-chat-ui-anvil2';
|
|
3
|
+
import { ChatMessageModelTimeout } from '@servicetitan/titan-chat-ui-common';
|
|
4
|
+
import { CHATBOT_UI_STORE_TOKEN } from '@servicetitan/titan-chatbot-api';
|
|
5
|
+
import { observer } from 'mobx-react';
|
|
6
|
+
import { FC, useCallback } from 'react';
|
|
7
|
+
|
|
8
|
+
export const ChatbotMessageTimeout: FC<{ message: ChatMessageModelTimeout }> = observer(() => {
|
|
9
|
+
const [chatbotUiStore] = useDependencies(CHATBOT_UI_STORE_TOKEN);
|
|
10
|
+
|
|
11
|
+
const handleResume = useCallback(() => {
|
|
12
|
+
chatbotUiStore.restartTimers();
|
|
13
|
+
}, [chatbotUiStore]);
|
|
14
|
+
|
|
15
|
+
const handleReset = useCallback(() => {
|
|
16
|
+
chatbotUiStore.restart();
|
|
17
|
+
}, [chatbotUiStore]);
|
|
18
|
+
|
|
19
|
+
return <MessageTimeout onResume={handleResume} onReset={handleReset} />;
|
|
20
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Text } from '@servicetitan/anvil2';
|
|
2
|
+
import {
|
|
3
|
+
IMessageTypingProps,
|
|
4
|
+
MessageAgent,
|
|
5
|
+
MessageTyping,
|
|
6
|
+
} from '@servicetitan/titan-chat-ui-anvil2';
|
|
7
|
+
import { FC, useEffect, useMemo, useState } from 'react';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Typing message for chatbot. Shows three dots that are blinking, after 10 and 20 seconds shows a messages
|
|
11
|
+
* that the chatbot is still working instead of the dots.
|
|
12
|
+
*/
|
|
13
|
+
export const ChatbotMessageTyping: FC<IMessageTypingProps> = ({ avatar }) => {
|
|
14
|
+
const [timer, setTimer] = useState(0);
|
|
15
|
+
const [dots, setDots] = useState('');
|
|
16
|
+
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
const interval = setInterval(() => setTimer(prev => prev + 1), 1000);
|
|
19
|
+
return () => clearInterval(interval);
|
|
20
|
+
}, []);
|
|
21
|
+
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
setDots(() => '.'.repeat((timer % 3) + 1));
|
|
24
|
+
}, [timer]);
|
|
25
|
+
|
|
26
|
+
const dotsStyle = useMemo(() => ({ width: '1rem' }), []);
|
|
27
|
+
|
|
28
|
+
if (timer < 10) {
|
|
29
|
+
return <MessageTyping avatar={avatar} />;
|
|
30
|
+
}
|
|
31
|
+
return (
|
|
32
|
+
<MessageAgent avatar={avatar}>
|
|
33
|
+
<Text>
|
|
34
|
+
{timer < 20
|
|
35
|
+
? 'Looking for the final details'
|
|
36
|
+
: 'This is taking longer than usual, please give me a little bit more time'}
|
|
37
|
+
<span className="d-ib" style={dotsStyle}>
|
|
38
|
+
{dots}
|
|
39
|
+
</span>
|
|
40
|
+
</Text>
|
|
41
|
+
</MessageAgent>
|
|
42
|
+
);
|
|
43
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Text } from '@servicetitan/anvil2';
|
|
2
|
+
import { FC } from 'react';
|
|
3
|
+
|
|
4
|
+
export const ChatbotMessageWelcome: FC = () => (
|
|
5
|
+
<Text>
|
|
6
|
+
Hi there! I’m Titan, an AI chatbot.
|
|
7
|
+
<br />
|
|
8
|
+
<br />
|
|
9
|
+
<b>Have a question?</b> Ask me anything about how ServiceTitan works.
|
|
10
|
+
<br />
|
|
11
|
+
<b>Need help?</b> If I can’t solve your issue, I’ll guide you through submitting a support
|
|
12
|
+
case.
|
|
13
|
+
<br />
|
|
14
|
+
Let’s get started - how can I assist you today?
|
|
15
|
+
</Text>
|
|
16
|
+
);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { MessageAgent, MessageFooter, useAvatarProps } from '@servicetitan/titan-chat-ui-anvil2';
|
|
2
|
+
import { ChatMessageModelBase, getFirstName } from '@servicetitan/titan-chat-ui-common';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
4
|
+
import { FC, PropsWithChildren, useMemo } from 'react';
|
|
5
|
+
|
|
6
|
+
export const ChatbotMessageTemplateAgentReadonly: FC<
|
|
7
|
+
PropsWithChildren<{
|
|
8
|
+
message: ChatMessageModelBase;
|
|
9
|
+
}>
|
|
10
|
+
> = observer(({ children, message }) => {
|
|
11
|
+
const {
|
|
12
|
+
participant: { icon, name },
|
|
13
|
+
} = message;
|
|
14
|
+
const firstName = useMemo(() => getFirstName(name), [name]);
|
|
15
|
+
const avatarProps = useAvatarProps(name, icon);
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<MessageAgent
|
|
19
|
+
avatar={avatarProps}
|
|
20
|
+
messageFooter={<MessageFooter name={firstName} timestamp={message.timestamp} />}
|
|
21
|
+
>
|
|
22
|
+
{children}
|
|
23
|
+
</MessageAgent>
|
|
24
|
+
);
|
|
25
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { MessageAgent, useAvatarProps } from '@servicetitan/titan-chat-ui-anvil2';
|
|
2
|
+
import { ChatMessageModelBase } from '@servicetitan/titan-chat-ui-common';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
4
|
+
import { FC, PropsWithChildren } from 'react';
|
|
5
|
+
import { ChatbotMessageAgentFooter } from '../messages/chatbot-message-agent-footer';
|
|
6
|
+
|
|
7
|
+
export const ChatbotMessageTemplateAgent: FC<
|
|
8
|
+
PropsWithChildren<{
|
|
9
|
+
message: ChatMessageModelBase;
|
|
10
|
+
}>
|
|
11
|
+
> = observer(({ children, message }) => {
|
|
12
|
+
const {
|
|
13
|
+
participant: { icon, name },
|
|
14
|
+
} = message;
|
|
15
|
+
const avatarProps = useAvatarProps(name, icon);
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<MessageAgent
|
|
19
|
+
avatar={avatarProps}
|
|
20
|
+
messageFooter={<ChatbotMessageAgentFooter message={message} />}
|
|
21
|
+
>
|
|
22
|
+
{children}
|
|
23
|
+
</MessageAgent>
|
|
24
|
+
);
|
|
25
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { MessageFooter, MessageUser } from '@servicetitan/titan-chat-ui-anvil2';
|
|
2
|
+
import { ChatMessageModelBase } from '@servicetitan/titan-chat-ui-common';
|
|
3
|
+
import { observer } from 'mobx-react';
|
|
4
|
+
import { FC, PropsWithChildren } from 'react';
|
|
5
|
+
|
|
6
|
+
export const ChatbotMessageTemplateUserReadonly: FC<
|
|
7
|
+
PropsWithChildren<{
|
|
8
|
+
message: ChatMessageModelBase;
|
|
9
|
+
}>
|
|
10
|
+
> = observer(({ children, message }) => {
|
|
11
|
+
return (
|
|
12
|
+
<MessageUser messageFooter={<MessageFooter timestamp={message.timestamp} />}>
|
|
13
|
+
{children}
|
|
14
|
+
</MessageUser>
|
|
15
|
+
);
|
|
16
|
+
});
|
package/src/cypress.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// eslint-disable-next-line spaced-comment
|
|
2
|
+
/// <reference types="cypress" />
|
|
3
|
+
declare namespace Cypress {
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5
|
+
interface Chainable<Subject = any> {
|
|
6
|
+
getCy<E extends Node = HTMLElement>(value: string): Chainable<JQuery<E>>;
|
|
7
|
+
getCy2<E extends Node = HTMLElement>(value: string): Chainable<JQuery<E>>;
|
|
8
|
+
getAnvil<E extends Node = HTMLElement>(value: string, extra?: string): Chainable<JQuery<E>>;
|
|
9
|
+
}
|
|
10
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from '@servicetitan/titan-chat-ui-anvil2';
|
|
2
|
+
export { Chatbot } from './components/chatbot/chatbot';
|
|
3
|
+
export { ChatbotLinks } from './components/chatbot/messages/chatbot-links';
|
|
4
|
+
export { ChatbotMessageAgentFooter } from './components/chatbot/messages/chatbot-message-agent-footer';
|
|
5
|
+
export { ChatbotSessionFeedbackLink } from './components/chatbot/feedback/chatbot-session-feedback-link';
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "@servicetitan/startup/tsconfig/base",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"composite": true,
|
|
5
|
+
"outDir": "dist",
|
|
6
|
+
"rootDir": "src",
|
|
7
|
+
"jsx": "react-jsx",
|
|
8
|
+
"moduleResolution": "bundler"
|
|
9
|
+
},
|
|
10
|
+
"include": ["src/**/*"],
|
|
11
|
+
"exclude": [
|
|
12
|
+
"node_modules"
|
|
13
|
+
],
|
|
14
|
+
"references": [
|
|
15
|
+
{
|
|
16
|
+
"path": "../titan-chat-ui-anvil2"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"path": "../titan-chatbot-ui-cypress"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"path": "../titan-chat-ui-common"
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|