@servicetitan/titan-chat-ui 3.1.5 → 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,CAqF3D,CAAC"}
@@ -1,7 +1,43 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { BodyText, Headline, Link } from '@servicetitan/design-system';
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, ...rest }) {
14
+ return (_jsx(BodyText, { el: "span", className: "c-blue-600 bg-neutral-40 border-radius-1", style: { fontFamily: 'monospace', fontSize: '0.85em' }, ...rest, 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", primary: true, rel: "noopener noreferrer", children: children }));
21
+ },
22
+ h1({ children }) {
23
+ return (_jsx(Headline, { el: "h1", size: "xlarge", children: children }));
24
+ },
25
+ h2({ children }) {
26
+ return (_jsx(Headline, { el: "h2", size: "large", children: children }));
27
+ },
28
+ h3({ children }) {
29
+ return (_jsx(Headline, { el: "h3", size: "medium", children: children }));
30
+ },
31
+ h4({ children }) {
32
+ return (_jsx(Headline, { el: "h4", size: "small", children: children }));
33
+ },
34
+ h5({ children }) {
35
+ return (_jsx(Headline, { el: "h5", size: "small", children: children }));
36
+ },
37
+ h6({ children }) {
38
+ return (_jsx(Headline, { el: "h6", size: "small", children: children }));
39
+ },
40
+ }), []);
41
+ return (_jsx(BodyText, { el: "div", 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":";AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAEvE,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAiB,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,QAAwB,MAAM,gBAAgB,CAAC;AACtD,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,SAAS,MAAM,YAAY,CAAC;AAUnC,MAAM,CAAC,MAAM,kBAAkB,GAAiC,QAAQ,CACpE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;;IAChC,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,mCAAI,iBAAiB,CAAC;IACpD,MAAM,kBAAkB,GAAe,OAAO,CAC1C,GAAG,EAAE,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAQ;YAC5B,OAAO,CACH,KAAC,QAAQ,IACL,EAAE,EAAC,MAAM,EACT,SAAS,EAAC,0CAA0C,EACpD,KAAK,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAClD,IAAI,YAEP,QAAQ,GACF,CACd,CAAC;QACN,CAAC;QACD,CAAC,CAAC,EAAE,QAAQ,EAAQ;YAChB,OAAO,sBAAI,QAAQ,GAAK,CAAC;QAC7B,CAAC;QACD,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAA4B;YAC1C,OAAO,CACH,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,QAAQ,EAAC,OAAO,QAAC,GAAG,EAAC,qBAAqB,YAC9D,QAAQ,GACN,CACV,CAAC;QACN,CAAC;QACD,EAAE,CAAC,EAAE,QAAQ,EAAQ;YACjB,OAAO,CACH,KAAC,QAAQ,IAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,QAAQ,YAC1B,QAAQ,GACF,CACd,CAAC;QACN,CAAC;QACD,EAAE,CAAC,EAAE,QAAQ,EAAQ;YACjB,OAAO,CACH,KAAC,QAAQ,IAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,YACzB,QAAQ,GACF,CACd,CAAC;QACN,CAAC;QACD,EAAE,CAAC,EAAE,QAAQ,EAAQ;YACjB,OAAO,CACH,KAAC,QAAQ,IAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,QAAQ,YAC1B,QAAQ,GACF,CACd,CAAC;QACN,CAAC;QACD,EAAE,CAAC,EAAE,QAAQ,EAAQ;YACjB,OAAO,CACH,KAAC,QAAQ,IAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,YACzB,QAAQ,GACF,CACd,CAAC;QACN,CAAC;QACD,EAAE,CAAC,EAAE,QAAQ,EAAQ;YACjB,OAAO,CACH,KAAC,QAAQ,IAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,YACzB,QAAQ,GACF,CACd,CAAC;QACN,CAAC;QACD,EAAE,CAAC,EAAE,QAAQ,EAAQ;YACjB,OAAO,CACH,KAAC,QAAQ,IAAC,EAAE,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,YACzB,QAAQ,GACF,CACd,CAAC;QACN,CAAC;KACJ,CAAC,EACF,EAAE,CACL,CAAC;IAEF,OAAO,CACH,KAAC,QAAQ,IAAC,EAAE,EAAC,KAAK,EAAC,SAAS,EAAE,SAAS,aAAW,MAAM,YACpD,KAAC,QAAQ,IACL,UAAU,EAAE,kBAAkB,EAC9B,aAAa,EAAE,CAAC,SAAS,CAAC,EAC1B,aAAa,EAAE,CAAC,SAAS,CAAC,YAEzB,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,GAC7B,GACJ,CACd,CAAC;AACN,CAAC,CACJ,CAAC"}
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",
3
- "version": "3.1.5",
3
+ "version": "3.2.0",
4
4
  "description": "Chat experience UI package",
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.5",
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/confirm": ">=27",
@@ -38,7 +42,7 @@
38
42
  "react-dom": ">=18"
39
43
  },
40
44
  "devDependencies": {
41
- "@servicetitan/cypress-shared": "^3.1.5",
45
+ "@servicetitan/cypress-shared": "^3.2.0",
42
46
  "cypress": "^14.3.2"
43
47
  },
44
48
  "keywords": [
@@ -51,5 +55,5 @@
51
55
  "cli": {
52
56
  "webpack": false
53
57
  },
54
- "gitHead": "d505add9e192f5d8260f14e15eee7460980e869b"
58
+ "gitHead": "5f2fb6065c0498c946b8e67732383cab10a07a18"
55
59
  }
@@ -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,103 @@
1
+ import { BodyText, Headline, Link } from '@servicetitan/design-system';
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, ...rest }: Node) {
24
+ return (
25
+ <BodyText
26
+ el="span"
27
+ className="c-blue-600 bg-neutral-40 border-radius-1"
28
+ style={{ fontFamily: 'monospace', fontSize: '0.85em' }}
29
+ {...rest}
30
+ >
31
+ {children}
32
+ </BodyText>
33
+ );
34
+ },
35
+ u({ children }: Node) {
36
+ return <u>{children}</u>;
37
+ },
38
+ a({ children, href }: Node & { href?: string }) {
39
+ return (
40
+ <Link href={href} target="_blank" primary rel="noopener noreferrer">
41
+ {children}
42
+ </Link>
43
+ );
44
+ },
45
+ h1({ children }: Node) {
46
+ return (
47
+ <Headline el="h1" size="xlarge">
48
+ {children}
49
+ </Headline>
50
+ );
51
+ },
52
+ h2({ children }: Node) {
53
+ return (
54
+ <Headline el="h2" size="large">
55
+ {children}
56
+ </Headline>
57
+ );
58
+ },
59
+ h3({ children }: Node) {
60
+ return (
61
+ <Headline el="h3" size="medium">
62
+ {children}
63
+ </Headline>
64
+ );
65
+ },
66
+ h4({ children }: Node) {
67
+ return (
68
+ <Headline el="h4" size="small">
69
+ {children}
70
+ </Headline>
71
+ );
72
+ },
73
+ h5({ children }: Node) {
74
+ return (
75
+ <Headline el="h5" size="small">
76
+ {children}
77
+ </Headline>
78
+ );
79
+ },
80
+ h6({ children }: Node) {
81
+ return (
82
+ <Headline el="h6" size="small">
83
+ {children}
84
+ </Headline>
85
+ );
86
+ },
87
+ }),
88
+ []
89
+ );
90
+
91
+ return (
92
+ <BodyText el="div" className={className} data-cy={dataCy}>
93
+ <Markdown
94
+ components={markdownComponents}
95
+ rehypePlugins={[rehypeRaw]}
96
+ remarkPlugins={[remarkGfm]}
97
+ >
98
+ {DOMpurify.sanitize(message.message)}
99
+ </Markdown>
100
+ </BodyText>
101
+ );
102
+ }
103
+ );
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';