@servicetitan/titan-chat-ui-anvil2 3.1.4 → 3.2.0

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 CHANGED
@@ -1,3 +1,15 @@
1
+ # v3.2.0 (Tue Sep 09 2025)
2
+
3
+ #### 🚀 Enhancement
4
+
5
+ - SPA-7282: Support Rendering of Markups in Chatbot Responses [#53](https://github.com/servicetitan/titan-chatbot-client/pull/53) ([@AlexYarmolchuk](https://github.com/AlexYarmolchuk))
6
+
7
+ #### Authors: 1
8
+
9
+ - Alexandr Yarmolchuk ([@AlexYarmolchuk](https://github.com/AlexYarmolchuk))
10
+
11
+ ---
12
+
1
13
  # v3.1.3 (Fri Aug 22 2025)
2
14
 
3
15
  #### 🐛 Bug Fix
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=message-content-text.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-content-text.test.d.ts","sourceRoot":"","sources":["../../../../src/components/message-content/__tests-cy__/message-content-text.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { runMessageContentTextSharedTests } from '@servicetitan/cypress-shared';
2
+ import { MessageContentText } from '../message-content-text';
3
+ describe('MessageContentText', () => {
4
+ runMessageContentTextSharedTests(MessageContentText);
5
+ });
6
+ //# sourceMappingURL=message-content-text.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-content-text.test.js","sourceRoot":"","sources":["../../../../src/components/message-content/__tests-cy__/message-content-text.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAChC,gCAAgC,CAAC,kBAAkB,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import { ChatMessageModelText, ChatMessageModelWelcome } from '@servicetitan/titan-chat-ui-common';
2
2
  import { FC } from 'react';
3
3
  interface IMessageContentTextProps {
4
+ className?: string;
4
5
  message: ChatMessageModelText | ChatMessageModelWelcome;
6
+ ['data-cy']?: string;
5
7
  }
6
8
  export declare const MessageContentText: FC<IMessageContentTextProps>;
7
9
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"message-content-text.d.ts","sourceRoot":"","sources":["../../../src/components/message-content/message-content-text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAEnG,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAG3B,UAAU,wBAAwB;IAC9B,OAAO,EAAE,oBAAoB,GAAG,uBAAuB,CAAC;CAC3D;AAED,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,wBAAwB,CAE1D,CAAC"}
1
+ {"version":3,"file":"message-content-text.d.ts","sourceRoot":"","sources":["../../../src/components/message-content/message-content-text.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAGnG,OAAO,EAAE,EAAE,EAAsB,MAAM,OAAO,CAAC;AAK/C,UAAU,wBAAwB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,oBAAoB,GAAG,uBAAuB,CAAC;IACxD,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,wBAAwB,CA0F3D,CAAC"}
@@ -1,7 +1,43 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Link, Text } from '@servicetitan/anvil2';
3
+ import DOMpurify from 'dompurify';
2
4
  import { observer } from 'mobx-react';
3
- import { MultilineText } from '../common/multiline-text';
4
- export const MessageContentText = observer(({ message }) => {
5
- return _jsx(MultilineText, { text: message.message });
5
+ import { useMemo } from 'react';
6
+ import Markdown from 'react-markdown';
7
+ import rehypeRaw from 'rehype-raw';
8
+ import remarkGfm from 'remark-gfm';
9
+ export const MessageContentText = observer(({ className, message, ...rest }) => {
10
+ var _a;
11
+ const dataCy = (_a = rest['data-cy']) !== null && _a !== void 0 ? _a : 'titan-chat-text';
12
+ const markdownComponents = useMemo(() => ({
13
+ code({ children }) {
14
+ return (_jsx(Text, { variant: "body", className: "c-primary bg-stronger border-radius-small", style: { fontFamily: 'monospace', fontSize: '0.85em' }, inline: true, children: children }));
15
+ },
16
+ u({ children }) {
17
+ return _jsx("u", { children: children });
18
+ },
19
+ a({ children, href }) {
20
+ return (_jsx(Link, { href: href, target: "_blank", appearance: "primary", rel: "noopener noreferrer", children: children }));
21
+ },
22
+ h1({ children }) {
23
+ return (_jsx(Text, { variant: "headline", el: "h1", size: "xlarge", children: children }));
24
+ },
25
+ h2({ children }) {
26
+ return (_jsx(Text, { variant: "headline", el: "h2", size: "large", children: children }));
27
+ },
28
+ h3({ children }) {
29
+ return (_jsx(Text, { variant: "headline", el: "h3", size: "medium", children: children }));
30
+ },
31
+ h4({ children }) {
32
+ return (_jsx(Text, { variant: "headline", el: "h4", size: "small", children: children }));
33
+ },
34
+ h5({ children }) {
35
+ return (_jsx(Text, { variant: "headline", el: "h5", size: "small", children: children }));
36
+ },
37
+ h6({ children }) {
38
+ return (_jsx(Text, { variant: "headline", el: "h6", size: "small", children: children }));
39
+ },
40
+ }), []);
41
+ return (_jsx(Text, { variant: "body", className: className, "data-cy": dataCy, children: _jsx(Markdown, { components: markdownComponents, rehypePlugins: [rehypeRaw], remarkPlugins: [remarkGfm], children: DOMpurify.sanitize(message.message) }) }));
6
42
  });
7
43
  //# sourceMappingURL=message-content-text.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-content-text.js","sourceRoot":"","sources":["../../../src/components/message-content/message-content-text.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMzD,MAAM,CAAC,MAAM,kBAAkB,GAAiC,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IACrF,OAAO,KAAC,aAAa,IAAC,IAAI,EAAE,OAAO,CAAC,OAAO,GAAI,CAAC;AACpD,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"message-content-text.js","sourceRoot":"","sources":["../../../src/components/message-content/message-content-text.tsx"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -10,5 +10,6 @@ export { MessageAvatar, IMessageAvatarProps } from './components/messages/messag
10
10
  export { MessageFooter, IMessageFooterProps } from './components/messages/message-footer';
11
11
  export { useAvatarProps } from './components/messages/use-avatar-props';
12
12
  export { MultilineText } from './components/common/multiline-text';
13
+ export { MessageContentText } from './components/message-content/message-content-text';
13
14
  export { ChatInputStore } from './stores/chat-input.store';
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC"}
package/dist/index.js CHANGED
@@ -10,5 +10,6 @@ export { MessageAvatar } from './components/messages/message-avatar';
10
10
  export { MessageFooter } from './components/messages/message-footer';
11
11
  export { useAvatarProps } from './components/messages/use-avatar-props';
12
12
  export { MultilineText } from './components/common/multiline-text';
13
+ export { MessageContentText } from './components/message-content/message-content-text';
13
14
  export { ChatInputStore } from './stores/chat-input.store';
14
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAc,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAsB,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,WAAW,EAAqB,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,aAAa,EAAuB,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAuB,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAwB,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAuB,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAuB,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAc,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAsB,MAAM,qCAAqC,CAAC;AACvF,OAAO,EAAE,WAAW,EAAqB,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,aAAa,EAAuB,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAuB,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAwB,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAuB,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAuB,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/titan-chat-ui-anvil2",
3
- "version": "3.1.4",
3
+ "version": "3.2.0",
4
4
  "description": "Chat experience UI package (Anvil2 version)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,9 +17,13 @@
17
17
  "push:local": "yalc push"
18
18
  },
19
19
  "dependencies": {
20
- "@servicetitan/titan-chat-ui-common": "^3.1.4",
20
+ "@servicetitan/titan-chat-ui-common": "^3.2.0",
21
+ "dompurify": "^3.2.6",
21
22
  "lodash": "4.17.21",
22
- "nanoid": "^5.1.5"
23
+ "nanoid": "^5.1.5",
24
+ "react-markdown": "^10.1.0",
25
+ "rehype-raw": "^7.0.0",
26
+ "remark-gfm": "^4.0.1"
23
27
  },
24
28
  "peerDependencies": {
25
29
  "@servicetitan/anvil2": ">=1.16.0",
@@ -34,7 +38,7 @@
34
38
  "react-dom": ">=18"
35
39
  },
36
40
  "devDependencies": {
37
- "@servicetitan/cypress-shared": "^3.1.4",
41
+ "@servicetitan/cypress-shared": "^3.2.0",
38
42
  "cypress": "^14.3.2"
39
43
  },
40
44
  "keywords": [
@@ -47,5 +51,5 @@
47
51
  "cli": {
48
52
  "webpack": false
49
53
  },
50
- "gitHead": "35fca60717ca9d384fe20fd319471a9d728db23d"
54
+ "gitHead": "5f2fb6065c0498c946b8e67732383cab10a07a18"
51
55
  }
@@ -0,0 +1,6 @@
1
+ import { runMessageContentTextSharedTests } from '@servicetitan/cypress-shared';
2
+ import { MessageContentText } from '../message-content-text';
3
+
4
+ describe('MessageContentText', () => {
5
+ runMessageContentTextSharedTests(MessageContentText);
6
+ });
@@ -1,12 +1,108 @@
1
+ import { Link, Text } from '@servicetitan/anvil2';
1
2
  import { ChatMessageModelText, ChatMessageModelWelcome } from '@servicetitan/titan-chat-ui-common';
3
+ import DOMpurify from 'dompurify';
2
4
  import { observer } from 'mobx-react';
3
- import { FC } from 'react';
4
- import { MultilineText } from '../common/multiline-text';
5
+ import { FC, ReactNode, useMemo } from 'react';
6
+ import Markdown, { Components } from 'react-markdown';
7
+ import rehypeRaw from 'rehype-raw';
8
+ import remarkGfm from 'remark-gfm';
5
9
 
6
10
  interface IMessageContentTextProps {
11
+ className?: string;
7
12
  message: ChatMessageModelText | ChatMessageModelWelcome;
13
+ ['data-cy']?: string;
8
14
  }
9
15
 
10
- export const MessageContentText: FC<IMessageContentTextProps> = observer(({ message }) => {
11
- return <MultilineText text={message.message} />;
12
- });
16
+ type Node = { children: ReactNode } & { [key: string]: any };
17
+
18
+ export const MessageContentText: FC<IMessageContentTextProps> = observer(
19
+ ({ className, message, ...rest }) => {
20
+ const dataCy = rest['data-cy'] ?? 'titan-chat-text';
21
+ const markdownComponents: Components = useMemo(
22
+ () => ({
23
+ code({ children }: Node) {
24
+ return (
25
+ <Text
26
+ variant="body"
27
+ className="c-primary bg-stronger border-radius-small"
28
+ style={{ fontFamily: 'monospace', fontSize: '0.85em' }}
29
+ inline
30
+ >
31
+ {children}
32
+ </Text>
33
+ );
34
+ },
35
+ u({ children }: Node) {
36
+ return <u>{children}</u>;
37
+ },
38
+ a({ children, href }: Node & { href?: string }) {
39
+ return (
40
+ <Link
41
+ href={href}
42
+ target="_blank"
43
+ appearance="primary"
44
+ rel="noopener noreferrer"
45
+ >
46
+ {children}
47
+ </Link>
48
+ );
49
+ },
50
+ h1({ children }: Node) {
51
+ return (
52
+ <Text variant="headline" el="h1" size="xlarge">
53
+ {children}
54
+ </Text>
55
+ );
56
+ },
57
+ h2({ children }: Node) {
58
+ return (
59
+ <Text variant="headline" el="h2" size="large">
60
+ {children}
61
+ </Text>
62
+ );
63
+ },
64
+ h3({ children }: Node) {
65
+ return (
66
+ <Text variant="headline" el="h3" size="medium">
67
+ {children}
68
+ </Text>
69
+ );
70
+ },
71
+ h4({ children }: Node) {
72
+ return (
73
+ <Text variant="headline" el="h4" size="small">
74
+ {children}
75
+ </Text>
76
+ );
77
+ },
78
+ h5({ children }: Node) {
79
+ return (
80
+ <Text variant="headline" el="h5" size="small">
81
+ {children}
82
+ </Text>
83
+ );
84
+ },
85
+ h6({ children }: Node) {
86
+ return (
87
+ <Text variant="headline" el="h6" size="small">
88
+ {children}
89
+ </Text>
90
+ );
91
+ },
92
+ }),
93
+ []
94
+ );
95
+
96
+ return (
97
+ <Text variant="body" className={className} data-cy={dataCy}>
98
+ <Markdown
99
+ components={markdownComponents}
100
+ rehypePlugins={[rehypeRaw]}
101
+ remarkPlugins={[remarkGfm]}
102
+ >
103
+ {DOMpurify.sanitize(message.message)}
104
+ </Markdown>
105
+ </Text>
106
+ );
107
+ }
108
+ );
package/src/index.ts CHANGED
@@ -10,4 +10,5 @@ export { MessageAvatar, IMessageAvatarProps } from './components/messages/messag
10
10
  export { MessageFooter, IMessageFooterProps } from './components/messages/message-footer';
11
11
  export { useAvatarProps } from './components/messages/use-avatar-props';
12
12
  export { MultilineText } from './components/common/multiline-text';
13
+ export { MessageContentText } from './components/message-content/message-content-text';
13
14
  export { ChatInputStore } from './stores/chat-input.store';