@crafter/rn-ai-elements 0.0.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 (344) hide show
  1. package/lib/commonjs/chatbot/AIImage.js +126 -0
  2. package/lib/commonjs/chatbot/AIImage.js.map +1 -0
  3. package/lib/commonjs/chatbot/Attachments.js +317 -0
  4. package/lib/commonjs/chatbot/Attachments.js.map +1 -0
  5. package/lib/commonjs/chatbot/ChatErrorBoundary.js +201 -0
  6. package/lib/commonjs/chatbot/ChatErrorBoundary.js.map +1 -0
  7. package/lib/commonjs/chatbot/ChatMessageItem.js +169 -0
  8. package/lib/commonjs/chatbot/ChatMessageItem.js.map +1 -0
  9. package/lib/commonjs/chatbot/Conversation.js +415 -0
  10. package/lib/commonjs/chatbot/Conversation.js.map +1 -0
  11. package/lib/commonjs/chatbot/ConversationScrollButton.js +131 -0
  12. package/lib/commonjs/chatbot/ConversationScrollButton.js.map +1 -0
  13. package/lib/commonjs/chatbot/Message.js +203 -0
  14. package/lib/commonjs/chatbot/Message.js.map +1 -0
  15. package/lib/commonjs/chatbot/PromptInput.js +352 -0
  16. package/lib/commonjs/chatbot/PromptInput.js.map +1 -0
  17. package/lib/commonjs/chatbot/Reasoning.js +184 -0
  18. package/lib/commonjs/chatbot/Reasoning.js.map +1 -0
  19. package/lib/commonjs/chatbot/Shimmer.js +116 -0
  20. package/lib/commonjs/chatbot/Shimmer.js.map +1 -0
  21. package/lib/commonjs/chatbot/Sources.js +212 -0
  22. package/lib/commonjs/chatbot/Sources.js.map +1 -0
  23. package/lib/commonjs/chatbot/Suggestion.js +99 -0
  24. package/lib/commonjs/chatbot/Suggestion.js.map +1 -0
  25. package/lib/commonjs/chatbot/Tool.js +307 -0
  26. package/lib/commonjs/chatbot/Tool.js.map +1 -0
  27. package/lib/commonjs/chatbot/adapters/uiMessageAdapter.js +141 -0
  28. package/lib/commonjs/chatbot/adapters/uiMessageAdapter.js.map +1 -0
  29. package/lib/commonjs/chatbot/index.js +140 -0
  30. package/lib/commonjs/chatbot/index.js.map +1 -0
  31. package/lib/commonjs/chatbot/types.js +6 -0
  32. package/lib/commonjs/chatbot/types.js.map +1 -0
  33. package/lib/commonjs/hooks/index.js +34 -0
  34. package/lib/commonjs/hooks/index.js.map +1 -0
  35. package/lib/commonjs/hooks/useAutoScroll.js +39 -0
  36. package/lib/commonjs/hooks/useAutoScroll.js.map +1 -0
  37. package/lib/commonjs/hooks/useClipboard.js +44 -0
  38. package/lib/commonjs/hooks/useClipboard.js.map +1 -0
  39. package/lib/commonjs/hooks/useCollapsible.js +35 -0
  40. package/lib/commonjs/hooks/useCollapsible.js.map +1 -0
  41. package/lib/commonjs/hooks/useStickToBottom.js +68 -0
  42. package/lib/commonjs/hooks/useStickToBottom.js.map +1 -0
  43. package/lib/commonjs/index.js +257 -0
  44. package/lib/commonjs/index.js.map +1 -0
  45. package/lib/commonjs/package.json +1 -0
  46. package/lib/commonjs/primitives/Badge.js +119 -0
  47. package/lib/commonjs/primitives/Badge.js.map +1 -0
  48. package/lib/commonjs/primitives/Button.js +185 -0
  49. package/lib/commonjs/primitives/Button.js.map +1 -0
  50. package/lib/commonjs/primitives/Card.js +166 -0
  51. package/lib/commonjs/primitives/Card.js.map +1 -0
  52. package/lib/commonjs/primitives/Collapsible.js +137 -0
  53. package/lib/commonjs/primitives/Collapsible.js.map +1 -0
  54. package/lib/commonjs/primitives/ScrollArea.js +40 -0
  55. package/lib/commonjs/primitives/ScrollArea.js.map +1 -0
  56. package/lib/commonjs/primitives/index.js +83 -0
  57. package/lib/commonjs/primitives/index.js.map +1 -0
  58. package/lib/commonjs/streaming/StreamingMarkdown.js +252 -0
  59. package/lib/commonjs/streaming/StreamingMarkdown.js.map +1 -0
  60. package/lib/commonjs/streaming/index.js +13 -0
  61. package/lib/commonjs/streaming/index.js.map +1 -0
  62. package/lib/commonjs/streaming/parser.js +482 -0
  63. package/lib/commonjs/streaming/parser.js.map +1 -0
  64. package/lib/commonjs/streaming/renderers/BlockquoteRenderer.js +35 -0
  65. package/lib/commonjs/streaming/renderers/BlockquoteRenderer.js.map +1 -0
  66. package/lib/commonjs/streaming/renderers/CodeRenderer.js +128 -0
  67. package/lib/commonjs/streaming/renderers/CodeRenderer.js.map +1 -0
  68. package/lib/commonjs/streaming/renderers/HeadingRenderer.js +61 -0
  69. package/lib/commonjs/streaming/renderers/HeadingRenderer.js.map +1 -0
  70. package/lib/commonjs/streaming/renderers/ImageRenderer.js +53 -0
  71. package/lib/commonjs/streaming/renderers/ImageRenderer.js.map +1 -0
  72. package/lib/commonjs/streaming/renderers/LinkRenderer.js +49 -0
  73. package/lib/commonjs/streaming/renderers/LinkRenderer.js.map +1 -0
  74. package/lib/commonjs/streaming/renderers/ListRenderer.js +63 -0
  75. package/lib/commonjs/streaming/renderers/ListRenderer.js.map +1 -0
  76. package/lib/commonjs/streaming/renderers/TableRenderer.js +77 -0
  77. package/lib/commonjs/streaming/renderers/TableRenderer.js.map +1 -0
  78. package/lib/commonjs/streaming/renderers/TextRenderer.js +41 -0
  79. package/lib/commonjs/streaming/renderers/TextRenderer.js.map +1 -0
  80. package/lib/commonjs/streaming/renderers/index.js +76 -0
  81. package/lib/commonjs/streaming/renderers/index.js.map +1 -0
  82. package/lib/commonjs/streaming/renderers/renderInlineChildren.js +112 -0
  83. package/lib/commonjs/streaming/renderers/renderInlineChildren.js.map +1 -0
  84. package/lib/commonjs/streaming/renderers/renderNode.js +81 -0
  85. package/lib/commonjs/streaming/renderers/renderNode.js.map +1 -0
  86. package/lib/commonjs/theme/ThemeProvider.js +68 -0
  87. package/lib/commonjs/theme/ThemeProvider.js.map +1 -0
  88. package/lib/commonjs/theme/defaultTheme.js +96 -0
  89. package/lib/commonjs/theme/defaultTheme.js.map +1 -0
  90. package/lib/commonjs/theme/index.js +32 -0
  91. package/lib/commonjs/theme/index.js.map +1 -0
  92. package/lib/commonjs/theme/tokens.js +2 -0
  93. package/lib/commonjs/theme/tokens.js.map +1 -0
  94. package/lib/commonjs/types.d.js +2 -0
  95. package/lib/commonjs/types.d.js.map +1 -0
  96. package/lib/commonjs/voice/index.js +13 -0
  97. package/lib/commonjs/voice/index.js.map +1 -0
  98. package/lib/commonjs/voice/useSpeechRecognition.js +172 -0
  99. package/lib/commonjs/voice/useSpeechRecognition.js.map +1 -0
  100. package/lib/module/chatbot/AIImage.js +121 -0
  101. package/lib/module/chatbot/AIImage.js.map +1 -0
  102. package/lib/module/chatbot/Attachments.js +312 -0
  103. package/lib/module/chatbot/Attachments.js.map +1 -0
  104. package/lib/module/chatbot/ChatErrorBoundary.js +196 -0
  105. package/lib/module/chatbot/ChatErrorBoundary.js.map +1 -0
  106. package/lib/module/chatbot/ChatMessageItem.js +164 -0
  107. package/lib/module/chatbot/ChatMessageItem.js.map +1 -0
  108. package/lib/module/chatbot/Conversation.js +412 -0
  109. package/lib/module/chatbot/Conversation.js.map +1 -0
  110. package/lib/module/chatbot/ConversationScrollButton.js +126 -0
  111. package/lib/module/chatbot/ConversationScrollButton.js.map +1 -0
  112. package/lib/module/chatbot/Message.js +198 -0
  113. package/lib/module/chatbot/Message.js.map +1 -0
  114. package/lib/module/chatbot/PromptInput.js +347 -0
  115. package/lib/module/chatbot/PromptInput.js.map +1 -0
  116. package/lib/module/chatbot/Reasoning.js +179 -0
  117. package/lib/module/chatbot/Reasoning.js.map +1 -0
  118. package/lib/module/chatbot/Shimmer.js +111 -0
  119. package/lib/module/chatbot/Shimmer.js.map +1 -0
  120. package/lib/module/chatbot/Sources.js +207 -0
  121. package/lib/module/chatbot/Sources.js.map +1 -0
  122. package/lib/module/chatbot/Suggestion.js +94 -0
  123. package/lib/module/chatbot/Suggestion.js.map +1 -0
  124. package/lib/module/chatbot/Tool.js +303 -0
  125. package/lib/module/chatbot/Tool.js.map +1 -0
  126. package/lib/module/chatbot/adapters/uiMessageAdapter.js +137 -0
  127. package/lib/module/chatbot/adapters/uiMessageAdapter.js.map +1 -0
  128. package/lib/module/chatbot/index.js +39 -0
  129. package/lib/module/chatbot/index.js.map +1 -0
  130. package/lib/module/chatbot/types.js +4 -0
  131. package/lib/module/chatbot/types.js.map +1 -0
  132. package/lib/module/hooks/index.js +7 -0
  133. package/lib/module/hooks/index.js.map +1 -0
  134. package/lib/module/hooks/useAutoScroll.js +35 -0
  135. package/lib/module/hooks/useAutoScroll.js.map +1 -0
  136. package/lib/module/hooks/useClipboard.js +40 -0
  137. package/lib/module/hooks/useClipboard.js.map +1 -0
  138. package/lib/module/hooks/useCollapsible.js +31 -0
  139. package/lib/module/hooks/useCollapsible.js.map +1 -0
  140. package/lib/module/hooks/useStickToBottom.js +64 -0
  141. package/lib/module/hooks/useStickToBottom.js.map +1 -0
  142. package/lib/module/index.js +19 -0
  143. package/lib/module/index.js.map +1 -0
  144. package/lib/module/package.json +1 -0
  145. package/lib/module/primitives/Badge.js +114 -0
  146. package/lib/module/primitives/Badge.js.map +1 -0
  147. package/lib/module/primitives/Button.js +180 -0
  148. package/lib/module/primitives/Button.js.map +1 -0
  149. package/lib/module/primitives/Card.js +156 -0
  150. package/lib/module/primitives/Card.js.map +1 -0
  151. package/lib/module/primitives/Collapsible.js +130 -0
  152. package/lib/module/primitives/Collapsible.js.map +1 -0
  153. package/lib/module/primitives/ScrollArea.js +35 -0
  154. package/lib/module/primitives/ScrollArea.js.map +1 -0
  155. package/lib/module/primitives/index.js +8 -0
  156. package/lib/module/primitives/index.js.map +1 -0
  157. package/lib/module/streaming/StreamingMarkdown.js +246 -0
  158. package/lib/module/streaming/StreamingMarkdown.js.map +1 -0
  159. package/lib/module/streaming/index.js +4 -0
  160. package/lib/module/streaming/index.js.map +1 -0
  161. package/lib/module/streaming/parser.js +477 -0
  162. package/lib/module/streaming/parser.js.map +1 -0
  163. package/lib/module/streaming/renderers/BlockquoteRenderer.js +30 -0
  164. package/lib/module/streaming/renderers/BlockquoteRenderer.js.map +1 -0
  165. package/lib/module/streaming/renderers/CodeRenderer.js +123 -0
  166. package/lib/module/streaming/renderers/CodeRenderer.js.map +1 -0
  167. package/lib/module/streaming/renderers/HeadingRenderer.js +56 -0
  168. package/lib/module/streaming/renderers/HeadingRenderer.js.map +1 -0
  169. package/lib/module/streaming/renderers/ImageRenderer.js +48 -0
  170. package/lib/module/streaming/renderers/ImageRenderer.js.map +1 -0
  171. package/lib/module/streaming/renderers/LinkRenderer.js +44 -0
  172. package/lib/module/streaming/renderers/LinkRenderer.js.map +1 -0
  173. package/lib/module/streaming/renderers/ListRenderer.js +58 -0
  174. package/lib/module/streaming/renderers/ListRenderer.js.map +1 -0
  175. package/lib/module/streaming/renderers/TableRenderer.js +72 -0
  176. package/lib/module/streaming/renderers/TableRenderer.js.map +1 -0
  177. package/lib/module/streaming/renderers/TextRenderer.js +36 -0
  178. package/lib/module/streaming/renderers/TextRenderer.js.map +1 -0
  179. package/lib/module/streaming/renderers/index.js +13 -0
  180. package/lib/module/streaming/renderers/index.js.map +1 -0
  181. package/lib/module/streaming/renderers/renderInlineChildren.js +107 -0
  182. package/lib/module/streaming/renderers/renderInlineChildren.js.map +1 -0
  183. package/lib/module/streaming/renderers/renderNode.js +78 -0
  184. package/lib/module/streaming/renderers/renderNode.js.map +1 -0
  185. package/lib/module/theme/ThemeProvider.js +62 -0
  186. package/lib/module/theme/ThemeProvider.js.map +1 -0
  187. package/lib/module/theme/defaultTheme.js +92 -0
  188. package/lib/module/theme/defaultTheme.js.map +1 -0
  189. package/lib/module/theme/index.js +5 -0
  190. package/lib/module/theme/index.js.map +1 -0
  191. package/lib/module/theme/tokens.js +2 -0
  192. package/lib/module/theme/tokens.js.map +1 -0
  193. package/lib/module/types.d.js +2 -0
  194. package/lib/module/types.d.js.map +1 -0
  195. package/lib/module/voice/index.js +14 -0
  196. package/lib/module/voice/index.js.map +1 -0
  197. package/lib/module/voice/useSpeechRecognition.js +169 -0
  198. package/lib/module/voice/useSpeechRecognition.js.map +1 -0
  199. package/lib/typescript/src/chatbot/AIImage.d.ts +24 -0
  200. package/lib/typescript/src/chatbot/AIImage.d.ts.map +1 -0
  201. package/lib/typescript/src/chatbot/Attachments.d.ts +20 -0
  202. package/lib/typescript/src/chatbot/Attachments.d.ts.map +1 -0
  203. package/lib/typescript/src/chatbot/ChatErrorBoundary.d.ts +57 -0
  204. package/lib/typescript/src/chatbot/ChatErrorBoundary.d.ts.map +1 -0
  205. package/lib/typescript/src/chatbot/ChatMessageItem.d.ts +45 -0
  206. package/lib/typescript/src/chatbot/ChatMessageItem.d.ts.map +1 -0
  207. package/lib/typescript/src/chatbot/Conversation.d.ts +94 -0
  208. package/lib/typescript/src/chatbot/Conversation.d.ts.map +1 -0
  209. package/lib/typescript/src/chatbot/ConversationScrollButton.d.ts +62 -0
  210. package/lib/typescript/src/chatbot/ConversationScrollButton.d.ts.map +1 -0
  211. package/lib/typescript/src/chatbot/Message.d.ts +39 -0
  212. package/lib/typescript/src/chatbot/Message.d.ts.map +1 -0
  213. package/lib/typescript/src/chatbot/PromptInput.d.ts +93 -0
  214. package/lib/typescript/src/chatbot/PromptInput.d.ts.map +1 -0
  215. package/lib/typescript/src/chatbot/Reasoning.d.ts +14 -0
  216. package/lib/typescript/src/chatbot/Reasoning.d.ts.map +1 -0
  217. package/lib/typescript/src/chatbot/Shimmer.d.ts +13 -0
  218. package/lib/typescript/src/chatbot/Shimmer.d.ts.map +1 -0
  219. package/lib/typescript/src/chatbot/Sources.d.ts +17 -0
  220. package/lib/typescript/src/chatbot/Sources.d.ts.map +1 -0
  221. package/lib/typescript/src/chatbot/Suggestion.d.ts +15 -0
  222. package/lib/typescript/src/chatbot/Suggestion.d.ts.map +1 -0
  223. package/lib/typescript/src/chatbot/Tool.d.ts +30 -0
  224. package/lib/typescript/src/chatbot/Tool.d.ts.map +1 -0
  225. package/lib/typescript/src/chatbot/adapters/uiMessageAdapter.d.ts +24 -0
  226. package/lib/typescript/src/chatbot/adapters/uiMessageAdapter.d.ts.map +1 -0
  227. package/lib/typescript/src/chatbot/index.d.ts +29 -0
  228. package/lib/typescript/src/chatbot/index.d.ts.map +1 -0
  229. package/lib/typescript/src/chatbot/types.d.ts +49 -0
  230. package/lib/typescript/src/chatbot/types.d.ts.map +1 -0
  231. package/lib/typescript/src/hooks/index.d.ts +9 -0
  232. package/lib/typescript/src/hooks/index.d.ts.map +1 -0
  233. package/lib/typescript/src/hooks/useAutoScroll.d.ts +23 -0
  234. package/lib/typescript/src/hooks/useAutoScroll.d.ts.map +1 -0
  235. package/lib/typescript/src/hooks/useClipboard.d.ts +22 -0
  236. package/lib/typescript/src/hooks/useClipboard.d.ts.map +1 -0
  237. package/lib/typescript/src/hooks/useCollapsible.d.ts +28 -0
  238. package/lib/typescript/src/hooks/useCollapsible.d.ts.map +1 -0
  239. package/lib/typescript/src/hooks/useStickToBottom.d.ts +39 -0
  240. package/lib/typescript/src/hooks/useStickToBottom.d.ts.map +1 -0
  241. package/lib/typescript/src/index.d.ts +11 -0
  242. package/lib/typescript/src/index.d.ts.map +1 -0
  243. package/lib/typescript/src/primitives/Badge.d.ts +10 -0
  244. package/lib/typescript/src/primitives/Badge.d.ts.map +1 -0
  245. package/lib/typescript/src/primitives/Button.d.ts +16 -0
  246. package/lib/typescript/src/primitives/Button.d.ts.map +1 -0
  247. package/lib/typescript/src/primitives/Card.d.ts +33 -0
  248. package/lib/typescript/src/primitives/Card.d.ts.map +1 -0
  249. package/lib/typescript/src/primitives/Collapsible.d.ts +20 -0
  250. package/lib/typescript/src/primitives/Collapsible.d.ts.map +1 -0
  251. package/lib/typescript/src/primitives/ScrollArea.d.ts +10 -0
  252. package/lib/typescript/src/primitives/ScrollArea.d.ts.map +1 -0
  253. package/lib/typescript/src/primitives/index.d.ts +11 -0
  254. package/lib/typescript/src/primitives/index.d.ts.map +1 -0
  255. package/lib/typescript/src/streaming/StreamingMarkdown.d.ts +47 -0
  256. package/lib/typescript/src/streaming/StreamingMarkdown.d.ts.map +1 -0
  257. package/lib/typescript/src/streaming/index.d.ts +3 -0
  258. package/lib/typescript/src/streaming/index.d.ts.map +1 -0
  259. package/lib/typescript/src/streaming/parser.d.ts +41 -0
  260. package/lib/typescript/src/streaming/parser.d.ts.map +1 -0
  261. package/lib/typescript/src/streaming/renderers/BlockquoteRenderer.d.ts +7 -0
  262. package/lib/typescript/src/streaming/renderers/BlockquoteRenderer.d.ts.map +1 -0
  263. package/lib/typescript/src/streaming/renderers/CodeRenderer.d.ts +7 -0
  264. package/lib/typescript/src/streaming/renderers/CodeRenderer.d.ts.map +1 -0
  265. package/lib/typescript/src/streaming/renderers/HeadingRenderer.d.ts +7 -0
  266. package/lib/typescript/src/streaming/renderers/HeadingRenderer.d.ts.map +1 -0
  267. package/lib/typescript/src/streaming/renderers/ImageRenderer.d.ts +7 -0
  268. package/lib/typescript/src/streaming/renderers/ImageRenderer.d.ts.map +1 -0
  269. package/lib/typescript/src/streaming/renderers/LinkRenderer.d.ts +7 -0
  270. package/lib/typescript/src/streaming/renderers/LinkRenderer.d.ts.map +1 -0
  271. package/lib/typescript/src/streaming/renderers/ListRenderer.d.ts +7 -0
  272. package/lib/typescript/src/streaming/renderers/ListRenderer.d.ts.map +1 -0
  273. package/lib/typescript/src/streaming/renderers/TableRenderer.d.ts +7 -0
  274. package/lib/typescript/src/streaming/renderers/TableRenderer.d.ts.map +1 -0
  275. package/lib/typescript/src/streaming/renderers/TextRenderer.d.ts +7 -0
  276. package/lib/typescript/src/streaming/renderers/TextRenderer.d.ts.map +1 -0
  277. package/lib/typescript/src/streaming/renderers/index.d.ts +19 -0
  278. package/lib/typescript/src/streaming/renderers/index.d.ts.map +1 -0
  279. package/lib/typescript/src/streaming/renderers/renderInlineChildren.d.ts +12 -0
  280. package/lib/typescript/src/streaming/renderers/renderInlineChildren.d.ts.map +1 -0
  281. package/lib/typescript/src/streaming/renderers/renderNode.d.ts +8 -0
  282. package/lib/typescript/src/streaming/renderers/renderNode.d.ts.map +1 -0
  283. package/lib/typescript/src/theme/ThemeProvider.d.ts +14 -0
  284. package/lib/typescript/src/theme/ThemeProvider.d.ts.map +1 -0
  285. package/lib/typescript/src/theme/defaultTheme.d.ts +4 -0
  286. package/lib/typescript/src/theme/defaultTheme.d.ts.map +1 -0
  287. package/lib/typescript/src/theme/index.d.ts +5 -0
  288. package/lib/typescript/src/theme/index.d.ts.map +1 -0
  289. package/lib/typescript/src/theme/tokens.d.ts +66 -0
  290. package/lib/typescript/src/theme/tokens.d.ts.map +1 -0
  291. package/lib/typescript/src/voice/index.d.ts +3 -0
  292. package/lib/typescript/src/voice/index.d.ts.map +1 -0
  293. package/lib/typescript/src/voice/useSpeechRecognition.d.ts +77 -0
  294. package/lib/typescript/src/voice/useSpeechRecognition.d.ts.map +1 -0
  295. package/package.json +132 -0
  296. package/src/chatbot/AIImage.tsx +166 -0
  297. package/src/chatbot/Attachments.tsx +382 -0
  298. package/src/chatbot/ChatErrorBoundary.tsx +230 -0
  299. package/src/chatbot/ChatMessageItem.tsx +195 -0
  300. package/src/chatbot/Conversation.tsx +537 -0
  301. package/src/chatbot/ConversationScrollButton.tsx +149 -0
  302. package/src/chatbot/Message.tsx +266 -0
  303. package/src/chatbot/PromptInput.tsx +532 -0
  304. package/src/chatbot/Reasoning.tsx +198 -0
  305. package/src/chatbot/Shimmer.tsx +146 -0
  306. package/src/chatbot/Sources.tsx +263 -0
  307. package/src/chatbot/Suggestion.tsx +123 -0
  308. package/src/chatbot/Tool.tsx +340 -0
  309. package/src/chatbot/adapters/uiMessageAdapter.ts +177 -0
  310. package/src/chatbot/index.ts +97 -0
  311. package/src/chatbot/types.ts +66 -0
  312. package/src/hooks/index.ts +17 -0
  313. package/src/hooks/useAutoScroll.ts +43 -0
  314. package/src/hooks/useClipboard.ts +46 -0
  315. package/src/hooks/useCollapsible.ts +42 -0
  316. package/src/hooks/useStickToBottom.ts +82 -0
  317. package/src/index.ts +139 -0
  318. package/src/primitives/Badge.tsx +119 -0
  319. package/src/primitives/Button.tsx +213 -0
  320. package/src/primitives/Card.tsx +221 -0
  321. package/src/primitives/Collapsible.tsx +168 -0
  322. package/src/primitives/ScrollArea.tsx +53 -0
  323. package/src/primitives/index.ts +36 -0
  324. package/src/streaming/StreamingMarkdown.tsx +282 -0
  325. package/src/streaming/index.ts +2 -0
  326. package/src/streaming/parser.ts +506 -0
  327. package/src/streaming/renderers/BlockquoteRenderer.tsx +42 -0
  328. package/src/streaming/renderers/CodeRenderer.tsx +158 -0
  329. package/src/streaming/renderers/HeadingRenderer.tsx +64 -0
  330. package/src/streaming/renderers/ImageRenderer.tsx +62 -0
  331. package/src/streaming/renderers/LinkRenderer.tsx +53 -0
  332. package/src/streaming/renderers/ListRenderer.tsx +65 -0
  333. package/src/streaming/renderers/TableRenderer.tsx +103 -0
  334. package/src/streaming/renderers/TextRenderer.tsx +39 -0
  335. package/src/streaming/renderers/index.ts +26 -0
  336. package/src/streaming/renderers/renderInlineChildren.tsx +115 -0
  337. package/src/streaming/renderers/renderNode.tsx +72 -0
  338. package/src/theme/ThemeProvider.tsx +77 -0
  339. package/src/theme/defaultTheme.ts +93 -0
  340. package/src/theme/index.ts +4 -0
  341. package/src/theme/tokens.ts +69 -0
  342. package/src/types.d.ts +71 -0
  343. package/src/voice/index.ts +15 -0
  344. package/src/voice/useSpeechRecognition.ts +230 -0
@@ -0,0 +1,477 @@
1
+ "use strict";
2
+
3
+ // ---------------------------------------------------------------------------
4
+ // Incremental markdown parser -- zero dependencies, streaming-aware.
5
+ // Designed for AI chat output: pragmatic, not spec-complete.
6
+ // ---------------------------------------------------------------------------
7
+
8
+ // ---------------------------------------------------------------------------
9
+ // Helpers
10
+ // ---------------------------------------------------------------------------
11
+
12
+ /** Split text into lines, preserving trailing empty line when text ends with \n */
13
+ function splitLines(text) {
14
+ return text.split('\n');
15
+ }
16
+
17
+ /** Check if a line is a horizontal rule (---, ***, ___) */
18
+ function isHorizontalRule(line) {
19
+ const trimmed = line.trim();
20
+ return /^[-*_]{3,}$/.test(trimmed) && /^(-{3,}|\*{3,}|_{3,})$/.test(trimmed);
21
+ }
22
+
23
+ /** Check if a line opens or closes a fenced code block */
24
+ function isFenceLine(line) {
25
+ const match = line.match(/^```(\w*)\s*$/);
26
+ if (match) return {
27
+ isFence: true,
28
+ language: match[1]
29
+ };
30
+ return {
31
+ isFence: false,
32
+ language: ''
33
+ };
34
+ }
35
+
36
+ /** Detect heading line. Returns level (1-6) or 0. */
37
+ function headingLevel(line) {
38
+ const match = line.match(/^(#{1,6})\s+/);
39
+ return match ? match[1].length : 0;
40
+ }
41
+
42
+ /** Detect unordered list item. Returns the content after the bullet or null. */
43
+ function unorderedListItem(line) {
44
+ const match = line.match(/^(\s*)[-*+]\s+(.*)/);
45
+ return match ? match[2] : null;
46
+ }
47
+
48
+ /** Detect ordered list item. Returns content or null. */
49
+ function orderedListItem(line) {
50
+ const match = line.match(/^(\s*)\d+[.)]\s+(.*)/);
51
+ return match ? match[2] : null;
52
+ }
53
+
54
+ /** Detect blockquote line. Returns inner content or null. */
55
+ function blockquoteContent(line) {
56
+ const match = line.match(/^>\s?(.*)/);
57
+ return match ? match[1] : null;
58
+ }
59
+
60
+ /** Detect a table row (starts and ends with |, or starts with |). */
61
+ function isTableRow(line) {
62
+ const trimmed = line.trim();
63
+ return trimmed.startsWith('|') && trimmed.endsWith('|');
64
+ }
65
+
66
+ /** Check if a table row is a separator row (| --- | --- |). */
67
+ function isTableSeparator(line) {
68
+ const trimmed = line.trim();
69
+ if (!trimmed.startsWith('|') || !trimmed.endsWith('|')) return false;
70
+ const inner = trimmed.slice(1, -1);
71
+ const cells = inner.split('|');
72
+ return cells.every(c => /^\s*:?-{2,}:?\s*$/.test(c));
73
+ }
74
+
75
+ /** Parse cells from a table row string. */
76
+ function parseTableCells(line) {
77
+ const trimmed = line.trim();
78
+ const inner = trimmed.startsWith('|') ? trimmed.slice(1) : trimmed;
79
+ const withoutTrailing = inner.endsWith('|') ? inner.slice(0, -1) : inner;
80
+ return withoutTrailing.split('|').map(c => c.trim());
81
+ }
82
+
83
+ // ---------------------------------------------------------------------------
84
+ // Inline parsing
85
+ // ---------------------------------------------------------------------------
86
+
87
+ /**
88
+ * Parse inline markdown (bold, italic, bold-italic, code, links, images)
89
+ * into a flat list of MarkdownNode children.
90
+ */
91
+ function parseInline(text) {
92
+ const nodes = [];
93
+ let i = 0;
94
+ let buffer = '';
95
+ const flush = () => {
96
+ if (buffer.length > 0) {
97
+ nodes.push({
98
+ type: 'text',
99
+ content: buffer
100
+ });
101
+ buffer = '';
102
+ }
103
+ };
104
+ while (i < text.length) {
105
+ // --- Images: ![alt](url) ---
106
+ if (text[i] === '!' && text[i + 1] === '[') {
107
+ const altClose = text.indexOf(']', i + 2);
108
+ if (altClose !== -1 && text[altClose + 1] === '(') {
109
+ const urlClose = text.indexOf(')', altClose + 2);
110
+ if (urlClose !== -1) {
111
+ flush();
112
+ const alt = text.slice(i + 2, altClose);
113
+ const url = text.slice(altClose + 2, urlClose);
114
+ nodes.push({
115
+ type: 'image',
116
+ alt,
117
+ url
118
+ });
119
+ i = urlClose + 1;
120
+ continue;
121
+ }
122
+ }
123
+ }
124
+
125
+ // --- Links: [text](url) ---
126
+ if (text[i] === '[') {
127
+ const labelClose = text.indexOf(']', i + 1);
128
+ if (labelClose !== -1 && text[labelClose + 1] === '(') {
129
+ const urlClose = text.indexOf(')', labelClose + 2);
130
+ if (urlClose !== -1) {
131
+ flush();
132
+ const label = text.slice(i + 1, labelClose);
133
+ const url = text.slice(labelClose + 2, urlClose);
134
+ nodes.push({
135
+ type: 'link',
136
+ url,
137
+ children: parseInline(label)
138
+ });
139
+ i = urlClose + 1;
140
+ continue;
141
+ }
142
+ }
143
+ }
144
+
145
+ // --- Inline code: `...` ---
146
+ if (text[i] === '`') {
147
+ const end = text.indexOf('`', i + 1);
148
+ if (end !== -1) {
149
+ flush();
150
+ nodes.push({
151
+ type: 'code_inline',
152
+ content: text.slice(i + 1, end)
153
+ });
154
+ i = end + 1;
155
+ continue;
156
+ }
157
+ }
158
+
159
+ // --- Bold-italic: ***...*** or ___...___ ---
160
+ if (text[i] === '*' && text[i + 1] === '*' && text[i + 2] === '*' || text[i] === '_' && text[i + 1] === '_' && text[i + 2] === '_') {
161
+ const marker = text.slice(i, i + 3);
162
+ const end = text.indexOf(marker, i + 3);
163
+ if (end !== -1) {
164
+ flush();
165
+ nodes.push({
166
+ type: 'bold_italic',
167
+ children: parseInline(text.slice(i + 3, end))
168
+ });
169
+ i = end + 3;
170
+ continue;
171
+ }
172
+ }
173
+
174
+ // --- Bold: **...** or __...__ ---
175
+ if (text[i] === '*' && text[i + 1] === '*' || text[i] === '_' && text[i + 1] === '_') {
176
+ const marker = text.slice(i, i + 2);
177
+ const end = text.indexOf(marker, i + 2);
178
+ if (end !== -1) {
179
+ flush();
180
+ nodes.push({
181
+ type: 'bold',
182
+ children: parseInline(text.slice(i + 2, end))
183
+ });
184
+ i = end + 2;
185
+ continue;
186
+ }
187
+ }
188
+
189
+ // --- Italic: *...* or _..._ ---
190
+ if (text[i] === '*' || text[i] === '_') {
191
+ const marker = text[i];
192
+ const end = text.indexOf(marker, i + 1);
193
+ if (end !== -1 && end > i + 1) {
194
+ flush();
195
+ nodes.push({
196
+ type: 'italic',
197
+ children: parseInline(text.slice(i + 1, end))
198
+ });
199
+ i = end + 1;
200
+ continue;
201
+ }
202
+ }
203
+ buffer += text[i];
204
+ i++;
205
+ }
206
+ flush();
207
+ return nodes;
208
+ }
209
+
210
+ // ---------------------------------------------------------------------------
211
+ // Block-level parsing
212
+ // ---------------------------------------------------------------------------
213
+
214
+ /**
215
+ * Group consecutive lines of the same block type. Returns parsed nodes.
216
+ * `lines` must NOT include a trailing empty string from a final newline
217
+ * unless it is meaningful.
218
+ */
219
+ function parseBlocks(lines) {
220
+ const nodes = [];
221
+ let i = 0;
222
+ while (i < lines.length) {
223
+ const line = lines[i];
224
+
225
+ // --- Empty line: skip ---
226
+ if (line.trim() === '') {
227
+ i++;
228
+ continue;
229
+ }
230
+
231
+ // --- Fenced code block ---
232
+ const fence = isFenceLine(line);
233
+ if (fence.isFence) {
234
+ const codeLines = [];
235
+ i++;
236
+ let closed = false;
237
+ while (i < lines.length) {
238
+ if (isFenceLine(lines[i]).isFence && lines[i].trim() === '```') {
239
+ closed = true;
240
+ i++;
241
+ break;
242
+ }
243
+ codeLines.push(lines[i]);
244
+ i++;
245
+ }
246
+ nodes.push({
247
+ type: 'code_block',
248
+ content: codeLines.join('\n'),
249
+ language: fence.language || undefined
250
+ });
251
+ // If not closed, the outer caller marks isStreaming via lastSafeIndex
252
+ if (!closed) {
253
+ // Return what we have; caller will detect incomplete state
254
+ }
255
+ continue;
256
+ }
257
+
258
+ // --- Horizontal rule ---
259
+ if (isHorizontalRule(line)) {
260
+ nodes.push({
261
+ type: 'horizontal_rule'
262
+ });
263
+ i++;
264
+ continue;
265
+ }
266
+
267
+ // --- Heading ---
268
+ const hl = headingLevel(line);
269
+ if (hl > 0) {
270
+ const content = line.replace(/^#{1,6}\s+/, '');
271
+ nodes.push({
272
+ type: 'heading',
273
+ level: hl,
274
+ children: parseInline(content)
275
+ });
276
+ i++;
277
+ continue;
278
+ }
279
+
280
+ // --- Table ---
281
+ if (isTableRow(line)) {
282
+ const tableRows = [];
283
+ let isHeader = true;
284
+ while (i < lines.length && isTableRow(lines[i])) {
285
+ if (isTableSeparator(lines[i])) {
286
+ // Separator row: skip it, next rows are body
287
+ isHeader = false;
288
+ i++;
289
+ continue;
290
+ }
291
+ const cellTexts = parseTableCells(lines[i]);
292
+ const cells = cellTexts.map(ct => ({
293
+ type: 'table_cell',
294
+ header: isHeader,
295
+ children: parseInline(ct)
296
+ }));
297
+ tableRows.push({
298
+ type: 'table_row',
299
+ children: cells
300
+ });
301
+ i++;
302
+ }
303
+ nodes.push({
304
+ type: 'table',
305
+ children: tableRows
306
+ });
307
+ continue;
308
+ }
309
+
310
+ // --- Blockquote ---
311
+ const bqContent = blockquoteContent(line);
312
+ if (bqContent !== null) {
313
+ const bqLines = [bqContent];
314
+ i++;
315
+ while (i < lines.length) {
316
+ const next = blockquoteContent(lines[i]);
317
+ if (next !== null) {
318
+ bqLines.push(next);
319
+ i++;
320
+ } else {
321
+ break;
322
+ }
323
+ }
324
+ nodes.push({
325
+ type: 'blockquote',
326
+ children: parseBlocks(bqLines)
327
+ });
328
+ continue;
329
+ }
330
+
331
+ // --- Unordered list ---
332
+ const ulContent = unorderedListItem(line);
333
+ if (ulContent !== null) {
334
+ const items = [];
335
+ while (i < lines.length) {
336
+ const itemContent = unorderedListItem(lines[i]);
337
+ if (itemContent !== null) {
338
+ items.push({
339
+ type: 'list_item',
340
+ children: parseInline(itemContent)
341
+ });
342
+ i++;
343
+ } else if (lines[i].trim() === '') {
344
+ // Allow a single blank line within a list
345
+ i++;
346
+ } else {
347
+ break;
348
+ }
349
+ }
350
+ nodes.push({
351
+ type: 'list',
352
+ ordered: false,
353
+ children: items
354
+ });
355
+ continue;
356
+ }
357
+
358
+ // --- Ordered list ---
359
+ const olContent = orderedListItem(line);
360
+ if (olContent !== null) {
361
+ const items = [];
362
+ while (i < lines.length) {
363
+ const itemContent = orderedListItem(lines[i]);
364
+ if (itemContent !== null) {
365
+ items.push({
366
+ type: 'list_item',
367
+ children: parseInline(itemContent)
368
+ });
369
+ i++;
370
+ } else if (lines[i].trim() === '') {
371
+ i++;
372
+ } else {
373
+ break;
374
+ }
375
+ }
376
+ nodes.push({
377
+ type: 'list',
378
+ ordered: true,
379
+ children: items
380
+ });
381
+ continue;
382
+ }
383
+
384
+ // --- Paragraph (default) ---
385
+ // Collect consecutive non-blank, non-special lines.
386
+ const paraLines = [line];
387
+ i++;
388
+ while (i < lines.length) {
389
+ const next = lines[i];
390
+ if (next.trim() === '' || headingLevel(next) > 0 || isFenceLine(next).isFence || isHorizontalRule(next) || unorderedListItem(next) !== null || orderedListItem(next) !== null || blockquoteContent(next) !== null || isTableRow(next)) {
391
+ break;
392
+ }
393
+ paraLines.push(next);
394
+ i++;
395
+ }
396
+ nodes.push({
397
+ type: 'paragraph',
398
+ children: parseInline(paraLines.join('\n'))
399
+ });
400
+ }
401
+ return nodes;
402
+ }
403
+
404
+ // ---------------------------------------------------------------------------
405
+ // Streaming-awareness helpers
406
+ // ---------------------------------------------------------------------------
407
+
408
+ /**
409
+ * Find the last "safe" index in the source text: the position up to which
410
+ * all blocks are fully closed. An unclosed fenced code block means we
411
+ * are still streaming.
412
+ */
413
+ function computeSafeIndex(text) {
414
+ let fenceOpen = false;
415
+ let lastSafeIndex = 0;
416
+ const lines = splitLines(text);
417
+ let charIndex = 0;
418
+ for (let i = 0; i < lines.length; i++) {
419
+ const lineLength = lines[i].length;
420
+ const lineEnd = charIndex + lineLength + (i < lines.length - 1 ? 1 : 0); // +1 for \n
421
+
422
+ if (fenceOpen) {
423
+ if (lines[i].trim() === '```') {
424
+ fenceOpen = false;
425
+ lastSafeIndex = lineEnd;
426
+ }
427
+ } else {
428
+ const fence = isFenceLine(lines[i]);
429
+ if (fence.isFence) {
430
+ fenceOpen = true;
431
+ } else {
432
+ lastSafeIndex = lineEnd;
433
+ }
434
+ }
435
+ charIndex = lineEnd;
436
+ }
437
+ return {
438
+ lastSafeIndex,
439
+ isStreaming: fenceOpen
440
+ };
441
+ }
442
+
443
+ // ---------------------------------------------------------------------------
444
+ // Public API
445
+ // ---------------------------------------------------------------------------
446
+
447
+ /**
448
+ * Parse a complete markdown string into an AST.
449
+ * Suitable for non-streaming use cases.
450
+ */
451
+ export function parseMarkdown(text) {
452
+ const lines = splitLines(text);
453
+ return parseBlocks(lines);
454
+ }
455
+
456
+ /**
457
+ * Incremental streaming-aware parse.
458
+ *
459
+ * When `previousResult` is supplied the parser can skip re-parsing blocks
460
+ * that haven't changed (those before `previousResult.lastSafeIndex`).
461
+ * In practice, for simplicity in v1, we re-parse the full text but still
462
+ * return `isStreaming` and `lastSafeIndex` so the renderer can optimise.
463
+ */
464
+ export function parseMarkdownIncremental(text, _previousResult) {
465
+ const {
466
+ lastSafeIndex,
467
+ isStreaming
468
+ } = computeSafeIndex(text);
469
+ const lines = splitLines(text);
470
+ const nodes = parseBlocks(lines);
471
+ return {
472
+ nodes,
473
+ isStreaming,
474
+ lastSafeIndex
475
+ };
476
+ }
477
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["splitLines","text","split","isHorizontalRule","line","trimmed","trim","test","isFenceLine","match","isFence","language","headingLevel","length","unorderedListItem","orderedListItem","blockquoteContent","isTableRow","startsWith","endsWith","isTableSeparator","inner","slice","cells","every","c","parseTableCells","withoutTrailing","map","parseInline","nodes","i","buffer","flush","push","type","content","altClose","indexOf","urlClose","alt","url","labelClose","label","children","end","marker","parseBlocks","lines","fence","codeLines","closed","join","undefined","hl","replace","level","tableRows","isHeader","cellTexts","ct","header","bqContent","bqLines","next","ulContent","items","itemContent","ordered","olContent","paraLines","computeSafeIndex","fenceOpen","lastSafeIndex","charIndex","lineLength","lineEnd","isStreaming","parseMarkdown","parseMarkdownIncremental","_previousResult"],"sourceRoot":"../../../src","sources":["streaming/parser.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { View, StyleSheet } from 'react-native';
5
+ import { useAIElementsTheme } from '../../theme';
6
+ import { renderNode } from './renderNode';
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ export const BlockquoteRenderer = /*#__PURE__*/React.memo(function BlockquoteRenderer({
9
+ node
10
+ }) {
11
+ const theme = useAIElementsTheme();
12
+ return /*#__PURE__*/_jsx(View, {
13
+ style: [styles.container, {
14
+ borderLeftColor: theme.colors.border,
15
+ backgroundColor: theme.colors.muted,
16
+ borderRadius: theme.radius.sm
17
+ }],
18
+ children: (node.children ?? []).map((child, index) => renderNode(child, `bq-${index}`))
19
+ });
20
+ });
21
+ const styles = StyleSheet.create({
22
+ container: {
23
+ borderLeftWidth: 3,
24
+ paddingLeft: 12,
25
+ paddingVertical: 8,
26
+ paddingRight: 8,
27
+ marginVertical: 8
28
+ }
29
+ });
30
+ //# sourceMappingURL=BlockquoteRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","StyleSheet","useAIElementsTheme","renderNode","jsx","_jsx","BlockquoteRenderer","memo","node","theme","style","styles","container","borderLeftColor","colors","border","backgroundColor","muted","borderRadius","radius","sm","children","map","child","index","create","borderLeftWidth","paddingLeft","paddingVertical","paddingRight","marginVertical"],"sourceRoot":"../../../../src","sources":["streaming/renderers/BlockquoteRenderer.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAC/C,SAASC,kBAAkB,QAAQ,aAAa;AAEhD,SAASC,UAAU,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAM1C,OAAO,MAAMC,kBAAkB,gBAAGP,KAAK,CAACQ,IAAI,CAAC,SAASD,kBAAkBA,CAAC;EACvEE;AACuB,CAAC,EAAE;EAC1B,MAAMC,KAAK,GAAGP,kBAAkB,CAAC,CAAC;EAElC,oBACEG,IAAA,CAACL,IAAI;IACHU,KAAK,EAAE,CACLC,MAAM,CAACC,SAAS,EAChB;MACEC,eAAe,EAAEJ,KAAK,CAACK,MAAM,CAACC,MAAM;MACpCC,eAAe,EAAEP,KAAK,CAACK,MAAM,CAACG,KAAK;MACnCC,YAAY,EAAET,KAAK,CAACU,MAAM,CAACC;IAC7B,CAAC,CACD;IAAAC,QAAA,EAED,CAACb,IAAI,CAACa,QAAQ,IAAI,EAAE,EAAEC,GAAG,CAAC,CAACC,KAAK,EAAEC,KAAK,KACtCrB,UAAU,CAACoB,KAAK,EAAE,MAAMC,KAAK,EAAE,CACjC;EAAC,CACG,CAAC;AAEX,CAAC,CAAC;AAEF,MAAMb,MAAM,GAAGV,UAAU,CAACwB,MAAM,CAAC;EAC/Bb,SAAS,EAAE;IACTc,eAAe,EAAE,CAAC;IAClBC,WAAW,EAAE,EAAE;IACfC,eAAe,EAAE,CAAC;IAClBC,YAAY,EAAE,CAAC;IACfC,cAAc,EAAE;EAClB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+
3
+ import React, { useCallback } from 'react';
4
+ import { View, Text, ScrollView, Pressable, StyleSheet } from 'react-native';
5
+ import { useAIElementsTheme } from '../../theme';
6
+ import { useClipboard } from '../../hooks/useClipboard';
7
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ export const CodeRenderer = /*#__PURE__*/React.memo(function CodeRenderer({
9
+ node
10
+ }) {
11
+ const theme = useAIElementsTheme();
12
+ const {
13
+ copy,
14
+ copied
15
+ } = useClipboard();
16
+ const handleCopy = useCallback(() => {
17
+ if (node.content) {
18
+ copy(node.content);
19
+ }
20
+ }, [copy, node.content]);
21
+
22
+ // --- Inline code ---
23
+ if (node.type === 'code_inline') {
24
+ const inlineStyle = {
25
+ fontFamily: theme.typography.monoFontFamily,
26
+ fontSize: theme.typography.fontSize.sm,
27
+ backgroundColor: theme.colors.muted,
28
+ color: theme.colors.foreground,
29
+ borderRadius: theme.radius.sm,
30
+ paddingHorizontal: 4,
31
+ paddingVertical: 1
32
+ };
33
+ return /*#__PURE__*/_jsx(Text, {
34
+ style: inlineStyle,
35
+ children: node.content
36
+ });
37
+ }
38
+
39
+ // --- Code block ---
40
+ return /*#__PURE__*/_jsxs(View, {
41
+ style: [styles.container, {
42
+ backgroundColor: theme.colors.muted,
43
+ borderRadius: theme.radius.md,
44
+ borderColor: theme.colors.border
45
+ }],
46
+ children: [/*#__PURE__*/_jsxs(View, {
47
+ style: [styles.header, {
48
+ borderBottomColor: theme.colors.border
49
+ }],
50
+ children: [/*#__PURE__*/_jsx(Text, {
51
+ style: [styles.language, {
52
+ color: theme.colors.mutedForeground,
53
+ fontFamily: theme.typography.monoFontFamily,
54
+ fontSize: theme.typography.fontSize.xs
55
+ }],
56
+ children: node.language ?? ''
57
+ }), /*#__PURE__*/_jsx(Pressable, {
58
+ onPress: handleCopy,
59
+ hitSlop: 8,
60
+ style: ({
61
+ pressed
62
+ }) => [styles.copyButton, {
63
+ backgroundColor: pressed ? theme.colors.border : 'transparent',
64
+ borderRadius: theme.radius.sm
65
+ }],
66
+ children: /*#__PURE__*/_jsx(Text, {
67
+ style: {
68
+ color: theme.colors.mutedForeground,
69
+ fontSize: theme.typography.fontSize.xs,
70
+ fontFamily: theme.typography.fontFamily
71
+ },
72
+ children: copied ? 'Copied!' : 'Copy'
73
+ })
74
+ })]
75
+ }), /*#__PURE__*/_jsx(ScrollView, {
76
+ horizontal: true,
77
+ showsHorizontalScrollIndicator: false,
78
+ style: styles.scrollView,
79
+ contentContainerStyle: styles.scrollContent,
80
+ children: /*#__PURE__*/_jsx(Text, {
81
+ style: [styles.code, {
82
+ color: theme.colors.foreground,
83
+ fontFamily: theme.typography.monoFontFamily,
84
+ fontSize: theme.typography.fontSize.sm,
85
+ lineHeight: theme.typography.fontSize.sm * theme.typography.lineHeight.normal
86
+ }],
87
+ children: node.content
88
+ })
89
+ })]
90
+ });
91
+ });
92
+ const styles = StyleSheet.create({
93
+ container: {
94
+ marginVertical: 8,
95
+ borderWidth: 1,
96
+ overflow: 'hidden'
97
+ },
98
+ header: {
99
+ flexDirection: 'row',
100
+ justifyContent: 'space-between',
101
+ alignItems: 'center',
102
+ paddingHorizontal: 12,
103
+ paddingVertical: 6,
104
+ borderBottomWidth: 1
105
+ },
106
+ language: {
107
+ textTransform: 'lowercase'
108
+ },
109
+ copyButton: {
110
+ paddingHorizontal: 8,
111
+ paddingVertical: 4
112
+ },
113
+ scrollView: {
114
+ flexGrow: 0
115
+ },
116
+ scrollContent: {
117
+ padding: 12
118
+ },
119
+ code: {
120
+ // fontFamily and fontSize applied dynamically
121
+ }
122
+ });
123
+ //# sourceMappingURL=CodeRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","View","Text","ScrollView","Pressable","StyleSheet","useAIElementsTheme","useClipboard","jsx","_jsx","jsxs","_jsxs","CodeRenderer","memo","node","theme","copy","copied","handleCopy","content","type","inlineStyle","fontFamily","typography","monoFontFamily","fontSize","sm","backgroundColor","colors","muted","color","foreground","borderRadius","radius","paddingHorizontal","paddingVertical","style","children","styles","container","md","borderColor","border","header","borderBottomColor","language","mutedForeground","xs","onPress","hitSlop","pressed","copyButton","horizontal","showsHorizontalScrollIndicator","scrollView","contentContainerStyle","scrollContent","code","lineHeight","normal","create","marginVertical","borderWidth","overflow","flexDirection","justifyContent","alignItems","borderBottomWidth","textTransform","flexGrow","padding"],"sourceRoot":"../../../../src","sources":["streaming/renderers/CodeRenderer.tsx"],"mappings":"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","ignoreList":[]}