react-ai-renderer 0.1.3 → 0.1.5

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 (120) hide show
  1. package/README.md +65 -203
  2. package/dist/index.cjs +39422 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.js +39392 -15
  5. package/dist/index.js.map +1 -1
  6. package/package.json +12 -7
  7. package/dist/MermaidRenderer-07b34bcf.js +0 -170
  8. package/dist/MermaidRenderer-07b34bcf.js.map +0 -1
  9. package/dist/MermaidRenderer-0aacea2f.js +0 -170
  10. package/dist/MermaidRenderer-0aacea2f.js.map +0 -1
  11. package/dist/MermaidRenderer-1c06834c.js +0 -170
  12. package/dist/MermaidRenderer-1c06834c.js.map +0 -1
  13. package/dist/MermaidRenderer-22b8cb81.js +0 -170
  14. package/dist/MermaidRenderer-22b8cb81.js.map +0 -1
  15. package/dist/MermaidRenderer-2438ceb1.js +0 -170
  16. package/dist/MermaidRenderer-2438ceb1.js.map +0 -1
  17. package/dist/MermaidRenderer-2f6d93a2.js +0 -170
  18. package/dist/MermaidRenderer-2f6d93a2.js.map +0 -1
  19. package/dist/MermaidRenderer-447e20f0.js +0 -170
  20. package/dist/MermaidRenderer-447e20f0.js.map +0 -1
  21. package/dist/MermaidRenderer-456abbe8.js +0 -170
  22. package/dist/MermaidRenderer-456abbe8.js.map +0 -1
  23. package/dist/MermaidRenderer-45a1e235.js +0 -170
  24. package/dist/MermaidRenderer-45a1e235.js.map +0 -1
  25. package/dist/MermaidRenderer-4b75a3e5.js +0 -172
  26. package/dist/MermaidRenderer-4b75a3e5.js.map +0 -1
  27. package/dist/MermaidRenderer-59cd2aac.js +0 -172
  28. package/dist/MermaidRenderer-59cd2aac.js.map +0 -1
  29. package/dist/MermaidRenderer-61954263.js +0 -172
  30. package/dist/MermaidRenderer-61954263.js.map +0 -1
  31. package/dist/MermaidRenderer-62cbf217.js +0 -171
  32. package/dist/MermaidRenderer-62cbf217.js.map +0 -1
  33. package/dist/MermaidRenderer-6323359c.js +0 -170
  34. package/dist/MermaidRenderer-6323359c.js.map +0 -1
  35. package/dist/MermaidRenderer-680adac3.js +0 -169
  36. package/dist/MermaidRenderer-680adac3.js.map +0 -1
  37. package/dist/MermaidRenderer-771db0f2.js +0 -172
  38. package/dist/MermaidRenderer-771db0f2.js.map +0 -1
  39. package/dist/MermaidRenderer-7a5bd531.js +0 -170
  40. package/dist/MermaidRenderer-7a5bd531.js.map +0 -1
  41. package/dist/MermaidRenderer-94fceb26.js +0 -172
  42. package/dist/MermaidRenderer-94fceb26.js.map +0 -1
  43. package/dist/MermaidRenderer-a6a464ec.js +0 -172
  44. package/dist/MermaidRenderer-a6a464ec.js.map +0 -1
  45. package/dist/MermaidRenderer-a8c58389.js +0 -172
  46. package/dist/MermaidRenderer-a8c58389.js.map +0 -1
  47. package/dist/MermaidRenderer-b23c2eec.js +0 -172
  48. package/dist/MermaidRenderer-b23c2eec.js.map +0 -1
  49. package/dist/MermaidRenderer-b30dda58.js +0 -170
  50. package/dist/MermaidRenderer-b30dda58.js.map +0 -1
  51. package/dist/MermaidRenderer-b65fed60.js +0 -172
  52. package/dist/MermaidRenderer-b65fed60.js.map +0 -1
  53. package/dist/MermaidRenderer-c594187b.js +0 -172
  54. package/dist/MermaidRenderer-c594187b.js.map +0 -1
  55. package/dist/MermaidRenderer-c5f51ccf.js +0 -172
  56. package/dist/MermaidRenderer-c5f51ccf.js.map +0 -1
  57. package/dist/MermaidRenderer-cf69f9fc.js +0 -172
  58. package/dist/MermaidRenderer-cf69f9fc.js.map +0 -1
  59. package/dist/MermaidRenderer-fa15e3c7.js +0 -172
  60. package/dist/MermaidRenderer-fa15e3c7.js.map +0 -1
  61. package/dist/MermaidRenderer-fc75606f.js +0 -170
  62. package/dist/MermaidRenderer-fc75606f.js.map +0 -1
  63. package/dist/index-27d5e758.js +0 -1399
  64. package/dist/index-27d5e758.js.map +0 -1
  65. package/dist/index-2b2eb026.js +0 -1393
  66. package/dist/index-2b2eb026.js.map +0 -1
  67. package/dist/index-34e4d478.js +0 -1289
  68. package/dist/index-34e4d478.js.map +0 -1
  69. package/dist/index-4881fdf3.js +0 -1458
  70. package/dist/index-4881fdf3.js.map +0 -1
  71. package/dist/index-4d8e81d1.js +0 -1264
  72. package/dist/index-4d8e81d1.js.map +0 -1
  73. package/dist/index-4f25eb16.js +0 -1289
  74. package/dist/index-4f25eb16.js.map +0 -1
  75. package/dist/index-53d781f0.js +0 -1476
  76. package/dist/index-53d781f0.js.map +0 -1
  77. package/dist/index-543584d8.js +0 -1398
  78. package/dist/index-543584d8.js.map +0 -1
  79. package/dist/index-54c78282.js +0 -1474
  80. package/dist/index-54c78282.js.map +0 -1
  81. package/dist/index-57a0454a.js +0 -1441
  82. package/dist/index-57a0454a.js.map +0 -1
  83. package/dist/index-58ab9759.js +0 -1424
  84. package/dist/index-58ab9759.js.map +0 -1
  85. package/dist/index-58ee3084.js +0 -1399
  86. package/dist/index-58ee3084.js.map +0 -1
  87. package/dist/index-5edd5559.js +0 -1289
  88. package/dist/index-5edd5559.js.map +0 -1
  89. package/dist/index-65168e57.js +0 -1263
  90. package/dist/index-65168e57.js.map +0 -1
  91. package/dist/index-66021d90.js +0 -1431
  92. package/dist/index-66021d90.js.map +0 -1
  93. package/dist/index-71e57dce.js +0 -1425
  94. package/dist/index-71e57dce.js.map +0 -1
  95. package/dist/index-742d8be6.js +0 -1290
  96. package/dist/index-742d8be6.js.map +0 -1
  97. package/dist/index-813be4d3.js +0 -1425
  98. package/dist/index-813be4d3.js.map +0 -1
  99. package/dist/index-82c906b1.js +0 -1448
  100. package/dist/index-82c906b1.js.map +0 -1
  101. package/dist/index-a7fb8ff9.js +0 -1432
  102. package/dist/index-a7fb8ff9.js.map +0 -1
  103. package/dist/index-b4765fbd.js +0 -1263
  104. package/dist/index-b4765fbd.js.map +0 -1
  105. package/dist/index-b78ff7b5.js +0 -1399
  106. package/dist/index-b78ff7b5.js.map +0 -1
  107. package/dist/index-c56180b9.js +0 -1425
  108. package/dist/index-c56180b9.js.map +0 -1
  109. package/dist/index-d5855b9f.js +0 -1367
  110. package/dist/index-d5855b9f.js.map +0 -1
  111. package/dist/index-d63be97b.js +0 -1263
  112. package/dist/index-d63be97b.js.map +0 -1
  113. package/dist/index-dd9fe728.js +0 -1457
  114. package/dist/index-dd9fe728.js.map +0 -1
  115. package/dist/index-e0ce1691.js +0 -1467
  116. package/dist/index-e0ce1691.js.map +0 -1
  117. package/dist/index-fadb7b0b.js +0 -1450
  118. package/dist/index-fadb7b0b.js.map +0 -1
  119. package/dist/index.es.js +0 -9
  120. package/dist/index.es.js.map +0 -1
package/README.md CHANGED
@@ -16,6 +16,7 @@
16
16
  - **代码高亮**:支持多种编程语言的代码高亮显示
17
17
  - **数学公式**:使用 KaTeX 渲染数学公式
18
18
  - **Mermaid 图表**:支持 Mermaid 流程图、时序图等(可选功能)
19
+ - **GitHub样式**:使用GitHub风格的Markdown渲染样式
19
20
  - **自定义组件**:支持用户注册自定义组件和生命周期钩子
20
21
  - **兼容性**:兼容现代 React 版本,提供 TypeScript 类型定义
21
22
 
@@ -41,6 +42,48 @@ npm install mermaid
41
42
 
42
43
  如果不安装 mermaid,图表将不会渲染,但不会影响其他功能。
43
44
 
45
+ ## 🎨 GitHub风格样式
46
+
47
+ React AI Renderer 现在支持 GitHub 风格的 Markdown 渲染样式,使渲染的 Markdown 内容具有与 GitHub 上相同的外观和感觉。
48
+
49
+ ### 特性
50
+
51
+ - GitHub风格的排版和间距
52
+ - 代码块的语法高亮
53
+ - 表格样式优化
54
+ - 链接样式
55
+ - 标题样式(包括下划线效果)
56
+ - 引用块样式
57
+ - 列表样式优化
58
+
59
+ ### 使用方法
60
+
61
+ 组件会自动应用GitHub样式,无需额外配置:
62
+
63
+ ```jsx
64
+ import ReactAIRenderer from 'react-ai-renderer';
65
+
66
+ function MyComponent() {
67
+ const markdownContent = `
68
+ # 标题
69
+
70
+ 这是一个 **粗体** 文本和 *斜体* 文本。
71
+
72
+ \`\`\`javascript
73
+ console.log('Hello, World!');
74
+ \`\`\`
75
+
76
+ | 列1 | 列2 |
77
+ |-----|-----|
78
+ | 数据1 | 数据2 |
79
+ `;
80
+
81
+ return <ReactAIRenderer content={markdownContent} />;
82
+ }
83
+ ```
84
+
85
+ 查看 [GITHUB_STYLE_USAGE.md](./GITHUB_STYLE_USAGE.md) 获取更多使用详情。
86
+
44
87
  ## 🚀 快速开始
45
88
 
46
89
  查看 [examples/example.tsx](./examples/example.tsx) 文件了解完整的使用示例。
@@ -70,14 +113,12 @@ function App() {
70
113
  import ReactAIRenderer from 'react-ai-renderer';
71
114
 
72
115
  const content = `
73
- <Think>
74
116
  正在分析用户需求...
75
117
 
76
118
  根据分析结果,我建议您使用以下方案:
77
119
 
78
120
  1. 方案A
79
121
  2. 方案B
80
- </Think>
81
122
  `;
82
123
 
83
124
  function App() {
@@ -121,231 +162,52 @@ function App() {
121
162
  }
122
163
  ```
123
164
 
124
- ## 🎨 UI 组件示例
125
-
126
- React AI Renderer 支持丰富的 UI 组件渲染,包括表单、表格、卡片等常见组件。
127
-
128
- ### 表单组件
129
-
130
- ```mdx
131
- <form>
132
- <Input label="姓名" placeholder="请输入姓名" />
133
- <Input label="邮箱" type="email" placeholder="请输入邮箱" />
134
- <Select label="性别">
135
- <option value="">请选择</option>
136
- <option value="male">男</option>
137
- <option value="female">女</option>
138
- </Select>
139
- <Textarea label="个人简介" placeholder="请简单介绍一下自己" />
140
- <Checkbox label="同意用户协议" />
141
- <Button type="submit">提交</Button>
142
- <Button type="button" style="backgroundColor: #6c757d">取消</Button>
143
- </form>
144
- ```
145
-
146
- ### 表格组件
147
-
148
- ```mdx
149
- <Table>
150
- <TableHeader>
151
- <TableCell header>产品名称</TableCell>
152
- <TableCell header>价格</TableCell>
153
- <TableCell header>库存</TableCell>
154
- <TableCell header>状态</TableCell>
155
- </TableHeader>
156
- <TableRow>
157
- <TableCell>iPhone 15</TableCell>
158
- <TableCell>¥5999</TableCell>
159
- <TableCell>50</TableCell>
160
- <TableCell>在售</TableCell>
161
- </TableRow>
162
- <TableRow>
163
- <TableCell>MacBook Pro</TableCell>
164
- <TableCell>¥12999</TableCell>
165
- <TableCell>20</TableCell>
166
- <TableCell>在售</TableCell>
167
- </TableRow>
168
- <TableRow>
169
- <TableCell>iPad Air</TableCell>
170
- <TableCell>¥4399</TableCell>
171
- <TableCell>0</TableCell>
172
- <TableCell>缺货</TableCell>
173
- </TableRow>
174
- </Table>
175
- ```
176
-
177
- ### 卡片组件
178
-
179
- ```mdx
180
- <Card>
181
- <CardTitle>MacBook Pro</CardTitle>
182
- <CardContent>
183
- <p>强大的性能,适用于专业工作负载</p>
184
- <p><strong>价格:</strong> ¥12999</p>
185
- <p><strong>库存:</strong> 20台</p>
186
- </CardContent>
187
- <CardActions>
188
- <Button>加入购物车</Button>
189
- <Button>查看详情</Button>
190
- <Button style="backgroundColor: #28a745">立即购买</Button>
191
- </CardActions>
192
- </Card>
193
- ```
194
-
195
165
  ## 🛠️ API
196
166
 
197
167
  ### ReactAIRenderer 组件
198
168
 
199
169
  主渲染组件,兼容 ReactMarkdown API。
200
170
 
201
- ```tsx
202
- interface ReactAIRendererProps {
203
- children: string;
204
- components?: Record<string, React.ComponentType<any>>;
205
- componentHandlers?: ComponentHandler[];
206
- remarkPlugins?: any[];
207
- rehypePlugins?: any[];
208
- scope?: any;
209
- [key: string]: any;
210
- }
211
- ```
212
-
213
- ### ComponentHandler 接口
214
-
215
- 用于注册自定义组件和生命周期钩子。
216
-
217
- ```tsx
218
- interface ComponentHandler {
219
- component: React.ComponentType<any>;
220
- name: string;
221
- selfClosing: boolean;
222
- onRender?: (item: ComponentData, scope: any) => void;
223
- }
224
- ```
225
-
226
- ## 🧩 内置组件
171
+ Props:
172
+ - `content`: Markdown/MDX 内容字符串
173
+ - `scope`: 传递给 MDX 的作用域对象
174
+ - `components`: 自定义组件映射
175
+ - `componentHandlers`: 组件处理器数组
176
+ - `children`: 作为内容的子元素(替代 content)
227
177
 
228
178
  ### Think 组件
229
179
 
230
- 用于展示 AI 推理过程的组件。使用 `<Think>` 标签包围需要展示为推理过程的内容。
231
-
232
- ```tsx
233
- <Think>
234
- 正在分析用户需求...
235
- </Think>
236
- ```
237
-
238
- Think 组件会自动识别 `<Think>` 标签并将其内容渲染为可折叠的推理过程展示。
239
-
240
- ### CodeHighlight 组件
241
-
242
- 支持多种编程语言的代码高亮显示。
243
-
244
- ### MermaidRenderer 组件
245
-
246
- 动态加载和渲染 Mermaid 图表。
247
-
248
- > 注意:Mermaid 是一个 peer dependency,需要在项目中单独安装。如果未安装 mermaid,图表将显示为代码块并提示安装信息。
249
-
250
- ## 🏗️ 构建配置
251
-
252
- 使用 Rollup 进行构建,输出 UMD 和 ESM 两种格式。
253
-
254
- ### 构建命令
255
-
256
- ```bash
257
- npm run build
258
- ```
259
-
260
- ### 开发模式
180
+ 用于展示 AI 思考过程的组件。
261
181
 
262
- ```bash
263
- npm run dev
264
- ```
182
+ Props:
183
+ - `title`: 思考步骤标题
184
+ - `children`: 思考内容
265
185
 
266
- ### 运行示例
186
+ ### ToolCall 组件
267
187
 
268
- #### 浏览器示例(推荐)
188
+ 用于展示工具调用过程的组件。
269
189
 
270
- 构建项目和示例:
190
+ Props:
191
+ - `name`: 工具名称
192
+ - `parameters`: 工具参数
193
+ - `result`: 工具调用结果
271
194
 
272
- ```bash
273
- npm run build
274
- npm run build:examples
275
- ```
195
+ ## 📖 示例
276
196
 
277
- 然后使用以下命令启动示例:
197
+ 运行示例:
278
198
 
279
199
  ```bash
280
200
  npm run example
281
201
  ```
282
202
 
283
- 这将启动一个本地服务器,并在浏览器中打开示例页面。
203
+ 然后在浏览器中访问 http://localhost:3000/examples/example.html
284
204
 
285
- 您也可以直接在浏览器中打开 [examples/example.html](./examples/example.html) 文件查看示例效果。
286
-
287
- 示例页面现在使用本地构建的 React 依赖,不再依赖外部 CDN 链接,确保在任何环境下都能正常运行。
288
-
289
- #### Node.js 示例
290
-
291
- 如果您想快速查看 API 使用方式,可以运行 Node.js 示例:
205
+ ## 🧪 测试
292
206
 
293
207
  ```bash
294
- npm run example:node
208
+ npm test
295
209
  ```
296
210
 
297
- 这将展示如何在 Node.js 环境中使用该库,并演示服务端渲染的基本用法。注意:由于 ReactAIRenderer 是一个 React 组件,它需要浏览器环境才能完全渲染,在 Node.js 环境中只能查看 API 使用方式和基本的服务端渲染输出。
298
-
299
- ## 📁 项目结构
300
-
301
- ```
302
- react-ai-renderer/
303
- ├── src/
304
- │ ├── index.ts # 入口文件
305
- │ ├── ReactAIRenderer.tsx # 主渲染组件
306
- │ ├── types.ts # 类型定义
307
- │ ├── components/ # 内置组件
308
- │ │ ├── BuiltInComponents.tsx # 内置组件集合
309
- │ │ ├── CodeHighlight.tsx # 代码高亮组件
310
- │ │ ├── ErrorBoundary.tsx # 错误边界组件
311
- │ │ ├── ErrorUI.tsx # 错误展示组件
312
- │ │ ├── MdxLayout.tsx # MDX 布局组件
313
- │ │ ├── MermaidRenderer.tsx # Mermaid 图表渲染组件
314
- │ │ ├── Think.tsx # AI 推理展示组件
315
- │ │ └── ToolCall.tsx # 工具调用展示组件
316
- │ └── utils/ # 工具函数
317
- │ ├── contentProcessor.ts # 内容处理工具
318
- │ ├── mdxRenderer.ts # MDX 渲染工具
319
- │ └── mdxStreamParse.ts # MDX 流式解析工具
320
- ├── dist/ # 构建输出目录
321
- ├── examples/ # 示例文件
322
- │ ├── components/ # UI 组件示例
323
- │ │ ├── FormComponents.tsx # 表单组件
324
- │ │ ├── TableComponents.tsx # 表格组件
325
- │ │ ├── CardComponents.tsx # 卡片组件
326
- │ │ └── index.ts # 组件导出
327
- │ ├── example.tsx # React 示例
328
- │ ├── example.html # HTML 示例
329
- │ ├── run-example.js # Node.js 示例
330
- │ ├── tsconfig.json # 示例编译配置
331
- │ └── dist/ # 编译后的示例文件
332
- ├── package.json # 包配置文件
333
- ├── tsconfig.json # TypeScript 配置
334
- ├── rollup.config.js # Rollup 构建配置
335
- └── README.md # 项目说明文档
336
- ```
337
-
338
- ## 🤝 贡献
339
-
340
- 欢迎提交 Issue 和 Pull Request 来改进这个项目。
341
-
342
211
  ## 📄 许可证
343
212
 
344
- MIT
345
-
346
- ## 🙏 致谢
347
-
348
- - [MDX](https://mdxjs.com/) - Markdown for the component era
349
- - [Remark](https://remark.js.org/) - Markdown processor powered by plugins
350
- - [Rehype](https://github.com/rehypejs/rehype) - HTML processor powered by plugins
351
- - [Mermaid](https://mermaid-js.github.io/) - Generation of diagram and flowchart from text in a similar manner as markdown
213
+ MIT