@dust-tt/sparkle 0.2.636 → 0.2.638-rc-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.
Files changed (62) hide show
  1. package/dist/cjs/index.js +1 -1
  2. package/dist/esm/components/markdown/Markdown.d.ts +14 -0
  3. package/dist/esm/components/markdown/Markdown.d.ts.map +1 -1
  4. package/dist/esm/components/markdown/Markdown.js +18 -7
  5. package/dist/esm/components/markdown/Markdown.js.map +1 -1
  6. package/dist/esm/components/streaming/BlockStreamer.d.ts +8 -0
  7. package/dist/esm/components/streaming/BlockStreamer.d.ts.map +1 -0
  8. package/dist/esm/components/streaming/BlockStreamer.js +40 -0
  9. package/dist/esm/components/streaming/BlockStreamer.js.map +1 -0
  10. package/dist/esm/components/streaming/StreamingListItem.d.ts +14 -0
  11. package/dist/esm/components/streaming/StreamingListItem.d.ts.map +1 -0
  12. package/dist/esm/components/streaming/StreamingListItem.js +93 -0
  13. package/dist/esm/components/streaming/StreamingListItem.js.map +1 -0
  14. package/dist/esm/components/streaming/StreamingMarkdown.d.ts +5 -0
  15. package/dist/esm/components/streaming/StreamingMarkdown.d.ts.map +1 -0
  16. package/dist/esm/components/streaming/StreamingMarkdown.js +80 -0
  17. package/dist/esm/components/streaming/StreamingMarkdown.js.map +1 -0
  18. package/dist/esm/components/streaming/StreamingParagraph.d.ts +14 -0
  19. package/dist/esm/components/streaming/StreamingParagraph.d.ts.map +1 -0
  20. package/dist/esm/components/streaming/StreamingParagraph.js +41 -0
  21. package/dist/esm/components/streaming/StreamingParagraph.js.map +1 -0
  22. package/dist/esm/components/streaming/index.d.ts +3 -0
  23. package/dist/esm/components/streaming/index.d.ts.map +1 -0
  24. package/dist/esm/components/streaming/index.js +2 -0
  25. package/dist/esm/components/streaming/index.js.map +1 -0
  26. package/dist/esm/components/streaming/markdownComponents.d.ts +11 -0
  27. package/dist/esm/components/streaming/markdownComponents.d.ts.map +1 -0
  28. package/dist/esm/components/streaming/markdownComponents.js +85 -0
  29. package/dist/esm/components/streaming/markdownComponents.js.map +1 -0
  30. package/dist/esm/components/streaming/types.d.ts +70 -0
  31. package/dist/esm/components/streaming/types.d.ts.map +1 -0
  32. package/dist/esm/components/streaming/types.js +10 -0
  33. package/dist/esm/components/streaming/types.js.map +1 -0
  34. package/dist/esm/components/streaming/utils.d.ts +18 -0
  35. package/dist/esm/components/streaming/utils.d.ts.map +1 -0
  36. package/dist/esm/components/streaming/utils.js +97 -0
  37. package/dist/esm/components/streaming/utils.js.map +1 -0
  38. package/dist/esm/index.d.ts +1 -0
  39. package/dist/esm/index.d.ts.map +1 -1
  40. package/dist/esm/index.js +1 -0
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/stories/StreamingMarkdown.stories.d.ts +12 -0
  43. package/dist/esm/stories/StreamingMarkdown.stories.d.ts.map +1 -0
  44. package/dist/esm/stories/StreamingMarkdown.stories.js +620 -0
  45. package/dist/esm/stories/StreamingMarkdown.stories.js.map +1 -0
  46. package/dist/esm/styles/global.css +43 -0
  47. package/dist/esm/styles/tailwind.css +43 -0
  48. package/dist/sparkle.css +56 -0
  49. package/package.json +2 -1
  50. package/src/components/markdown/Markdown.tsx +35 -12
  51. package/src/components/streaming/BlockStreamer.tsx +61 -0
  52. package/src/components/streaming/StreamingListItem.tsx +176 -0
  53. package/src/components/streaming/StreamingMarkdown.tsx +126 -0
  54. package/src/components/streaming/StreamingParagraph.tsx +104 -0
  55. package/src/components/streaming/index.ts +2 -0
  56. package/src/components/streaming/markdownComponents.tsx +270 -0
  57. package/src/components/streaming/types.ts +72 -0
  58. package/src/components/streaming/utils.ts +126 -0
  59. package/src/index.ts +1 -0
  60. package/src/stories/StreamingMarkdown.stories.tsx +1454 -0
  61. package/src/styles/global.css +43 -0
  62. package/src/styles/tailwind.css +43 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamingMarkdown.stories.js","sourceRoot":"","sources":["../../../src/stories/StreamingMarkdown.stories.tsx"],"names":[],"mappings":"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"}
@@ -63,3 +63,46 @@
63
63
  position: relative;
64
64
  top: 4px;
65
65
  }
66
+
67
+ /* Streaming markdown keyframes for preview (duplicated to ensure Storybook has them) */
68
+ @keyframes s-stream-fadeIn {
69
+ from {
70
+ opacity: 0;
71
+ }
72
+ to {
73
+ opacity: 1;
74
+ }
75
+ }
76
+
77
+ @keyframes s-stream-fadeInAccelerate {
78
+ 0% {
79
+ opacity: 0;
80
+ }
81
+ 60% {
82
+ opacity: 0.15;
83
+ }
84
+ 80% {
85
+ opacity: 0.5;
86
+ }
87
+ 100% {
88
+ opacity: 1;
89
+ }
90
+ }
91
+
92
+ @keyframes s-stream-fadeInAccelerateFast {
93
+ 0% {
94
+ opacity: 0;
95
+ }
96
+ 40% {
97
+ opacity: 0.1;
98
+ }
99
+ 60% {
100
+ opacity: 0.3;
101
+ }
102
+ 80% {
103
+ opacity: 0.7;
104
+ }
105
+ 100% {
106
+ opacity: 1;
107
+ }
108
+ }
@@ -24,3 +24,46 @@
24
24
  @apply s-bg-purple-100;
25
25
  }
26
26
  }
27
+
28
+ /* Streaming markdown keyframes (also duplicated in global.css for Storybook) */
29
+ @keyframes s-stream-fadeIn {
30
+ from {
31
+ opacity: 0;
32
+ }
33
+ to {
34
+ opacity: 1;
35
+ }
36
+ }
37
+
38
+ @keyframes s-stream-fadeInAccelerate {
39
+ 0% {
40
+ opacity: 0;
41
+ }
42
+ 60% {
43
+ opacity: 0.15;
44
+ }
45
+ 80% {
46
+ opacity: 0.5;
47
+ }
48
+ 100% {
49
+ opacity: 1;
50
+ }
51
+ }
52
+
53
+ @keyframes s-stream-fadeInAccelerateFast {
54
+ 0% {
55
+ opacity: 0;
56
+ }
57
+ 40% {
58
+ opacity: 0.1;
59
+ }
60
+ 60% {
61
+ opacity: 0.3;
62
+ }
63
+ 80% {
64
+ opacity: 0.7;
65
+ }
66
+ 100% {
67
+ opacity: 1;
68
+ }
69
+ }
package/dist/sparkle.css CHANGED
@@ -1505,6 +1505,10 @@ select {
1505
1505
  height: 98%;
1506
1506
  }
1507
1507
 
1508
+ .s-h-auto {
1509
+ height: auto;
1510
+ }
1511
+
1508
1512
  .s-h-fit {
1509
1513
  height: -moz-fit-content;
1510
1514
  height: fit-content;
@@ -5451,6 +5455,58 @@ select {
5451
5455
  }
5452
5456
  }
5453
5457
 
5458
+ /* Streaming markdown keyframes (also duplicated in global.css for Storybook) */
5459
+
5460
+ @keyframes s-stream-fadeIn {
5461
+ from {
5462
+ opacity: 0;
5463
+ }
5464
+
5465
+ to {
5466
+ opacity: 1;
5467
+ }
5468
+ }
5469
+
5470
+ @keyframes s-stream-fadeInAccelerate {
5471
+ 0% {
5472
+ opacity: 0;
5473
+ }
5474
+
5475
+ 60% {
5476
+ opacity: 0.15;
5477
+ }
5478
+
5479
+ 80% {
5480
+ opacity: 0.5;
5481
+ }
5482
+
5483
+ 100% {
5484
+ opacity: 1;
5485
+ }
5486
+ }
5487
+
5488
+ @keyframes s-stream-fadeInAccelerateFast {
5489
+ 0% {
5490
+ opacity: 0;
5491
+ }
5492
+
5493
+ 40% {
5494
+ opacity: 0.1;
5495
+ }
5496
+
5497
+ 60% {
5498
+ opacity: 0.3;
5499
+ }
5500
+
5501
+ 80% {
5502
+ opacity: 0.7;
5503
+ }
5504
+
5505
+ 100% {
5506
+ opacity: 1;
5507
+ }
5508
+ }
5509
+
5454
5510
  .file\:s-border-0::file-selector-button {
5455
5511
  border-width: 0px;
5456
5512
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dust-tt/sparkle",
3
- "version": "0.2.636",
3
+ "version": "0.2.638-rc-1",
4
4
  "scripts": {
5
5
  "build": "rm -rf dist && npm run tailwind && npm run build:esm && npm run build:cjs",
6
6
  "tailwind": "tailwindcss -i ./src/styles/tailwind.css -o dist/sparkle.css",
@@ -128,6 +128,7 @@
128
128
  "react-resizable-panels": "^2.1.7",
129
129
  "react-syntax-highlighter": "^15.6.1",
130
130
  "rehype-katex": "^7.0.1",
131
+ "rehype-raw": "^7.0.0",
131
132
  "remark-directive": "^2.0.1",
132
133
  "remark-gfm": "^3.0.1",
133
134
  "remark-math": "^5.1.1",
@@ -5,6 +5,7 @@ import ReactMarkdown from "react-markdown";
5
5
  import type { ReactMarkdownProps } from "react-markdown/lib/ast-to-react";
6
6
  import type { PluggableList } from "react-markdown/lib/react-markdown";
7
7
  import rehypeKatex from "rehype-katex";
8
+ import rehypeRaw from "rehype-raw";
8
9
  import remarkDirective from "remark-directive";
9
10
  import remarkGfm from "remark-gfm";
10
11
  import remarkMath from "remark-math";
@@ -191,16 +192,11 @@ export function Markdown({
191
192
  {children}
192
193
  </h6>
193
194
  ),
194
- strong: ({ children }) => (
195
- <strong className="s-font-semibold s-text-foreground dark:s-text-foreground-night">
196
- {children}
197
- </strong>
198
- ),
195
+ strong: StrongBlock,
199
196
  input: Input,
200
197
  blockquote: BlockquoteBlock,
201
- hr: () => (
202
- <div className="s-my-6 s-border-b s-border-primary-150 dark:s-border-primary-150-night" />
203
- ),
198
+ hr: HrBlock,
199
+ img: ImgBlock,
204
200
  code: CodeBlockWithExtendedSupport,
205
201
  ...additionalMarkdownComponents,
206
202
  };
@@ -217,7 +213,7 @@ export function Markdown({
217
213
  [additionalMarkdownPlugins]
218
214
  );
219
215
 
220
- const rehypePlugins = [[rehypeKatex, { output: "mathml" }]] as PluggableList;
216
+ const rehypePlugins = [[rehypeKatex, { output: "mathml" }], rehypeRaw] as PluggableList;
221
217
 
222
218
  try {
223
219
  return (
@@ -252,7 +248,7 @@ export function Markdown({
252
248
  }
253
249
  }
254
250
 
255
- function LinkBlock({
251
+ export function LinkBlock({
256
252
  href,
257
253
  children,
258
254
  }: {
@@ -276,12 +272,39 @@ function LinkBlock({
276
272
  );
277
273
  }
278
274
 
279
- type InputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, "ref"> &
275
+ export function StrongBlock({ children }: { children: React.ReactNode }) {
276
+ return (
277
+ <strong className="s-font-semibold s-text-foreground dark:s-text-foreground-night">
278
+ {children}
279
+ </strong>
280
+ );
281
+ }
282
+
283
+ export function HrBlock() {
284
+ return (
285
+ <div className="s-my-6 s-border-b s-border-primary-150 dark:s-border-primary-150-night" />
286
+ );
287
+ }
288
+
289
+ export function ImgBlock(props: React.ImgHTMLAttributes<HTMLImageElement>) {
290
+ return (
291
+ <img
292
+ {...props}
293
+ className="s-h-auto s-max-w-full"
294
+ style={{
295
+ maxWidth: "100%",
296
+ height: "auto",
297
+ }}
298
+ />
299
+ );
300
+ }
301
+
302
+ export type InputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, "ref"> &
280
303
  ReactMarkdownProps & {
281
304
  ref?: React.Ref<HTMLInputElement>;
282
305
  };
283
306
 
284
- function Input({
307
+ export function Input({
285
308
  type,
286
309
  checked,
287
310
  className,
@@ -0,0 +1,61 @@
1
+ import React from "react";
2
+
3
+ import type { BlockStreamerProps } from "./types";
4
+
5
+ /**
6
+ * BlockStreamer component handles the token-based streaming animation.
7
+ * It tracks new content as discrete diffs that animate independently.
8
+ */
9
+ export const BlockStreamer: React.FC<BlockStreamerProps> = ({
10
+ text,
11
+ animate = true,
12
+ animationName,
13
+ animationDuration,
14
+ animationTimingFunction,
15
+ }) => {
16
+ const prevRef = React.useRef<string>("");
17
+ const tokensRef = React.useRef<{ text: string; key: number }[]>([]);
18
+
19
+ // Keep tokens up to date so initial render is visible.
20
+ const prev = prevRef.current;
21
+ if (!prev || text.length < prev.length || !text.startsWith(prev)) {
22
+ tokensRef.current = text ? [{ text, key: 0 }] : [];
23
+ prevRef.current = text;
24
+ } else if (text !== prev) {
25
+ const suffix = text.slice(prev.length);
26
+ if (suffix.length > 0) {
27
+ tokensRef.current.push({
28
+ text: suffix,
29
+ key: tokensRef.current.length,
30
+ });
31
+ prevRef.current = text;
32
+ }
33
+ }
34
+
35
+ return (
36
+ <>
37
+ {tokensRef.current.map((t) => (
38
+ <span
39
+ key={t.key}
40
+ style={
41
+ animate
42
+ ? {
43
+ whiteSpace: "pre-wrap",
44
+ display: "inline",
45
+ animationName,
46
+ animationDuration,
47
+ animationTimingFunction,
48
+ animationIterationCount: 1,
49
+ }
50
+ : {
51
+ whiteSpace: "pre-wrap",
52
+ display: "inline",
53
+ }
54
+ }
55
+ >
56
+ {t.text}
57
+ </span>
58
+ ))}
59
+ </>
60
+ );
61
+ };
@@ -0,0 +1,176 @@
1
+ import React from "react";
2
+
3
+ import { LiBlock } from "@sparkle/components/markdown/List";
4
+ import { BlockStreamer } from "@sparkle/components/streaming/BlockStreamer";
5
+ import type { ComponentProps } from "@sparkle/components/streaming/types";
6
+ import {
7
+ getElementProps,
8
+ isCodeElement,
9
+ isListElement,
10
+ isReactElementWithProps,
11
+ isTableElement,
12
+ keyOf,
13
+ } from "@sparkle/components/streaming/utils";
14
+
15
+ interface StreamingListItemProps extends ComponentProps {
16
+ isStreaming: boolean;
17
+ animationName: string;
18
+ animationDuration: string;
19
+ animationTimingFunction: string;
20
+ textColor?: string;
21
+ forcedTextSize?: string;
22
+ sizes: Record<string, string>;
23
+ }
24
+
25
+ export function StreamingListItem({
26
+ node,
27
+ isStreaming,
28
+ animationName,
29
+ animationDuration,
30
+ animationTimingFunction,
31
+ textColor,
32
+ forcedTextSize,
33
+ sizes,
34
+ ...props
35
+ }: StreamingListItemProps) {
36
+ const bk = keyOf(node, "li");
37
+
38
+ // Process list item children to handle text streaming and nested lists.
39
+ const processChildren = (children: React.ReactNode): React.ReactNode => {
40
+ if (!children) {
41
+ return null;
42
+ }
43
+
44
+ // If it's just a string, animate it.
45
+ if (typeof children === "string") {
46
+ return (
47
+ <BlockStreamer
48
+ text={children}
49
+ animate={isStreaming}
50
+ animationName={animationName}
51
+ animationDuration={animationDuration}
52
+ animationTimingFunction={animationTimingFunction}
53
+ />
54
+ );
55
+ }
56
+
57
+ // Safety check: if it's a non-React object, don't try to process it.
58
+ if (
59
+ typeof children === "object" &&
60
+ children !== null &&
61
+ !React.isValidElement(children) &&
62
+ !Array.isArray(children)
63
+ ) {
64
+ console.warn("Unexpected object in processChildren:", children);
65
+ return null;
66
+ }
67
+
68
+ // If it's an array, process each child
69
+ if (Array.isArray(children)) {
70
+ // Filter out empty strings and newlines that might cause spacing.
71
+ const filtered = children.filter(
72
+ (child) => !(typeof child === "string" && child.trim() === "")
73
+ );
74
+
75
+ return filtered.map((child, idx) => {
76
+ if (typeof child === "string") {
77
+ return (
78
+ <BlockStreamer
79
+ key={idx}
80
+ text={child}
81
+ animate={isStreaming}
82
+ animationName={animationName}
83
+ animationDuration={animationDuration}
84
+ animationTimingFunction={animationTimingFunction}
85
+ />
86
+ );
87
+ }
88
+
89
+ // Nested lists are preserved as-is (they'll handle their own animation).
90
+ if (React.isValidElement(child) && isListElement(child)) {
91
+ return child;
92
+ }
93
+
94
+ // Table elements are preserved as-is.
95
+ if (isTableElement(child)) {
96
+ return child;
97
+ }
98
+
99
+ // For paragraph elements inside list items, extract and animate their content.
100
+ if (isReactElementWithProps(child) && child.type === "p") {
101
+ const props = getElementProps(child);
102
+ return processChildren(props.children);
103
+ }
104
+
105
+ // Code elements (including pre blocks) should be returned as-is.
106
+ if (isCodeElement(child)) {
107
+ return child;
108
+ }
109
+
110
+ // Other elements: recursively process their children.
111
+ if (isReactElementWithProps(child)) {
112
+ const childProps = getElementProps(child);
113
+
114
+ // Don't process children for certain element types that handle their own content
115
+ if (isCodeElement(child) || isTableElement(child)) {
116
+ return child;
117
+ }
118
+
119
+ // Skip processing if children is already a string (don't double-process)
120
+ if (typeof childProps.children === "string") {
121
+ return child;
122
+ }
123
+
124
+ // Clone the element with processed children
125
+ return React.cloneElement(
126
+ child,
127
+ { ...childProps, key: idx },
128
+ processChildren(childProps.children)
129
+ );
130
+ }
131
+
132
+ // If it's an object but not a React element, return empty string to avoid [object Object]
133
+ if (typeof child === "object" && child !== null) {
134
+ return null;
135
+ }
136
+
137
+ return child;
138
+ });
139
+ }
140
+
141
+ // Single React element
142
+ if (React.isValidElement(children)) {
143
+ if (isListElement(children)) {
144
+ return children;
145
+ }
146
+ // For paragraph elements, extract their content
147
+ if (children.type === "p") {
148
+ const props = getElementProps(children);
149
+ return processChildren(props.children);
150
+ }
151
+ // Code and table elements should be returned as-is
152
+ if (isCodeElement(children) || isTableElement(children)) {
153
+ return children;
154
+ }
155
+ const childProps = getElementProps(children);
156
+ return React.cloneElement(
157
+ children,
158
+ childProps,
159
+ processChildren(childProps.children)
160
+ );
161
+ }
162
+
163
+ return children;
164
+ };
165
+
166
+ return (
167
+ <LiBlock
168
+ key={bk}
169
+ textColor={textColor || ""}
170
+ textSize={forcedTextSize || sizes.p}
171
+ className="s-stream-marker"
172
+ >
173
+ {processChildren(props.children)}
174
+ </LiBlock>
175
+ );
176
+ }
@@ -0,0 +1,126 @@
1
+ "use client";
2
+ import React, { useMemo } from "react";
3
+ import type { Components } from "react-markdown";
4
+ import ReactMarkdown from "react-markdown";
5
+ import type { PluggableList } from "react-markdown/lib/react-markdown";
6
+ import rehypeKatex from "rehype-katex";
7
+ import rehypeRaw from "rehype-raw";
8
+ import remarkDirective from "remark-directive";
9
+ import remarkGfm from "remark-gfm";
10
+ import remarkMath from "remark-math";
11
+
12
+ import { Chip } from "@sparkle/components";
13
+ import { MarkdownContentContext } from "@sparkle/components/markdown/MarkdownContentContext";
14
+ import { sanitizeContent } from "@sparkle/components/markdown/utils";
15
+
16
+ import { createMarkdownComponents } from "./markdownComponents";
17
+ import type { ProcessChildrenContext,StreamingMarkdownProps } from "./types";
18
+ import { showUnsupportedDirective } from "./utils";
19
+
20
+ export const StreamingMarkdown: React.FC<StreamingMarkdownProps> = ({
21
+ content,
22
+ animationName,
23
+ animationDuration = "600ms",
24
+ animationTimingFunction = "ease-out",
25
+ animationCurve = "linear",
26
+ isStreaming = true,
27
+ isLastMessage = false,
28
+ textColor = "s-text-foreground dark:s-text-foreground-night",
29
+ forcedTextSize,
30
+ additionalMarkdownComponents,
31
+ additionalMarkdownPlugins,
32
+ }) => {
33
+ const effectiveAnimationName = useMemo(() => {
34
+ if (animationName) {return animationName;}
35
+
36
+ switch (animationCurve) {
37
+ case "accelerate":
38
+ return "s-stream-fadeInAccelerate";
39
+ case "accelerate-fast":
40
+ return "s-stream-fadeInAccelerateFast";
41
+ case "custom":
42
+ return "s-stream-fadeInCustom";
43
+ case "linear":
44
+ default:
45
+ return "s-stream-fadeIn";
46
+ }
47
+ }, [animationName, animationCurve]);
48
+
49
+ const processedContent = useMemo(() => sanitizeContent(content), [content]);
50
+
51
+ const processContext: ProcessChildrenContext = useMemo(
52
+ () => ({
53
+ isStreaming,
54
+ animationName: effectiveAnimationName,
55
+ animationDuration,
56
+ animationTimingFunction,
57
+ }),
58
+ [
59
+ isStreaming,
60
+ effectiveAnimationName,
61
+ animationDuration,
62
+ animationTimingFunction,
63
+ ]
64
+ );
65
+
66
+ const markdownComponents: Components = useMemo(
67
+ () =>
68
+ createMarkdownComponents({
69
+ textColor,
70
+ forcedTextSize,
71
+ additionalMarkdownComponents,
72
+ processContext,
73
+ }),
74
+ [textColor, forcedTextSize, additionalMarkdownComponents, processContext]
75
+ );
76
+
77
+ const markdownPlugins: PluggableList = useMemo(
78
+ () => [
79
+ remarkDirective,
80
+ remarkGfm,
81
+ [remarkMath, { singleDollarTextMath: false }],
82
+ ...(additionalMarkdownPlugins || []),
83
+ showUnsupportedDirective,
84
+ ],
85
+ [additionalMarkdownPlugins]
86
+ );
87
+
88
+ const rehypePlugins = [
89
+ [rehypeKatex, { output: "mathml" }],
90
+ rehypeRaw,
91
+ ] as PluggableList;
92
+
93
+ try {
94
+ return (
95
+ <div className="s-w-full">
96
+ <MarkdownContentContext.Provider
97
+ value={{
98
+ content: processedContent,
99
+ isStreaming,
100
+ isLastMessage,
101
+ }}
102
+ >
103
+ <ReactMarkdown
104
+ linkTarget="_blank"
105
+ components={markdownComponents}
106
+ remarkPlugins={markdownPlugins}
107
+ rehypePlugins={rehypePlugins}
108
+ >
109
+ {processedContent}
110
+ </ReactMarkdown>
111
+ </MarkdownContentContext.Provider>
112
+ </div>
113
+ );
114
+ } catch (error) {
115
+ return (
116
+ <div className="s-w-full">
117
+ <Chip color="warning">
118
+ There was an error parsing this markdown content
119
+ </Chip>
120
+ {processedContent}
121
+ </div>
122
+ );
123
+ }
124
+ };
125
+
126
+ export default StreamingMarkdown;