@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,56 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { Text, StyleSheet } from 'react-native';
5
+ import { useAIElementsTheme } from '../../theme';
6
+ import { renderInlineChildren } from './renderInlineChildren';
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ function headingStyle(level, theme) {
9
+ const {
10
+ typography,
11
+ colors
12
+ } = theme;
13
+ const weight = typography.fontWeight.bold;
14
+ const sizeMap = {
15
+ 1: typography.fontSize['2xl'],
16
+ 2: typography.fontSize.xl,
17
+ 3: typography.fontSize.lg,
18
+ 4: typography.fontSize.md,
19
+ 5: typography.fontSize.sm,
20
+ 6: typography.fontSize.xs
21
+ };
22
+ const marginMap = {
23
+ 1: 20,
24
+ 2: 16,
25
+ 3: 14,
26
+ 4: 12,
27
+ 5: 10,
28
+ 6: 8
29
+ };
30
+ const fontSize = sizeMap[level] ?? typography.fontSize.md;
31
+ return {
32
+ fontSize,
33
+ fontWeight: weight,
34
+ fontFamily: typography.fontFamily,
35
+ color: colors.foreground,
36
+ lineHeight: fontSize * typography.lineHeight.tight,
37
+ marginTop: marginMap[level] ?? 12,
38
+ marginBottom: 8
39
+ };
40
+ }
41
+ export const HeadingRenderer = /*#__PURE__*/React.memo(function HeadingRenderer({
42
+ node
43
+ }) {
44
+ const theme = useAIElementsTheme();
45
+ const level = node.level ?? 1;
46
+ return /*#__PURE__*/_jsx(Text, {
47
+ style: [styles.base, headingStyle(level, theme)],
48
+ children: renderInlineChildren(node.children, theme)
49
+ });
50
+ });
51
+ const styles = StyleSheet.create({
52
+ base: {
53
+ flexShrink: 1
54
+ }
55
+ });
56
+ //# sourceMappingURL=HeadingRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Text","StyleSheet","useAIElementsTheme","renderInlineChildren","jsx","_jsx","headingStyle","level","theme","typography","colors","weight","fontWeight","bold","sizeMap","fontSize","xl","lg","md","sm","xs","marginMap","fontFamily","color","foreground","lineHeight","tight","marginTop","marginBottom","HeadingRenderer","memo","node","style","styles","base","children","create","flexShrink"],"sourceRoot":"../../../../src","sources":["streaming/renderers/HeadingRenderer.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,UAAU,QAAwB,cAAc;AAC/D,SAASC,kBAAkB,QAAQ,aAAa;AAGhD,SAASC,oBAAoB,QAAQ,wBAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAM9D,SAASC,YAAYA,CAACC,KAAa,EAAEC,KAAsB,EAAa;EACtE,MAAM;IAAEC,UAAU;IAAEC;EAAO,CAAC,GAAGF,KAAK;EACpC,MAAMG,MAAM,GAAGF,UAAU,CAACG,UAAU,CAACC,IAA+B;EAEpE,MAAMC,OAA+B,GAAG;IACtC,CAAC,EAAEL,UAAU,CAACM,QAAQ,CAAC,KAAK,CAAC;IAC7B,CAAC,EAAEN,UAAU,CAACM,QAAQ,CAACC,EAAE;IACzB,CAAC,EAAEP,UAAU,CAACM,QAAQ,CAACE,EAAE;IACzB,CAAC,EAAER,UAAU,CAACM,QAAQ,CAACG,EAAE;IACzB,CAAC,EAAET,UAAU,CAACM,QAAQ,CAACI,EAAE;IACzB,CAAC,EAAEV,UAAU,CAACM,QAAQ,CAACK;EACzB,CAAC;EAED,MAAMC,SAAiC,GAAG;IACxC,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE;EACL,CAAC;EAED,MAAMN,QAAQ,GAAGD,OAAO,CAACP,KAAK,CAAC,IAAIE,UAAU,CAACM,QAAQ,CAACG,EAAE;EAEzD,OAAO;IACLH,QAAQ;IACRH,UAAU,EAAED,MAAM;IAClBW,UAAU,EAAEb,UAAU,CAACa,UAAU;IACjCC,KAAK,EAAEb,MAAM,CAACc,UAAU;IACxBC,UAAU,EAAEV,QAAQ,GAAGN,UAAU,CAACgB,UAAU,CAACC,KAAK;IAClDC,SAAS,EAAEN,SAAS,CAACd,KAAK,CAAC,IAAI,EAAE;IACjCqB,YAAY,EAAE;EAChB,CAAC;AACH;AAEA,OAAO,MAAMC,eAAe,gBAAG9B,KAAK,CAAC+B,IAAI,CAAC,SAASD,eAAeA,CAAC;EACjEE;AACoB,CAAC,EAAE;EACvB,MAAMvB,KAAK,GAAGN,kBAAkB,CAAC,CAAC;EAClC,MAAMK,KAAK,GAAGwB,IAAI,CAACxB,KAAK,IAAI,CAAC;EAE7B,oBACEF,IAAA,CAACL,IAAI;IAACgC,KAAK,EAAE,CAACC,MAAM,CAACC,IAAI,EAAE5B,YAAY,CAACC,KAAK,EAAEC,KAAK,CAAC,CAAE;IAAA2B,QAAA,EACpDhC,oBAAoB,CAAC4B,IAAI,CAACI,QAAQ,EAAE3B,KAAK;EAAC,CACvC,CAAC;AAEX,CAAC,CAAC;AAEF,MAAMyB,MAAM,GAAGhC,UAAU,CAACmC,MAAM,CAAC;EAC/BF,IAAI,EAAE;IACJG,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { Image, View, Text, StyleSheet } from 'react-native';
5
+ import { useAIElementsTheme } from '../../theme';
6
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ export const ImageRenderer = /*#__PURE__*/React.memo(function ImageRenderer({
8
+ node
9
+ }) {
10
+ const theme = useAIElementsTheme();
11
+ if (!node.url) return null;
12
+ return /*#__PURE__*/_jsxs(View, {
13
+ style: styles.container,
14
+ children: [/*#__PURE__*/_jsx(Image, {
15
+ source: {
16
+ uri: node.url
17
+ },
18
+ style: [styles.image, {
19
+ borderRadius: theme.radius.md,
20
+ backgroundColor: theme.colors.muted
21
+ }],
22
+ resizeMode: "contain",
23
+ accessibilityLabel: node.alt ?? undefined
24
+ }), node.alt ? /*#__PURE__*/_jsx(Text, {
25
+ style: [styles.caption, {
26
+ color: theme.colors.mutedForeground,
27
+ fontSize: theme.typography.fontSize.sm,
28
+ fontFamily: theme.typography.fontFamily
29
+ }],
30
+ children: node.alt
31
+ }) : null]
32
+ });
33
+ });
34
+ const styles = StyleSheet.create({
35
+ container: {
36
+ marginVertical: 8,
37
+ alignItems: 'center'
38
+ },
39
+ image: {
40
+ width: '100%',
41
+ height: 200
42
+ },
43
+ caption: {
44
+ marginTop: 4,
45
+ textAlign: 'center'
46
+ }
47
+ });
48
+ //# sourceMappingURL=ImageRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Image","View","Text","StyleSheet","useAIElementsTheme","jsx","_jsx","jsxs","_jsxs","ImageRenderer","memo","node","theme","url","style","styles","container","children","source","uri","image","borderRadius","radius","md","backgroundColor","colors","muted","resizeMode","accessibilityLabel","alt","undefined","caption","color","mutedForeground","fontSize","typography","sm","fontFamily","create","marginVertical","alignItems","width","height","marginTop","textAlign"],"sourceRoot":"../../../../src","sources":["streaming/renderers/ImageRenderer.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,KAAK,EAAEC,IAAI,EAAEC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAC5D,SAASC,kBAAkB,QAAQ,aAAa;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOjD,OAAO,MAAMC,aAAa,gBAAGV,KAAK,CAACW,IAAI,CAAC,SAASD,aAAaA,CAAC;EAC7DE;AACkB,CAAC,EAAE;EACrB,MAAMC,KAAK,GAAGR,kBAAkB,CAAC,CAAC;EAElC,IAAI,CAACO,IAAI,CAACE,GAAG,EAAE,OAAO,IAAI;EAE1B,oBACEL,KAAA,CAACP,IAAI;IAACa,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,gBAC5BX,IAAA,CAACN,KAAK;MACJkB,MAAM,EAAE;QAAEC,GAAG,EAAER,IAAI,CAACE;MAAI,CAAE;MAC1BC,KAAK,EAAE,CACLC,MAAM,CAACK,KAAK,EACZ;QACEC,YAAY,EAAET,KAAK,CAACU,MAAM,CAACC,EAAE;QAC7BC,eAAe,EAAEZ,KAAK,CAACa,MAAM,CAACC;MAChC,CAAC,CACD;MACFC,UAAU,EAAC,SAAS;MACpBC,kBAAkB,EAAEjB,IAAI,CAACkB,GAAG,IAAIC;IAAU,CAC3C,CAAC,EACDnB,IAAI,CAACkB,GAAG,gBACPvB,IAAA,CAACJ,IAAI;MACHY,KAAK,EAAE,CACLC,MAAM,CAACgB,OAAO,EACd;QACEC,KAAK,EAAEpB,KAAK,CAACa,MAAM,CAACQ,eAAe;QACnCC,QAAQ,EAAEtB,KAAK,CAACuB,UAAU,CAACD,QAAQ,CAACE,EAAE;QACtCC,UAAU,EAAEzB,KAAK,CAACuB,UAAU,CAACE;MAC/B,CAAC,CACD;MAAApB,QAAA,EAEDN,IAAI,CAACkB;IAAG,CACL,CAAC,GACL,IAAI;EAAA,CACJ,CAAC;AAEX,CAAC,CAAC;AAEF,MAAMd,MAAM,GAAGZ,UAAU,CAACmC,MAAM,CAAC;EAC/BtB,SAAS,EAAE;IACTuB,cAAc,EAAE,CAAC;IACjBC,UAAU,EAAE;EACd,CAAC;EACDpB,KAAK,EAAE;IACLqB,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE;EACV,CAAC;EACDX,OAAO,EAAE;IACPY,SAAS,EAAE,CAAC;IACZC,SAAS,EAAE;EACb;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ import React, { useCallback } from 'react';
4
+ import { Text, Pressable, Linking, StyleSheet } from 'react-native';
5
+ import { useAIElementsTheme } from '../../theme';
6
+ import { renderInlineChildren } from './renderInlineChildren';
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ export const LinkRenderer = /*#__PURE__*/React.memo(function LinkRenderer({
9
+ node
10
+ }) {
11
+ const theme = useAIElementsTheme();
12
+ const handlePress = useCallback(() => {
13
+ if (node.url) {
14
+ Linking.openURL(node.url).catch(() => {
15
+ // Silently ignore -- the URL may not be openable.
16
+ });
17
+ }
18
+ }, [node.url]);
19
+ const textStyle = {
20
+ color: theme.colors.primary,
21
+ fontSize: theme.typography.fontSize.md,
22
+ fontFamily: theme.typography.fontFamily,
23
+ textDecorationLine: 'underline'
24
+ };
25
+ return /*#__PURE__*/_jsx(Pressable, {
26
+ onPress: handlePress,
27
+ style: ({
28
+ pressed
29
+ }) => [styles.pressable, pressed && styles.pressed],
30
+ children: /*#__PURE__*/_jsx(Text, {
31
+ style: textStyle,
32
+ children: renderInlineChildren(node.children, theme)
33
+ })
34
+ });
35
+ });
36
+ const styles = StyleSheet.create({
37
+ pressable: {
38
+ alignSelf: 'flex-start'
39
+ },
40
+ pressed: {
41
+ opacity: 0.7
42
+ }
43
+ });
44
+ //# sourceMappingURL=LinkRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","Text","Pressable","Linking","StyleSheet","useAIElementsTheme","renderInlineChildren","jsx","_jsx","LinkRenderer","memo","node","theme","handlePress","url","openURL","catch","textStyle","color","colors","primary","fontSize","typography","md","fontFamily","textDecorationLine","onPress","style","pressed","styles","pressable","children","create","alignSelf","opacity"],"sourceRoot":"../../../../src","sources":["streaming/renderers/LinkRenderer.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,IAAI,EAAEC,SAAS,EAAEC,OAAO,EAAEC,UAAU,QAAwB,cAAc;AACnF,SAASC,kBAAkB,QAAQ,aAAa;AAEhD,SAASC,oBAAoB,QAAQ,wBAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAM9D,OAAO,MAAMC,YAAY,gBAAGV,KAAK,CAACW,IAAI,CAAC,SAASD,YAAYA,CAAC;EAC3DE;AACiB,CAAC,EAAE;EACpB,MAAMC,KAAK,GAAGP,kBAAkB,CAAC,CAAC;EAElC,MAAMQ,WAAW,GAAGb,WAAW,CAAC,MAAM;IACpC,IAAIW,IAAI,CAACG,GAAG,EAAE;MACZX,OAAO,CAACY,OAAO,CAACJ,IAAI,CAACG,GAAG,CAAC,CAACE,KAAK,CAAC,MAAM;QACpC;MAAA,CACD,CAAC;IACJ;EACF,CAAC,EAAE,CAACL,IAAI,CAACG,GAAG,CAAC,CAAC;EAEd,MAAMG,SAAoB,GAAG;IAC3BC,KAAK,EAAEN,KAAK,CAACO,MAAM,CAACC,OAAO;IAC3BC,QAAQ,EAAET,KAAK,CAACU,UAAU,CAACD,QAAQ,CAACE,EAAE;IACtCC,UAAU,EAAEZ,KAAK,CAACU,UAAU,CAACE,UAAU;IACvCC,kBAAkB,EAAE;EACtB,CAAC;EAED,oBACEjB,IAAA,CAACN,SAAS;IACRwB,OAAO,EAAEb,WAAY;IACrBc,KAAK,EAAEA,CAAC;MAAEC;IAAQ,CAAC,KAAK,CACtBC,MAAM,CAACC,SAAS,EAChBF,OAAO,IAAIC,MAAM,CAACD,OAAO,CACzB;IAAAG,QAAA,eAEFvB,IAAA,CAACP,IAAI;MAAC0B,KAAK,EAAEV,SAAU;MAAAc,QAAA,EACpBzB,oBAAoB,CAACK,IAAI,CAACoB,QAAQ,EAAEnB,KAAK;IAAC,CACvC;EAAC,CACE,CAAC;AAEhB,CAAC,CAAC;AAEF,MAAMiB,MAAM,GAAGzB,UAAU,CAAC4B,MAAM,CAAC;EAC/BF,SAAS,EAAE;IACTG,SAAS,EAAE;EACb,CAAC;EACDL,OAAO,EAAE;IACPM,OAAO,EAAE;EACX;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { View, Text, StyleSheet } from 'react-native';
5
+ import { useAIElementsTheme } from '../../theme';
6
+ import { renderInlineChildren } from './renderInlineChildren';
7
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ export const ListRenderer = /*#__PURE__*/React.memo(function ListRenderer({
9
+ node
10
+ }) {
11
+ const theme = useAIElementsTheme();
12
+ const ordered = node.ordered ?? false;
13
+ const bulletStyle = {
14
+ color: theme.colors.mutedForeground,
15
+ fontSize: theme.typography.fontSize.md,
16
+ fontFamily: theme.typography.fontFamily,
17
+ lineHeight: theme.typography.fontSize.md * theme.typography.lineHeight.normal
18
+ };
19
+ const textStyle = {
20
+ color: theme.colors.foreground,
21
+ fontSize: theme.typography.fontSize.md,
22
+ fontFamily: theme.typography.fontFamily,
23
+ lineHeight: theme.typography.fontSize.md * theme.typography.lineHeight.normal,
24
+ flexShrink: 1
25
+ };
26
+ return /*#__PURE__*/_jsx(View, {
27
+ style: styles.list,
28
+ children: (node.children ?? []).map((item, index) => /*#__PURE__*/_jsxs(View, {
29
+ style: styles.item,
30
+ children: [/*#__PURE__*/_jsx(Text, {
31
+ style: [styles.bullet, bulletStyle],
32
+ children: ordered ? `${index + 1}.` : '\u2022'
33
+ }), /*#__PURE__*/_jsx(Text, {
34
+ style: [styles.content, textStyle],
35
+ children: renderInlineChildren(item.children, theme)
36
+ })]
37
+ }, `list-item-${index}`))
38
+ });
39
+ });
40
+ const styles = StyleSheet.create({
41
+ list: {
42
+ marginVertical: 4
43
+ },
44
+ item: {
45
+ flexDirection: 'row',
46
+ alignItems: 'flex-start',
47
+ marginBottom: 4
48
+ },
49
+ bullet: {
50
+ width: 24,
51
+ textAlign: 'right',
52
+ marginRight: 8
53
+ },
54
+ content: {
55
+ flex: 1
56
+ }
57
+ });
58
+ //# sourceMappingURL=ListRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","Text","StyleSheet","useAIElementsTheme","renderInlineChildren","jsx","_jsx","jsxs","_jsxs","ListRenderer","memo","node","theme","ordered","bulletStyle","color","colors","mutedForeground","fontSize","typography","md","fontFamily","lineHeight","normal","textStyle","foreground","flexShrink","style","styles","list","children","map","item","index","bullet","content","create","marginVertical","flexDirection","alignItems","marginBottom","width","textAlign","marginRight","flex"],"sourceRoot":"../../../../src","sources":["streaming/renderers/ListRenderer.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,EAAEC,UAAU,QAAwB,cAAc;AACrE,SAASC,kBAAkB,QAAQ,aAAa;AAEhD,SAASC,oBAAoB,QAAQ,wBAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAM9D,OAAO,MAAMC,YAAY,gBAAGV,KAAK,CAACW,IAAI,CAAC,SAASD,YAAYA,CAAC;EAC3DE;AACiB,CAAC,EAAE;EACpB,MAAMC,KAAK,GAAGT,kBAAkB,CAAC,CAAC;EAClC,MAAMU,OAAO,GAAGF,IAAI,CAACE,OAAO,IAAI,KAAK;EAErC,MAAMC,WAAsB,GAAG;IAC7BC,KAAK,EAAEH,KAAK,CAACI,MAAM,CAACC,eAAe;IACnCC,QAAQ,EAAEN,KAAK,CAACO,UAAU,CAACD,QAAQ,CAACE,EAAE;IACtCC,UAAU,EAAET,KAAK,CAACO,UAAU,CAACE,UAAU;IACvCC,UAAU,EAAEV,KAAK,CAACO,UAAU,CAACD,QAAQ,CAACE,EAAE,GAAGR,KAAK,CAACO,UAAU,CAACG,UAAU,CAACC;EACzE,CAAC;EAED,MAAMC,SAAoB,GAAG;IAC3BT,KAAK,EAAEH,KAAK,CAACI,MAAM,CAACS,UAAU;IAC9BP,QAAQ,EAAEN,KAAK,CAACO,UAAU,CAACD,QAAQ,CAACE,EAAE;IACtCC,UAAU,EAAET,KAAK,CAACO,UAAU,CAACE,UAAU;IACvCC,UAAU,EAAEV,KAAK,CAACO,UAAU,CAACD,QAAQ,CAACE,EAAE,GAAGR,KAAK,CAACO,UAAU,CAACG,UAAU,CAACC,MAAM;IAC7EG,UAAU,EAAE;EACd,CAAC;EAED,oBACEpB,IAAA,CAACN,IAAI;IAAC2B,KAAK,EAAEC,MAAM,CAACC,IAAK;IAAAC,QAAA,EACtB,CAACnB,IAAI,CAACmB,QAAQ,IAAI,EAAE,EAAEC,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,kBACrCzB,KAAA,CAACR,IAAI;MAA4B2B,KAAK,EAAEC,MAAM,CAACI,IAAK;MAAAF,QAAA,gBAClDxB,IAAA,CAACL,IAAI;QAAC0B,KAAK,EAAE,CAACC,MAAM,CAACM,MAAM,EAAEpB,WAAW,CAAE;QAAAgB,QAAA,EACvCjB,OAAO,GAAG,GAAGoB,KAAK,GAAG,CAAC,GAAG,GAAG;MAAQ,CACjC,CAAC,eACP3B,IAAA,CAACL,IAAI;QAAC0B,KAAK,EAAE,CAACC,MAAM,CAACO,OAAO,EAAEX,SAAS,CAAE;QAAAM,QAAA,EACtC1B,oBAAoB,CAAC4B,IAAI,CAACF,QAAQ,EAAElB,KAAK;MAAC,CACvC,CAAC;IAAA,GANE,aAAaqB,KAAK,EAOvB,CACP;EAAC,CACE,CAAC;AAEX,CAAC,CAAC;AAEF,MAAML,MAAM,GAAG1B,UAAU,CAACkC,MAAM,CAAC;EAC/BP,IAAI,EAAE;IACJQ,cAAc,EAAE;EAClB,CAAC;EACDL,IAAI,EAAE;IACJM,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,YAAY;IACxBC,YAAY,EAAE;EAChB,CAAC;EACDN,MAAM,EAAE;IACNO,KAAK,EAAE,EAAE;IACTC,SAAS,EAAE,OAAO;IAClBC,WAAW,EAAE;EACf,CAAC;EACDR,OAAO,EAAE;IACPS,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { View, Text, StyleSheet } from 'react-native';
5
+ import { useAIElementsTheme } from '../../theme';
6
+ import { renderInlineChildren } from './renderInlineChildren';
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ export const TableRenderer = /*#__PURE__*/React.memo(function TableRenderer({
9
+ node
10
+ }) {
11
+ const theme = useAIElementsTheme();
12
+ const rows = node.children ?? [];
13
+ const headerTextStyle = {
14
+ fontWeight: theme.typography.fontWeight.semibold,
15
+ color: theme.colors.foreground,
16
+ fontSize: theme.typography.fontSize.sm,
17
+ fontFamily: theme.typography.fontFamily
18
+ };
19
+ const cellTextStyle = {
20
+ color: theme.colors.foreground,
21
+ fontSize: theme.typography.fontSize.sm,
22
+ fontFamily: theme.typography.fontFamily
23
+ };
24
+ return /*#__PURE__*/_jsx(View, {
25
+ style: [styles.table, {
26
+ borderColor: theme.colors.border,
27
+ borderRadius: theme.radius.sm
28
+ }],
29
+ children: rows.map((row, rowIndex) => {
30
+ const cells = row.children ?? [];
31
+ const isHeaderRow = cells.some(c => c.header);
32
+ return /*#__PURE__*/_jsx(View, {
33
+ style: [styles.row, {
34
+ borderBottomColor: theme.colors.border,
35
+ backgroundColor: isHeaderRow ? theme.colors.muted : 'transparent'
36
+ }, rowIndex === rows.length - 1 && styles.lastRow],
37
+ children: cells.map((cell, cellIndex) => /*#__PURE__*/_jsx(View, {
38
+ style: [styles.cell, {
39
+ borderRightColor: theme.colors.border
40
+ }, cellIndex === cells.length - 1 && styles.lastCell],
41
+ children: /*#__PURE__*/_jsx(Text, {
42
+ style: cell.header ? headerTextStyle : cellTextStyle,
43
+ children: renderInlineChildren(cell.children, theme)
44
+ })
45
+ }, `cell-${rowIndex}-${cellIndex}`))
46
+ }, `row-${rowIndex}`);
47
+ })
48
+ });
49
+ });
50
+ const styles = StyleSheet.create({
51
+ table: {
52
+ borderWidth: 1,
53
+ marginVertical: 8,
54
+ overflow: 'hidden'
55
+ },
56
+ row: {
57
+ flexDirection: 'row',
58
+ borderBottomWidth: 1
59
+ },
60
+ lastRow: {
61
+ borderBottomWidth: 0
62
+ },
63
+ cell: {
64
+ flex: 1,
65
+ padding: 8,
66
+ borderRightWidth: 1
67
+ },
68
+ lastCell: {
69
+ borderRightWidth: 0
70
+ }
71
+ });
72
+ //# sourceMappingURL=TableRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","Text","StyleSheet","useAIElementsTheme","renderInlineChildren","jsx","_jsx","TableRenderer","memo","node","theme","rows","children","headerTextStyle","fontWeight","typography","semibold","color","colors","foreground","fontSize","sm","fontFamily","cellTextStyle","style","styles","table","borderColor","border","borderRadius","radius","map","row","rowIndex","cells","isHeaderRow","some","c","header","borderBottomColor","backgroundColor","muted","length","lastRow","cell","cellIndex","borderRightColor","lastCell","create","borderWidth","marginVertical","overflow","flexDirection","borderBottomWidth","flex","padding","borderRightWidth"],"sourceRoot":"../../../../src","sources":["streaming/renderers/TableRenderer.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { Text, StyleSheet } from 'react-native';
5
+ import { useAIElementsTheme } from '../../theme';
6
+ import { renderInlineChildren } from './renderInlineChildren';
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ export const TextRenderer = /*#__PURE__*/React.memo(function TextRenderer({
9
+ node
10
+ }) {
11
+ const theme = useAIElementsTheme();
12
+ const baseStyle = {
13
+ color: theme.colors.foreground,
14
+ fontSize: theme.typography.fontSize.md,
15
+ lineHeight: theme.typography.fontSize.md * theme.typography.lineHeight.normal,
16
+ fontFamily: theme.typography.fontFamily
17
+ };
18
+ if (node.type === 'text') {
19
+ return /*#__PURE__*/_jsx(Text, {
20
+ style: baseStyle,
21
+ children: node.content
22
+ });
23
+ }
24
+
25
+ // paragraph
26
+ return /*#__PURE__*/_jsx(Text, {
27
+ style: [baseStyle, styles.paragraph],
28
+ children: renderInlineChildren(node.children, theme)
29
+ });
30
+ });
31
+ const styles = StyleSheet.create({
32
+ paragraph: {
33
+ marginBottom: 8
34
+ }
35
+ });
36
+ //# sourceMappingURL=TextRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Text","StyleSheet","useAIElementsTheme","renderInlineChildren","jsx","_jsx","TextRenderer","memo","node","theme","baseStyle","color","colors","foreground","fontSize","typography","md","lineHeight","normal","fontFamily","type","style","children","content","styles","paragraph","create","marginBottom"],"sourceRoot":"../../../../src","sources":["streaming/renderers/TextRenderer.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,UAAU,QAAwB,cAAc;AAC/D,SAASC,kBAAkB,QAAQ,aAAa;AAEhD,SAASC,oBAAoB,QAAQ,wBAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAM9D,OAAO,MAAMC,YAAY,gBAAGP,KAAK,CAACQ,IAAI,CAAC,SAASD,YAAYA,CAAC;EAC3DE;AACiB,CAAC,EAAE;EACpB,MAAMC,KAAK,GAAGP,kBAAkB,CAAC,CAAC;EAElC,MAAMQ,SAAoB,GAAG;IAC3BC,KAAK,EAAEF,KAAK,CAACG,MAAM,CAACC,UAAU;IAC9BC,QAAQ,EAAEL,KAAK,CAACM,UAAU,CAACD,QAAQ,CAACE,EAAE;IACtCC,UAAU,EAAER,KAAK,CAACM,UAAU,CAACD,QAAQ,CAACE,EAAE,GAAGP,KAAK,CAACM,UAAU,CAACE,UAAU,CAACC,MAAM;IAC7EC,UAAU,EAAEV,KAAK,CAACM,UAAU,CAACI;EAC/B,CAAC;EAED,IAAIX,IAAI,CAACY,IAAI,KAAK,MAAM,EAAE;IACxB,oBAAOf,IAAA,CAACL,IAAI;MAACqB,KAAK,EAAEX,SAAU;MAAAY,QAAA,EAAEd,IAAI,CAACe;IAAO,CAAO,CAAC;EACtD;;EAEA;EACA,oBACElB,IAAA,CAACL,IAAI;IAACqB,KAAK,EAAE,CAACX,SAAS,EAAEc,MAAM,CAACC,SAAS,CAAE;IAAAH,QAAA,EACxCnB,oBAAoB,CAACK,IAAI,CAACc,QAAQ,EAAEb,KAAK;EAAC,CACvC,CAAC;AAEX,CAAC,CAAC;AAEF,MAAMe,MAAM,GAAGvB,UAAU,CAACyB,MAAM,CAAC;EAC/BD,SAAS,EAAE;IACTE,YAAY,EAAE;EAChB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ export { TextRenderer } from './TextRenderer';
4
+ export { HeadingRenderer } from './HeadingRenderer';
5
+ export { CodeRenderer } from './CodeRenderer';
6
+ export { ListRenderer } from './ListRenderer';
7
+ export { LinkRenderer } from './LinkRenderer';
8
+ export { ImageRenderer } from './ImageRenderer';
9
+ export { BlockquoteRenderer } from './BlockquoteRenderer';
10
+ export { TableRenderer } from './TableRenderer';
11
+ export { renderNode } from './renderNode';
12
+ export { renderInlineChildren } from './renderInlineChildren';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TextRenderer","HeadingRenderer","CodeRenderer","ListRenderer","LinkRenderer","ImageRenderer","BlockquoteRenderer","TableRenderer","renderNode","renderInlineChildren"],"sourceRoot":"../../../../src","sources":["streaming/renderers/index.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,gBAAgB;AAG7C,SAASC,eAAe,QAAQ,mBAAmB;AAGnD,SAASC,YAAY,QAAQ,gBAAgB;AAG7C,SAASC,YAAY,QAAQ,gBAAgB;AAG7C,SAASC,YAAY,QAAQ,gBAAgB;AAG7C,SAASC,aAAa,QAAQ,iBAAiB;AAG/C,SAASC,kBAAkB,QAAQ,sBAAsB;AAGzD,SAASC,aAAa,QAAQ,iBAAiB;AAG/C,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,oBAAoB,QAAQ,wBAAwB","ignoreList":[]}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { Text } from 'react-native';
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ /**
7
+ * Recursively render inline markdown nodes (text, bold, italic, bold_italic,
8
+ * code_inline, link, image) as nested React Native <Text> elements.
9
+ *
10
+ * This is extracted as a shared helper so every block-level renderer can
11
+ * render its inline children consistently.
12
+ */
13
+ export function renderInlineChildren(children, theme) {
14
+ if (!children || children.length === 0) return null;
15
+ return children.map((child, index) => {
16
+ const key = `${child.type}-${index}`;
17
+ switch (child.type) {
18
+ case 'text':
19
+ return /*#__PURE__*/_jsx(Text, {
20
+ style: {
21
+ color: theme.colors.foreground
22
+ },
23
+ children: child.content
24
+ }, key);
25
+ case 'bold':
26
+ {
27
+ const style = {
28
+ fontWeight: theme.typography.fontWeight.bold,
29
+ color: theme.colors.foreground
30
+ };
31
+ return /*#__PURE__*/_jsx(Text, {
32
+ style: style,
33
+ children: renderInlineChildren(child.children, theme)
34
+ }, key);
35
+ }
36
+ case 'italic':
37
+ {
38
+ const style = {
39
+ fontStyle: 'italic',
40
+ color: theme.colors.foreground
41
+ };
42
+ return /*#__PURE__*/_jsx(Text, {
43
+ style: style,
44
+ children: renderInlineChildren(child.children, theme)
45
+ }, key);
46
+ }
47
+ case 'bold_italic':
48
+ {
49
+ const style = {
50
+ fontWeight: theme.typography.fontWeight.bold,
51
+ fontStyle: 'italic',
52
+ color: theme.colors.foreground
53
+ };
54
+ return /*#__PURE__*/_jsx(Text, {
55
+ style: style,
56
+ children: renderInlineChildren(child.children, theme)
57
+ }, key);
58
+ }
59
+ case 'code_inline':
60
+ {
61
+ const style = {
62
+ fontFamily: theme.typography.monoFontFamily,
63
+ fontSize: theme.typography.fontSize.sm,
64
+ backgroundColor: theme.colors.muted,
65
+ color: theme.colors.foreground,
66
+ borderRadius: theme.radius.sm,
67
+ paddingHorizontal: 4,
68
+ paddingVertical: 1
69
+ };
70
+ return /*#__PURE__*/_jsx(Text, {
71
+ style: style,
72
+ children: child.content
73
+ }, key);
74
+ }
75
+ case 'link':
76
+ {
77
+ const style = {
78
+ color: theme.colors.primary,
79
+ textDecorationLine: 'underline'
80
+ };
81
+ // Links inline are rendered as styled text.
82
+ // The LinkRenderer handles the Pressable wrapper at block level.
83
+ // Inside inline contexts we just show styled text.
84
+ return /*#__PURE__*/_jsx(Text, {
85
+ style: style,
86
+ children: renderInlineChildren(child.children, theme)
87
+ }, key);
88
+ }
89
+ case 'image':
90
+ // Images inline are rendered as their alt text within a Text tree.
91
+ return /*#__PURE__*/_jsx(Text, {
92
+ style: {
93
+ color: theme.colors.mutedForeground
94
+ },
95
+ children: child.alt ?? '[image]'
96
+ }, key);
97
+ default:
98
+ return /*#__PURE__*/_jsx(Text, {
99
+ style: {
100
+ color: theme.colors.foreground
101
+ },
102
+ children: child.content
103
+ }, key);
104
+ }
105
+ });
106
+ }
107
+ //# sourceMappingURL=renderInlineChildren.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Text","jsx","_jsx","renderInlineChildren","children","theme","length","map","child","index","key","type","style","color","colors","foreground","content","fontWeight","typography","bold","fontStyle","fontFamily","monoFontFamily","fontSize","sm","backgroundColor","muted","borderRadius","radius","paddingHorizontal","paddingVertical","primary","textDecorationLine","mutedForeground","alt"],"sourceRoot":"../../../../src","sources":["streaming/renderers/renderInlineChildren.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { View, StyleSheet } from 'react-native';
5
+ import { useAIElementsTheme } from '../../theme';
6
+ import { TextRenderer } from './TextRenderer';
7
+ import { HeadingRenderer } from './HeadingRenderer';
8
+ import { CodeRenderer } from './CodeRenderer';
9
+ import { ListRenderer } from './ListRenderer';
10
+ import { LinkRenderer } from './LinkRenderer';
11
+ import { ImageRenderer } from './ImageRenderer';
12
+ import { BlockquoteRenderer } from './BlockquoteRenderer';
13
+ import { TableRenderer } from './TableRenderer';
14
+
15
+ /** Themed horizontal rule. */
16
+ import { jsx as _jsx } from "react/jsx-runtime";
17
+ const HorizontalRule = /*#__PURE__*/React.memo(function HorizontalRule() {
18
+ const theme = useAIElementsTheme();
19
+ return /*#__PURE__*/_jsx(View, {
20
+ style: [hrStyles.rule, {
21
+ backgroundColor: theme.colors.border
22
+ }]
23
+ });
24
+ });
25
+ const hrStyles = StyleSheet.create({
26
+ rule: {
27
+ height: 1,
28
+ marginVertical: 16
29
+ }
30
+ });
31
+
32
+ /**
33
+ * Map a single MarkdownNode to its corresponding React Native renderer.
34
+ * Used by both StreamingMarkdown and BlockquoteRenderer (for nested blocks).
35
+ */
36
+ export function renderNode(node, key) {
37
+ switch (node.type) {
38
+ case 'paragraph':
39
+ case 'text':
40
+ return /*#__PURE__*/_jsx(TextRenderer, {
41
+ node: node
42
+ }, key);
43
+ case 'heading':
44
+ return /*#__PURE__*/_jsx(HeadingRenderer, {
45
+ node: node
46
+ }, key);
47
+ case 'code_inline':
48
+ case 'code_block':
49
+ return /*#__PURE__*/_jsx(CodeRenderer, {
50
+ node: node
51
+ }, key);
52
+ case 'list':
53
+ return /*#__PURE__*/_jsx(ListRenderer, {
54
+ node: node
55
+ }, key);
56
+ case 'link':
57
+ return /*#__PURE__*/_jsx(LinkRenderer, {
58
+ node: node
59
+ }, key);
60
+ case 'image':
61
+ return /*#__PURE__*/_jsx(ImageRenderer, {
62
+ node: node
63
+ }, key);
64
+ case 'blockquote':
65
+ return /*#__PURE__*/_jsx(BlockquoteRenderer, {
66
+ node: node
67
+ }, key);
68
+ case 'horizontal_rule':
69
+ return /*#__PURE__*/_jsx(HorizontalRule, {}, key);
70
+ case 'table':
71
+ return /*#__PURE__*/_jsx(TableRenderer, {
72
+ node: node
73
+ }, key);
74
+ default:
75
+ return null;
76
+ }
77
+ }
78
+ //# sourceMappingURL=renderNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","StyleSheet","useAIElementsTheme","TextRenderer","HeadingRenderer","CodeRenderer","ListRenderer","LinkRenderer","ImageRenderer","BlockquoteRenderer","TableRenderer","jsx","_jsx","HorizontalRule","memo","theme","style","hrStyles","rule","backgroundColor","colors","border","create","height","marginVertical","renderNode","node","key","type"],"sourceRoot":"../../../../src","sources":["streaming/renderers/renderNode.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAA0B,OAAO;AAC7C,SAASC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAC/C,SAASC,kBAAkB,QAAQ,aAAa;AAEhD,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,kBAAkB,QAAQ,sBAAsB;AACzD,SAASC,aAAa,QAAQ,iBAAiB;;AAE/C;AAAA,SAAAC,GAAA,IAAAC,IAAA;AACA,MAAMC,cAAc,gBAAGd,KAAK,CAACe,IAAI,CAAC,SAASD,cAAcA,CAAA,EAAG;EAC1D,MAAME,KAAK,GAAGb,kBAAkB,CAAC,CAAC;EAClC,oBACEU,IAAA,CAACZ,IAAI;IACHgB,KAAK,EAAE,CACLC,QAAQ,CAACC,IAAI,EACb;MAAEC,eAAe,EAAEJ,KAAK,CAACK,MAAM,CAACC;IAAO,CAAC;EACxC,CACH,CAAC;AAEN,CAAC,CAAC;AAEF,MAAMJ,QAAQ,GAAGhB,UAAU,CAACqB,MAAM,CAAC;EACjCJ,IAAI,EAAE;IACJK,MAAM,EAAE,CAAC;IACTC,cAAc,EAAE;EAClB;AACF,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAACC,IAAkB,EAAEC,GAAW,EAAa;EACrE,QAAQD,IAAI,CAACE,IAAI;IACf,KAAK,WAAW;IAChB,KAAK,MAAM;MACT,oBAAOhB,IAAA,CAACT,YAAY;QAAWuB,IAAI,EAAEA;MAAK,GAAhBC,GAAkB,CAAC;IAE/C,KAAK,SAAS;MACZ,oBAAOf,IAAA,CAACR,eAAe;QAAWsB,IAAI,EAAEA;MAAK,GAAhBC,GAAkB,CAAC;IAElD,KAAK,aAAa;IAClB,KAAK,YAAY;MACf,oBAAOf,IAAA,CAACP,YAAY;QAAWqB,IAAI,EAAEA;MAAK,GAAhBC,GAAkB,CAAC;IAE/C,KAAK,MAAM;MACT,oBAAOf,IAAA,CAACN,YAAY;QAAWoB,IAAI,EAAEA;MAAK,GAAhBC,GAAkB,CAAC;IAE/C,KAAK,MAAM;MACT,oBAAOf,IAAA,CAACL,YAAY;QAAWmB,IAAI,EAAEA;MAAK,GAAhBC,GAAkB,CAAC;IAE/C,KAAK,OAAO;MACV,oBAAOf,IAAA,CAACJ,aAAa;QAAWkB,IAAI,EAAEA;MAAK,GAAhBC,GAAkB,CAAC;IAEhD,KAAK,YAAY;MACf,oBAAOf,IAAA,CAACH,kBAAkB;QAAWiB,IAAI,EAAEA;MAAK,GAAhBC,GAAkB,CAAC;IAErD,KAAK,iBAAiB;MACpB,oBAAOf,IAAA,CAACC,cAAc,MAAMc,GAAM,CAAC;IAErC,KAAK,OAAO;MACV,oBAAOf,IAAA,CAACF,aAAa;QAAWgB,IAAI,EAAEA;MAAK,GAAhBC,GAAkB,CAAC;IAEhD;MACE,OAAO,IAAI;EACf;AACF","ignoreList":[]}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ import React, { createContext, useContext, useMemo } from 'react';
4
+ import { useColorScheme } from 'react-native';
5
+ import { lightTheme, darkTheme } from './defaultTheme';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ const ThemeContext = /*#__PURE__*/createContext(lightTheme);
8
+ function mergeTheme(base, overrides) {
9
+ if (!overrides) return base;
10
+ return {
11
+ ...base,
12
+ ...overrides,
13
+ colors: {
14
+ ...base.colors,
15
+ ...overrides.colors
16
+ },
17
+ spacing: {
18
+ ...base.spacing,
19
+ ...overrides.spacing
20
+ },
21
+ radius: {
22
+ ...base.radius,
23
+ ...overrides.radius
24
+ },
25
+ typography: {
26
+ ...base.typography,
27
+ ...overrides.typography,
28
+ fontSize: {
29
+ ...base.typography.fontSize,
30
+ ...overrides.typography?.fontSize
31
+ },
32
+ lineHeight: {
33
+ ...base.typography.lineHeight,
34
+ ...overrides.typography?.lineHeight
35
+ },
36
+ fontWeight: {
37
+ ...base.typography.fontWeight,
38
+ ...overrides.typography?.fontWeight
39
+ }
40
+ }
41
+ };
42
+ }
43
+ export function AIElementsProvider({
44
+ theme: themeOverrides,
45
+ mode = 'system',
46
+ children
47
+ }) {
48
+ const systemScheme = useColorScheme();
49
+ const resolvedTheme = useMemo(() => {
50
+ const isDark = mode === 'system' ? systemScheme === 'dark' : mode === 'dark';
51
+ const base = isDark ? darkTheme : lightTheme;
52
+ return mergeTheme(base, themeOverrides);
53
+ }, [mode, systemScheme, themeOverrides]);
54
+ return /*#__PURE__*/_jsx(ThemeContext.Provider, {
55
+ value: resolvedTheme,
56
+ children: children
57
+ });
58
+ }
59
+ export function useAIElementsTheme() {
60
+ return useContext(ThemeContext);
61
+ }
62
+ //# sourceMappingURL=ThemeProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","createContext","useContext","useMemo","useColorScheme","lightTheme","darkTheme","jsx","_jsx","ThemeContext","mergeTheme","base","overrides","colors","spacing","radius","typography","fontSize","lineHeight","fontWeight","AIElementsProvider","theme","themeOverrides","mode","children","systemScheme","resolvedTheme","isDark","Provider","value","useAIElementsTheme"],"sourceRoot":"../../../src","sources":["theme/ThemeProvider.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IACVC,aAAa,EACbC,UAAU,EACVC,OAAO,QAEF,OAAO;AACd,SAASC,cAAc,QAAQ,cAAc;AAE7C,SAASC,UAAU,EAAEC,SAAS,QAAQ,gBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEvD,MAAMC,YAAY,gBAAGR,aAAa,CAAkBI,UAAU,CAAC;AAa/D,SAASK,UAAUA,CACjBC,IAAqB,EACrBC,SAAwC,EACvB;EACjB,IAAI,CAACA,SAAS,EAAE,OAAOD,IAAI;EAC3B,OAAO;IACL,GAAGA,IAAI;IACP,GAAGC,SAAS;IACZC,MAAM,EAAE;MAAE,GAAGF,IAAI,CAACE,MAAM;MAAE,GAAGD,SAAS,CAACC;IAAO,CAAC;IAC/CC,OAAO,EAAE;MAAE,GAAGH,IAAI,CAACG,OAAO;MAAE,GAAGF,SAAS,CAACE;IAAQ,CAAC;IAClDC,MAAM,EAAE;MAAE,GAAGJ,IAAI,CAACI,MAAM;MAAE,GAAGH,SAAS,CAACG;IAAO,CAAC;IAC/CC,UAAU,EAAE;MACV,GAAGL,IAAI,CAACK,UAAU;MAClB,GAAGJ,SAAS,CAACI,UAAU;MACvBC,QAAQ,EAAE;QACR,GAAGN,IAAI,CAACK,UAAU,CAACC,QAAQ;QAC3B,GAAGL,SAAS,CAACI,UAAU,EAAEC;MAC3B,CAAC;MACDC,UAAU,EAAE;QACV,GAAGP,IAAI,CAACK,UAAU,CAACE,UAAU;QAC7B,GAAGN,SAAS,CAACI,UAAU,EAAEE;MAC3B,CAAC;MACDC,UAAU,EAAE;QACV,GAAGR,IAAI,CAACK,UAAU,CAACG,UAAU;QAC7B,GAAGP,SAAS,CAACI,UAAU,EAAEG;MAC3B;IACF;EACF,CAAC;AACH;AAEA,OAAO,SAASC,kBAAkBA,CAAC;EACjCC,KAAK,EAAEC,cAAc;EACrBC,IAAI,GAAG,QAAQ;EACfC;AAC0C,CAAC,EAAE;EAC7C,MAAMC,YAAY,GAAGrB,cAAc,CAAC,CAAC;EAErC,MAAMsB,aAAa,GAAGvB,OAAO,CAAC,MAAM;IAClC,MAAMwB,MAAM,GACVJ,IAAI,KAAK,QAAQ,GAAGE,YAAY,KAAK,MAAM,GAAGF,IAAI,KAAK,MAAM;IAC/D,MAAMZ,IAAI,GAAGgB,MAAM,GAAGrB,SAAS,GAAGD,UAAU;IAC5C,OAAOK,UAAU,CAACC,IAAI,EAAEW,cAAc,CAAC;EACzC,CAAC,EAAE,CAACC,IAAI,EAAEE,YAAY,EAAEH,cAAc,CAAC,CAAC;EAExC,oBACEd,IAAA,CAACC,YAAY,CAACmB,QAAQ;IAACC,KAAK,EAAEH,aAAc;IAAAF,QAAA,EACzCA;EAAQ,CACY,CAAC;AAE5B;AAEA,OAAO,SAASM,kBAAkBA,CAAA,EAAoB;EACpD,OAAO5B,UAAU,CAACO,YAAY,CAAC;AACjC","ignoreList":[]}