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