@neo4j-ndl/react 4.1.9 → 4.2.0

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 (487) hide show
  1. package/lib/cjs/ai/code-preview/CodePreview.js +91 -0
  2. package/lib/cjs/ai/code-preview/CodePreview.js.map +1 -0
  3. package/lib/cjs/ai/code-preview/index.js +26 -0
  4. package/lib/cjs/ai/code-preview/index.js.map +1 -0
  5. package/lib/cjs/ai/code-preview/stories/code-preview-languages.story.js +37 -0
  6. package/lib/cjs/ai/code-preview/stories/code-preview-languages.story.js.map +1 -0
  7. package/lib/cjs/ai/code-preview/stories/code-preview-loading.story.js +31 -0
  8. package/lib/cjs/ai/code-preview/stories/code-preview-loading.story.js.map +1 -0
  9. package/lib/cjs/ai/code-preview/stories/code-preview-read.story.js +36 -0
  10. package/lib/cjs/ai/code-preview/stories/code-preview-read.story.js.map +1 -0
  11. package/lib/cjs/ai/code-preview/stories/code-preview-write.story.js +36 -0
  12. package/lib/cjs/ai/code-preview/stories/code-preview-write.story.js.map +1 -0
  13. package/lib/cjs/ai/code-preview/stories/code-preview.stories.js +88 -0
  14. package/lib/cjs/ai/code-preview/stories/code-preview.stories.js.map +1 -0
  15. package/lib/cjs/ai/code-preview/stories/index.js +44 -0
  16. package/lib/cjs/ai/code-preview/stories/index.js.map +1 -0
  17. package/lib/cjs/ai/file-tag/FileTag.js +58 -0
  18. package/lib/cjs/ai/file-tag/FileTag.js.map +1 -0
  19. package/lib/cjs/ai/file-tag/index.js +38 -0
  20. package/lib/cjs/ai/file-tag/index.js.map +1 -0
  21. package/lib/cjs/ai/file-tag/stories/file-tag-chat.story.js +31 -0
  22. package/lib/cjs/ai/file-tag/stories/file-tag-chat.story.js.map +1 -0
  23. package/lib/cjs/ai/file-tag/stories/file-tag-loading.story.js +33 -0
  24. package/lib/cjs/ai/file-tag/stories/file-tag-loading.story.js.map +1 -0
  25. package/lib/cjs/ai/file-tag/stories/file-tag-prompt.story.js +33 -0
  26. package/lib/cjs/ai/file-tag/stories/file-tag-prompt.story.js.map +1 -0
  27. package/lib/cjs/ai/file-tag/stories/file-tag.stories.js +76 -0
  28. package/lib/cjs/ai/file-tag/stories/file-tag.stories.js.map +1 -0
  29. package/lib/cjs/ai/file-tag/stories/index.js +40 -0
  30. package/lib/cjs/ai/file-tag/stories/index.js.map +1 -0
  31. package/lib/cjs/ai/image-tag/ImageTag.js +58 -0
  32. package/lib/cjs/ai/image-tag/ImageTag.js.map +1 -0
  33. package/lib/cjs/ai/image-tag/index.js +38 -0
  34. package/lib/cjs/ai/image-tag/index.js.map +1 -0
  35. package/lib/cjs/ai/image-tag/stories/image-tag-chat.story.js +30 -0
  36. package/lib/cjs/ai/image-tag/stories/image-tag-chat.story.js.map +1 -0
  37. package/lib/cjs/ai/image-tag/stories/image-tag-loading.story.js +32 -0
  38. package/lib/cjs/ai/image-tag/stories/image-tag-loading.story.js.map +1 -0
  39. package/lib/cjs/ai/image-tag/stories/image-tag-prompt.story.js +32 -0
  40. package/lib/cjs/ai/image-tag/stories/image-tag-prompt.story.js.map +1 -0
  41. package/lib/cjs/ai/image-tag/stories/image-tag.stories.js +76 -0
  42. package/lib/cjs/ai/image-tag/stories/image-tag.stories.js.map +1 -0
  43. package/lib/cjs/ai/image-tag/stories/index.js +40 -0
  44. package/lib/cjs/ai/image-tag/stories/index.js.map +1 -0
  45. package/lib/cjs/ai/index.js +23 -1
  46. package/lib/cjs/ai/index.js.map +1 -1
  47. package/lib/cjs/ai/more-files/MoreFiles.js +55 -0
  48. package/lib/cjs/ai/more-files/MoreFiles.js.map +1 -0
  49. package/lib/cjs/ai/more-files/index.js +38 -0
  50. package/lib/cjs/ai/more-files/index.js.map +1 -0
  51. package/lib/cjs/ai/more-files/stories/index.js +32 -0
  52. package/lib/cjs/ai/more-files/stories/index.js.map +1 -0
  53. package/lib/cjs/ai/more-files/stories/more-files.stories.js +50 -0
  54. package/lib/cjs/ai/more-files/stories/more-files.stories.js.map +1 -0
  55. package/lib/cjs/ai/more-files/stories/more-files.story.js +35 -0
  56. package/lib/cjs/ai/more-files/stories/more-files.story.js.map +1 -0
  57. package/lib/cjs/ai/presence/Presence.js +5 -1
  58. package/lib/cjs/ai/presence/Presence.js.map +1 -1
  59. package/lib/cjs/ai/prompt/Prompt.js +163 -0
  60. package/lib/cjs/ai/prompt/Prompt.js.map +1 -0
  61. package/lib/cjs/ai/prompt/index.js +38 -0
  62. package/lib/cjs/ai/prompt/index.js.map +1 -0
  63. package/lib/cjs/ai/prompt/stories/index.js +36 -0
  64. package/lib/cjs/ai/prompt/stories/index.js.map +1 -0
  65. package/lib/cjs/ai/prompt/stories/prompt-advanced.story.js +56 -0
  66. package/lib/cjs/ai/prompt/stories/prompt-advanced.story.js.map +1 -0
  67. package/lib/cjs/ai/prompt/stories/prompt-default.story.js +40 -0
  68. package/lib/cjs/ai/prompt/stories/prompt-default.story.js.map +1 -0
  69. package/lib/cjs/ai/prompt/stories/prompt.stories.js +63 -0
  70. package/lib/cjs/ai/prompt/stories/prompt.stories.js.map +1 -0
  71. package/lib/cjs/ai/reasoning/Reasoning.js +77 -0
  72. package/lib/cjs/ai/reasoning/Reasoning.js.map +1 -0
  73. package/lib/cjs/ai/reasoning/index.js +38 -0
  74. package/lib/cjs/ai/reasoning/index.js.map +1 -0
  75. package/lib/cjs/ai/reasoning/stories/index.js +32 -0
  76. package/lib/cjs/ai/reasoning/stories/index.js.map +1 -0
  77. package/lib/cjs/ai/reasoning/stories/reasoning-full.story.js +34 -0
  78. package/lib/cjs/ai/reasoning/stories/reasoning-full.story.js.map +1 -0
  79. package/lib/cjs/ai/reasoning/stories/reasoning.stories.js +50 -0
  80. package/lib/cjs/ai/reasoning/stories/reasoning.stories.js.map +1 -0
  81. package/lib/cjs/ai/response/Response.js +185 -0
  82. package/lib/cjs/ai/response/Response.js.map +1 -0
  83. package/lib/cjs/ai/response/index.js +26 -0
  84. package/lib/cjs/ai/response/index.js.map +1 -0
  85. package/lib/cjs/ai/response/stories/index.js +56 -0
  86. package/lib/cjs/ai/response/stories/index.js.map +1 -0
  87. package/lib/cjs/ai/response/stories/response-all-components.story.js +229 -0
  88. package/lib/cjs/ai/response/stories/response-all-components.story.js.map +1 -0
  89. package/lib/cjs/ai/response/stories/response-code-examples.story.js +248 -0
  90. package/lib/cjs/ai/response/stories/response-code-examples.story.js.map +1 -0
  91. package/lib/cjs/ai/response/stories/response-default.story.js +50 -0
  92. package/lib/cjs/ai/response/stories/response-default.story.js.map +1 -0
  93. package/lib/cjs/ai/response/stories/response-full-example.story.js +162 -0
  94. package/lib/cjs/ai/response/stories/response-full-example.story.js.map +1 -0
  95. package/lib/cjs/ai/response/stories/response-headings.story.js +120 -0
  96. package/lib/cjs/ai/response/stories/response-headings.story.js.map +1 -0
  97. package/lib/cjs/ai/response/stories/response-lists.story.js +170 -0
  98. package/lib/cjs/ai/response/stories/response-lists.story.js.map +1 -0
  99. package/lib/cjs/ai/response/stories/response-streaming.story.js +65 -0
  100. package/lib/cjs/ai/response/stories/response-streaming.story.js.map +1 -0
  101. package/lib/cjs/ai/response/stories/response.stories.js +132 -0
  102. package/lib/cjs/ai/response/stories/response.stories.js.map +1 -0
  103. package/lib/cjs/ai/suggestion/Suggestion.js +58 -0
  104. package/lib/cjs/ai/suggestion/Suggestion.js.map +1 -0
  105. package/lib/cjs/ai/suggestion/index.js +38 -0
  106. package/lib/cjs/ai/suggestion/index.js.map +1 -0
  107. package/lib/cjs/ai/suggestion/stories/index.js +44 -0
  108. package/lib/cjs/ai/suggestion/stories/index.js.map +1 -0
  109. package/lib/cjs/ai/suggestion/stories/suggestion-default.story.js +30 -0
  110. package/lib/cjs/ai/suggestion/stories/suggestion-default.story.js.map +1 -0
  111. package/lib/cjs/ai/suggestion/stories/suggestion-icon.story.js +31 -0
  112. package/lib/cjs/ai/suggestion/stories/suggestion-icon.story.js.map +1 -0
  113. package/lib/cjs/ai/suggestion/stories/suggestion-primary.story.js +30 -0
  114. package/lib/cjs/ai/suggestion/stories/suggestion-primary.story.js.map +1 -0
  115. package/lib/cjs/ai/suggestion/stories/suggestion-sizes.story.js +30 -0
  116. package/lib/cjs/ai/suggestion/stories/suggestion-sizes.story.js.map +1 -0
  117. package/lib/cjs/ai/suggestion/stories/suggestion.stories.js +89 -0
  118. package/lib/cjs/ai/suggestion/stories/suggestion.stories.js.map +1 -0
  119. package/lib/cjs/ai/thinking/Thinking.js +57 -0
  120. package/lib/cjs/ai/thinking/Thinking.js.map +1 -0
  121. package/lib/cjs/ai/thinking/index.js +38 -0
  122. package/lib/cjs/ai/thinking/index.js.map +1 -0
  123. package/lib/cjs/ai/thinking/stories/ai-thinking-default.story.js +30 -0
  124. package/lib/cjs/ai/thinking/stories/ai-thinking-default.story.js.map +1 -0
  125. package/lib/cjs/ai/thinking/stories/ai-thinking-finished.story.js +30 -0
  126. package/lib/cjs/ai/thinking/stories/ai-thinking-finished.story.js.map +1 -0
  127. package/lib/cjs/ai/thinking/stories/ai-thinking.stories.js +63 -0
  128. package/lib/cjs/ai/thinking/stories/ai-thinking.stories.js.map +1 -0
  129. package/lib/cjs/ai/thinking/stories/index.js +36 -0
  130. package/lib/cjs/ai/thinking/stories/index.js.map +1 -0
  131. package/lib/cjs/ai/thinking/thinking-duration-formatter.js +71 -0
  132. package/lib/cjs/ai/thinking/thinking-duration-formatter.js.map +1 -0
  133. package/lib/cjs/ai/tool-call/ToolCall.js +55 -0
  134. package/lib/cjs/ai/tool-call/ToolCall.js.map +1 -0
  135. package/lib/cjs/ai/tool-call/index.js +38 -0
  136. package/lib/cjs/ai/tool-call/index.js.map +1 -0
  137. package/lib/cjs/ai/tool-call/stories/index.js +36 -0
  138. package/lib/cjs/ai/tool-call/stories/index.js.map +1 -0
  139. package/lib/cjs/ai/tool-call/stories/tool-call-default.story.js +30 -0
  140. package/lib/cjs/ai/tool-call/stories/tool-call-default.story.js.map +1 -0
  141. package/lib/cjs/ai/tool-call/stories/tool-call-done.story.js +30 -0
  142. package/lib/cjs/ai/tool-call/stories/tool-call-done.story.js.map +1 -0
  143. package/lib/cjs/ai/tool-call/stories/tool-call.stories.js +63 -0
  144. package/lib/cjs/ai/tool-call/stories/tool-call.stories.js.map +1 -0
  145. package/lib/cjs/ai/user-bubble/UserBubble.js +53 -0
  146. package/lib/cjs/ai/user-bubble/UserBubble.js.map +1 -0
  147. package/lib/cjs/ai/user-bubble/index.js +38 -0
  148. package/lib/cjs/ai/user-bubble/index.js.map +1 -0
  149. package/lib/cjs/ai/user-bubble/stories/index.js +44 -0
  150. package/lib/cjs/ai/user-bubble/stories/index.js.map +1 -0
  151. package/lib/cjs/ai/user-bubble/stories/user-bubble-action.story.js +35 -0
  152. package/lib/cjs/ai/user-bubble/stories/user-bubble-action.story.js.map +1 -0
  153. package/lib/cjs/ai/user-bubble/stories/user-bubble-and-files.story.js +39 -0
  154. package/lib/cjs/ai/user-bubble/stories/user-bubble-and-files.story.js.map +1 -0
  155. package/lib/cjs/ai/user-bubble/stories/user-bubble-long.story.js +33 -0
  156. package/lib/cjs/ai/user-bubble/stories/user-bubble-long.story.js.map +1 -0
  157. package/lib/cjs/ai/user-bubble/stories/user-bubble.stories.js +89 -0
  158. package/lib/cjs/ai/user-bubble/stories/user-bubble.stories.js.map +1 -0
  159. package/lib/cjs/ai/user-bubble/stories/user-bubble.story.js +34 -0
  160. package/lib/cjs/ai/user-bubble/stories/user-bubble.story.js.map +1 -0
  161. package/lib/cjs/code/Code.js.map +1 -1
  162. package/lib/cjs/text-area/TextArea.js.map +1 -1
  163. package/lib/esm/ai/code-preview/CodePreview.js +84 -0
  164. package/lib/esm/ai/code-preview/CodePreview.js.map +1 -0
  165. package/lib/esm/ai/code-preview/index.js +22 -0
  166. package/lib/esm/ai/code-preview/index.js.map +1 -0
  167. package/lib/esm/ai/code-preview/stories/code-preview-languages.story.js +33 -0
  168. package/lib/esm/ai/code-preview/stories/code-preview-languages.story.js.map +1 -0
  169. package/lib/esm/ai/code-preview/stories/code-preview-loading.story.js +27 -0
  170. package/lib/esm/ai/code-preview/stories/code-preview-loading.story.js.map +1 -0
  171. package/lib/esm/ai/code-preview/stories/code-preview-read.story.js +32 -0
  172. package/lib/esm/ai/code-preview/stories/code-preview-read.story.js.map +1 -0
  173. package/lib/esm/ai/code-preview/stories/code-preview-write.story.js +32 -0
  174. package/lib/esm/ai/code-preview/stories/code-preview-write.story.js.map +1 -0
  175. package/lib/esm/ai/code-preview/stories/code-preview.stories.js +85 -0
  176. package/lib/esm/ai/code-preview/stories/code-preview.stories.js.map +1 -0
  177. package/lib/esm/ai/code-preview/stories/index.js +34 -0
  178. package/lib/esm/ai/code-preview/stories/index.js.map +1 -0
  179. package/lib/esm/ai/file-tag/FileTag.js +52 -0
  180. package/lib/esm/ai/file-tag/FileTag.js.map +1 -0
  181. package/lib/esm/ai/file-tag/index.js +22 -0
  182. package/lib/esm/ai/file-tag/index.js.map +1 -0
  183. package/lib/esm/ai/file-tag/stories/file-tag-chat.story.js +29 -0
  184. package/lib/esm/ai/file-tag/stories/file-tag-chat.story.js.map +1 -0
  185. package/lib/esm/ai/file-tag/stories/file-tag-loading.story.js +31 -0
  186. package/lib/esm/ai/file-tag/stories/file-tag-loading.story.js.map +1 -0
  187. package/lib/esm/ai/file-tag/stories/file-tag-prompt.story.js +31 -0
  188. package/lib/esm/ai/file-tag/stories/file-tag-prompt.story.js.map +1 -0
  189. package/lib/esm/ai/file-tag/stories/file-tag.stories.js +73 -0
  190. package/lib/esm/ai/file-tag/stories/file-tag.stories.js.map +1 -0
  191. package/lib/esm/ai/file-tag/stories/index.js +31 -0
  192. package/lib/esm/ai/file-tag/stories/index.js.map +1 -0
  193. package/lib/esm/ai/image-tag/ImageTag.js +52 -0
  194. package/lib/esm/ai/image-tag/ImageTag.js.map +1 -0
  195. package/lib/esm/ai/image-tag/index.js +22 -0
  196. package/lib/esm/ai/image-tag/index.js.map +1 -0
  197. package/lib/esm/ai/image-tag/stories/image-tag-chat.story.js +28 -0
  198. package/lib/esm/ai/image-tag/stories/image-tag-chat.story.js.map +1 -0
  199. package/lib/esm/ai/image-tag/stories/image-tag-loading.story.js +30 -0
  200. package/lib/esm/ai/image-tag/stories/image-tag-loading.story.js.map +1 -0
  201. package/lib/esm/ai/image-tag/stories/image-tag-prompt.story.js +30 -0
  202. package/lib/esm/ai/image-tag/stories/image-tag-prompt.story.js.map +1 -0
  203. package/lib/esm/ai/image-tag/stories/image-tag.stories.js +73 -0
  204. package/lib/esm/ai/image-tag/stories/image-tag.stories.js.map +1 -0
  205. package/lib/esm/ai/image-tag/stories/index.js +31 -0
  206. package/lib/esm/ai/image-tag/stories/index.js.map +1 -0
  207. package/lib/esm/ai/index.js +11 -0
  208. package/lib/esm/ai/index.js.map +1 -1
  209. package/lib/esm/ai/more-files/MoreFiles.js +49 -0
  210. package/lib/esm/ai/more-files/MoreFiles.js.map +1 -0
  211. package/lib/esm/ai/more-files/index.js +22 -0
  212. package/lib/esm/ai/more-files/index.js.map +1 -0
  213. package/lib/esm/ai/more-files/stories/index.js +25 -0
  214. package/lib/esm/ai/more-files/stories/index.js.map +1 -0
  215. package/lib/esm/ai/more-files/stories/more-files.stories.js +47 -0
  216. package/lib/esm/ai/more-files/stories/more-files.stories.js.map +1 -0
  217. package/lib/esm/ai/more-files/stories/more-files.story.js +33 -0
  218. package/lib/esm/ai/more-files/stories/more-files.story.js.map +1 -0
  219. package/lib/esm/ai/presence/Presence.js +5 -1
  220. package/lib/esm/ai/presence/Presence.js.map +1 -1
  221. package/lib/esm/ai/prompt/Prompt.js +157 -0
  222. package/lib/esm/ai/prompt/Prompt.js.map +1 -0
  223. package/lib/esm/ai/prompt/index.js +22 -0
  224. package/lib/esm/ai/prompt/index.js.map +1 -0
  225. package/lib/esm/ai/prompt/stories/index.js +28 -0
  226. package/lib/esm/ai/prompt/stories/index.js.map +1 -0
  227. package/lib/esm/ai/prompt/stories/prompt-advanced.story.js +54 -0
  228. package/lib/esm/ai/prompt/stories/prompt-advanced.story.js.map +1 -0
  229. package/lib/esm/ai/prompt/stories/prompt-default.story.js +38 -0
  230. package/lib/esm/ai/prompt/stories/prompt-default.story.js.map +1 -0
  231. package/lib/esm/ai/prompt/stories/prompt.stories.js +60 -0
  232. package/lib/esm/ai/prompt/stories/prompt.stories.js.map +1 -0
  233. package/lib/esm/ai/reasoning/Reasoning.js +71 -0
  234. package/lib/esm/ai/reasoning/Reasoning.js.map +1 -0
  235. package/lib/esm/ai/reasoning/index.js +22 -0
  236. package/lib/esm/ai/reasoning/index.js.map +1 -0
  237. package/lib/esm/ai/reasoning/stories/index.js +25 -0
  238. package/lib/esm/ai/reasoning/stories/index.js.map +1 -0
  239. package/lib/esm/ai/reasoning/stories/reasoning-full.story.js +32 -0
  240. package/lib/esm/ai/reasoning/stories/reasoning-full.story.js.map +1 -0
  241. package/lib/esm/ai/reasoning/stories/reasoning.stories.js +47 -0
  242. package/lib/esm/ai/reasoning/stories/reasoning.stories.js.map +1 -0
  243. package/lib/esm/ai/response/Response.js +179 -0
  244. package/lib/esm/ai/response/Response.js.map +1 -0
  245. package/lib/esm/ai/response/index.js +22 -0
  246. package/lib/esm/ai/response/index.js.map +1 -0
  247. package/lib/esm/ai/response/stories/index.js +43 -0
  248. package/lib/esm/ai/response/stories/index.js.map +1 -0
  249. package/lib/esm/ai/response/stories/response-all-components.story.js +225 -0
  250. package/lib/esm/ai/response/stories/response-all-components.story.js.map +1 -0
  251. package/lib/esm/ai/response/stories/response-code-examples.story.js +244 -0
  252. package/lib/esm/ai/response/stories/response-code-examples.story.js.map +1 -0
  253. package/lib/esm/ai/response/stories/response-default.story.js +46 -0
  254. package/lib/esm/ai/response/stories/response-default.story.js.map +1 -0
  255. package/lib/esm/ai/response/stories/response-full-example.story.js +158 -0
  256. package/lib/esm/ai/response/stories/response-full-example.story.js.map +1 -0
  257. package/lib/esm/ai/response/stories/response-headings.story.js +116 -0
  258. package/lib/esm/ai/response/stories/response-headings.story.js.map +1 -0
  259. package/lib/esm/ai/response/stories/response-lists.story.js +166 -0
  260. package/lib/esm/ai/response/stories/response-lists.story.js.map +1 -0
  261. package/lib/esm/ai/response/stories/response-streaming.story.js +61 -0
  262. package/lib/esm/ai/response/stories/response-streaming.story.js.map +1 -0
  263. package/lib/esm/ai/response/stories/response.stories.js +129 -0
  264. package/lib/esm/ai/response/stories/response.stories.js.map +1 -0
  265. package/lib/esm/ai/suggestion/Suggestion.js +52 -0
  266. package/lib/esm/ai/suggestion/Suggestion.js.map +1 -0
  267. package/lib/esm/ai/suggestion/index.js +22 -0
  268. package/lib/esm/ai/suggestion/index.js.map +1 -0
  269. package/lib/esm/ai/suggestion/stories/index.js +34 -0
  270. package/lib/esm/ai/suggestion/stories/index.js.map +1 -0
  271. package/lib/esm/ai/suggestion/stories/suggestion-default.story.js +28 -0
  272. package/lib/esm/ai/suggestion/stories/suggestion-default.story.js.map +1 -0
  273. package/lib/esm/ai/suggestion/stories/suggestion-icon.story.js +29 -0
  274. package/lib/esm/ai/suggestion/stories/suggestion-icon.story.js.map +1 -0
  275. package/lib/esm/ai/suggestion/stories/suggestion-primary.story.js +28 -0
  276. package/lib/esm/ai/suggestion/stories/suggestion-primary.story.js.map +1 -0
  277. package/lib/esm/ai/suggestion/stories/suggestion-sizes.story.js +28 -0
  278. package/lib/esm/ai/suggestion/stories/suggestion-sizes.story.js.map +1 -0
  279. package/lib/esm/ai/suggestion/stories/suggestion.stories.js +86 -0
  280. package/lib/esm/ai/suggestion/stories/suggestion.stories.js.map +1 -0
  281. package/lib/esm/ai/thinking/Thinking.js +51 -0
  282. package/lib/esm/ai/thinking/Thinking.js.map +1 -0
  283. package/lib/esm/ai/thinking/index.js +22 -0
  284. package/lib/esm/ai/thinking/index.js.map +1 -0
  285. package/lib/esm/ai/thinking/stories/ai-thinking-default.story.js +28 -0
  286. package/lib/esm/ai/thinking/stories/ai-thinking-default.story.js.map +1 -0
  287. package/lib/esm/ai/thinking/stories/ai-thinking-finished.story.js +28 -0
  288. package/lib/esm/ai/thinking/stories/ai-thinking-finished.story.js.map +1 -0
  289. package/lib/esm/ai/thinking/stories/ai-thinking.stories.js +60 -0
  290. package/lib/esm/ai/thinking/stories/ai-thinking.stories.js.map +1 -0
  291. package/lib/esm/ai/thinking/stories/index.js +28 -0
  292. package/lib/esm/ai/thinking/stories/index.js.map +1 -0
  293. package/lib/esm/ai/thinking/thinking-duration-formatter.js +67 -0
  294. package/lib/esm/ai/thinking/thinking-duration-formatter.js.map +1 -0
  295. package/lib/esm/ai/tool-call/ToolCall.js +49 -0
  296. package/lib/esm/ai/tool-call/ToolCall.js.map +1 -0
  297. package/lib/esm/ai/tool-call/index.js +22 -0
  298. package/lib/esm/ai/tool-call/index.js.map +1 -0
  299. package/lib/esm/ai/tool-call/stories/index.js +28 -0
  300. package/lib/esm/ai/tool-call/stories/index.js.map +1 -0
  301. package/lib/esm/ai/tool-call/stories/tool-call-default.story.js +28 -0
  302. package/lib/esm/ai/tool-call/stories/tool-call-default.story.js.map +1 -0
  303. package/lib/esm/ai/tool-call/stories/tool-call-done.story.js +28 -0
  304. package/lib/esm/ai/tool-call/stories/tool-call-done.story.js.map +1 -0
  305. package/lib/esm/ai/tool-call/stories/tool-call.stories.js +60 -0
  306. package/lib/esm/ai/tool-call/stories/tool-call.stories.js.map +1 -0
  307. package/lib/esm/ai/user-bubble/UserBubble.js +47 -0
  308. package/lib/esm/ai/user-bubble/UserBubble.js.map +1 -0
  309. package/lib/esm/ai/user-bubble/index.js +22 -0
  310. package/lib/esm/ai/user-bubble/index.js.map +1 -0
  311. package/lib/esm/ai/user-bubble/stories/index.js +34 -0
  312. package/lib/esm/ai/user-bubble/stories/index.js.map +1 -0
  313. package/lib/esm/ai/user-bubble/stories/user-bubble-action.story.js +33 -0
  314. package/lib/esm/ai/user-bubble/stories/user-bubble-action.story.js.map +1 -0
  315. package/lib/esm/ai/user-bubble/stories/user-bubble-and-files.story.js +37 -0
  316. package/lib/esm/ai/user-bubble/stories/user-bubble-and-files.story.js.map +1 -0
  317. package/lib/esm/ai/user-bubble/stories/user-bubble-long.story.js +31 -0
  318. package/lib/esm/ai/user-bubble/stories/user-bubble-long.story.js.map +1 -0
  319. package/lib/esm/ai/user-bubble/stories/user-bubble.stories.js +86 -0
  320. package/lib/esm/ai/user-bubble/stories/user-bubble.stories.js.map +1 -0
  321. package/lib/esm/ai/user-bubble/stories/user-bubble.story.js +32 -0
  322. package/lib/esm/ai/user-bubble/stories/user-bubble.story.js.map +1 -0
  323. package/lib/esm/code/Code.js.map +1 -1
  324. package/lib/esm/text-area/TextArea.js.map +1 -1
  325. package/lib/types/ai/code-preview/CodePreview.d.ts +44 -0
  326. package/lib/types/ai/code-preview/CodePreview.d.ts.map +1 -0
  327. package/lib/types/ai/code-preview/index.d.ts +22 -0
  328. package/lib/types/ai/code-preview/index.d.ts.map +1 -0
  329. package/lib/types/ai/code-preview/stories/code-preview-languages.story.d.ts +23 -0
  330. package/lib/types/ai/code-preview/stories/code-preview-languages.story.d.ts.map +1 -0
  331. package/lib/types/ai/code-preview/stories/code-preview-loading.story.d.ts +23 -0
  332. package/lib/types/ai/code-preview/stories/code-preview-loading.story.d.ts.map +1 -0
  333. package/lib/types/ai/code-preview/stories/code-preview-read.story.d.ts +23 -0
  334. package/lib/types/ai/code-preview/stories/code-preview-read.story.d.ts.map +1 -0
  335. package/lib/types/ai/code-preview/stories/code-preview-write.story.d.ts +23 -0
  336. package/lib/types/ai/code-preview/stories/code-preview-write.story.d.ts.map +1 -0
  337. package/lib/types/ai/code-preview/stories/code-preview.stories.d.ts +30 -0
  338. package/lib/types/ai/code-preview/stories/code-preview.stories.d.ts.map +1 -0
  339. package/lib/types/ai/code-preview/stories/index.d.ts +29 -0
  340. package/lib/types/ai/code-preview/stories/index.d.ts.map +1 -0
  341. package/lib/types/ai/file-tag/FileTag.d.ts +44 -0
  342. package/lib/types/ai/file-tag/FileTag.d.ts.map +1 -0
  343. package/lib/types/ai/file-tag/index.d.ts +22 -0
  344. package/lib/types/ai/file-tag/index.d.ts.map +1 -0
  345. package/lib/types/ai/file-tag/stories/file-tag-chat.story.d.ts +24 -0
  346. package/lib/types/ai/file-tag/stories/file-tag-chat.story.d.ts.map +1 -0
  347. package/lib/types/ai/file-tag/stories/file-tag-loading.story.d.ts +24 -0
  348. package/lib/types/ai/file-tag/stories/file-tag-loading.story.d.ts.map +1 -0
  349. package/lib/types/ai/file-tag/stories/file-tag-prompt.story.d.ts +24 -0
  350. package/lib/types/ai/file-tag/stories/file-tag-prompt.story.d.ts.map +1 -0
  351. package/lib/types/ai/file-tag/stories/file-tag.stories.d.ts +29 -0
  352. package/lib/types/ai/file-tag/stories/file-tag.stories.d.ts.map +1 -0
  353. package/lib/types/ai/file-tag/stories/index.d.ts +27 -0
  354. package/lib/types/ai/file-tag/stories/index.d.ts.map +1 -0
  355. package/lib/types/ai/image-tag/ImageTag.d.ts +46 -0
  356. package/lib/types/ai/image-tag/ImageTag.d.ts.map +1 -0
  357. package/lib/types/ai/image-tag/index.d.ts +22 -0
  358. package/lib/types/ai/image-tag/index.d.ts.map +1 -0
  359. package/lib/types/ai/image-tag/stories/image-tag-chat.story.d.ts +24 -0
  360. package/lib/types/ai/image-tag/stories/image-tag-chat.story.d.ts.map +1 -0
  361. package/lib/types/ai/image-tag/stories/image-tag-loading.story.d.ts +24 -0
  362. package/lib/types/ai/image-tag/stories/image-tag-loading.story.d.ts.map +1 -0
  363. package/lib/types/ai/image-tag/stories/image-tag-prompt.story.d.ts +24 -0
  364. package/lib/types/ai/image-tag/stories/image-tag-prompt.story.d.ts.map +1 -0
  365. package/lib/types/ai/image-tag/stories/image-tag.stories.d.ts +29 -0
  366. package/lib/types/ai/image-tag/stories/image-tag.stories.d.ts.map +1 -0
  367. package/lib/types/ai/image-tag/stories/index.d.ts +27 -0
  368. package/lib/types/ai/image-tag/stories/index.d.ts.map +1 -0
  369. package/lib/types/ai/index.d.ts +11 -0
  370. package/lib/types/ai/index.d.ts.map +1 -1
  371. package/lib/types/ai/more-files/MoreFiles.d.ts +38 -0
  372. package/lib/types/ai/more-files/MoreFiles.d.ts.map +1 -0
  373. package/lib/types/ai/more-files/index.d.ts +22 -0
  374. package/lib/types/ai/more-files/index.d.ts.map +1 -0
  375. package/lib/types/ai/more-files/stories/index.d.ts +23 -0
  376. package/lib/types/ai/more-files/stories/index.d.ts.map +1 -0
  377. package/lib/types/ai/more-files/stories/more-files.stories.d.ts +27 -0
  378. package/lib/types/ai/more-files/stories/more-files.stories.d.ts.map +1 -0
  379. package/lib/types/ai/more-files/stories/more-files.story.d.ts +24 -0
  380. package/lib/types/ai/more-files/stories/more-files.story.d.ts.map +1 -0
  381. package/lib/types/ai/presence/Presence.d.ts.map +1 -1
  382. package/lib/types/ai/prompt/Prompt.d.ts +62 -0
  383. package/lib/types/ai/prompt/Prompt.d.ts.map +1 -0
  384. package/lib/types/ai/prompt/index.d.ts +22 -0
  385. package/lib/types/ai/prompt/index.d.ts.map +1 -0
  386. package/lib/types/ai/prompt/stories/index.d.ts +25 -0
  387. package/lib/types/ai/prompt/stories/index.d.ts.map +1 -0
  388. package/lib/types/ai/prompt/stories/prompt-advanced.story.d.ts +24 -0
  389. package/lib/types/ai/prompt/stories/prompt-advanced.story.d.ts.map +1 -0
  390. package/lib/types/ai/prompt/stories/prompt-default.story.d.ts +24 -0
  391. package/lib/types/ai/prompt/stories/prompt-default.story.d.ts.map +1 -0
  392. package/lib/types/ai/prompt/stories/prompt.stories.d.ts +28 -0
  393. package/lib/types/ai/prompt/stories/prompt.stories.d.ts.map +1 -0
  394. package/lib/types/ai/reasoning/Reasoning.d.ts +44 -0
  395. package/lib/types/ai/reasoning/Reasoning.d.ts.map +1 -0
  396. package/lib/types/ai/reasoning/index.d.ts +22 -0
  397. package/lib/types/ai/reasoning/index.d.ts.map +1 -0
  398. package/lib/types/ai/reasoning/stories/index.d.ts +23 -0
  399. package/lib/types/ai/reasoning/stories/index.d.ts.map +1 -0
  400. package/lib/types/ai/reasoning/stories/reasoning-full.story.d.ts +24 -0
  401. package/lib/types/ai/reasoning/stories/reasoning-full.story.d.ts.map +1 -0
  402. package/lib/types/ai/reasoning/stories/reasoning.stories.d.ts +27 -0
  403. package/lib/types/ai/reasoning/stories/reasoning.stories.d.ts.map +1 -0
  404. package/lib/types/ai/response/Response.d.ts +37 -0
  405. package/lib/types/ai/response/Response.d.ts.map +1 -0
  406. package/lib/types/ai/response/index.d.ts +22 -0
  407. package/lib/types/ai/response/index.d.ts.map +1 -0
  408. package/lib/types/ai/response/stories/index.d.ts +35 -0
  409. package/lib/types/ai/response/stories/index.d.ts.map +1 -0
  410. package/lib/types/ai/response/stories/response-all-components.story.d.ts +24 -0
  411. package/lib/types/ai/response/stories/response-all-components.story.d.ts.map +1 -0
  412. package/lib/types/ai/response/stories/response-code-examples.story.d.ts +24 -0
  413. package/lib/types/ai/response/stories/response-code-examples.story.d.ts.map +1 -0
  414. package/lib/types/ai/response/stories/response-default.story.d.ts +23 -0
  415. package/lib/types/ai/response/stories/response-default.story.d.ts.map +1 -0
  416. package/lib/types/ai/response/stories/response-full-example.story.d.ts +24 -0
  417. package/lib/types/ai/response/stories/response-full-example.story.d.ts.map +1 -0
  418. package/lib/types/ai/response/stories/response-headings.story.d.ts +24 -0
  419. package/lib/types/ai/response/stories/response-headings.story.d.ts.map +1 -0
  420. package/lib/types/ai/response/stories/response-lists.story.d.ts +24 -0
  421. package/lib/types/ai/response/stories/response-lists.story.d.ts.map +1 -0
  422. package/lib/types/ai/response/stories/response-streaming.story.d.ts +23 -0
  423. package/lib/types/ai/response/stories/response-streaming.story.d.ts.map +1 -0
  424. package/lib/types/ai/response/stories/response.stories.d.ts +33 -0
  425. package/lib/types/ai/response/stories/response.stories.d.ts.map +1 -0
  426. package/lib/types/ai/suggestion/Suggestion.d.ts +42 -0
  427. package/lib/types/ai/suggestion/Suggestion.d.ts.map +1 -0
  428. package/lib/types/ai/suggestion/index.d.ts +22 -0
  429. package/lib/types/ai/suggestion/index.d.ts.map +1 -0
  430. package/lib/types/ai/suggestion/stories/index.d.ts +29 -0
  431. package/lib/types/ai/suggestion/stories/index.d.ts.map +1 -0
  432. package/lib/types/ai/suggestion/stories/suggestion-default.story.d.ts +24 -0
  433. package/lib/types/ai/suggestion/stories/suggestion-default.story.d.ts.map +1 -0
  434. package/lib/types/ai/suggestion/stories/suggestion-icon.story.d.ts +24 -0
  435. package/lib/types/ai/suggestion/stories/suggestion-icon.story.d.ts.map +1 -0
  436. package/lib/types/ai/suggestion/stories/suggestion-primary.story.d.ts +24 -0
  437. package/lib/types/ai/suggestion/stories/suggestion-primary.story.d.ts.map +1 -0
  438. package/lib/types/ai/suggestion/stories/suggestion-sizes.story.d.ts +24 -0
  439. package/lib/types/ai/suggestion/stories/suggestion-sizes.story.d.ts.map +1 -0
  440. package/lib/types/ai/suggestion/stories/suggestion.stories.d.ts +30 -0
  441. package/lib/types/ai/suggestion/stories/suggestion.stories.d.ts.map +1 -0
  442. package/lib/types/ai/thinking/Thinking.d.ts +40 -0
  443. package/lib/types/ai/thinking/Thinking.d.ts.map +1 -0
  444. package/lib/types/ai/thinking/index.d.ts +22 -0
  445. package/lib/types/ai/thinking/index.d.ts.map +1 -0
  446. package/lib/types/ai/thinking/stories/ai-thinking-default.story.d.ts +24 -0
  447. package/lib/types/ai/thinking/stories/ai-thinking-default.story.d.ts.map +1 -0
  448. package/lib/types/ai/thinking/stories/ai-thinking-finished.story.d.ts +24 -0
  449. package/lib/types/ai/thinking/stories/ai-thinking-finished.story.d.ts.map +1 -0
  450. package/lib/types/ai/thinking/stories/ai-thinking.stories.d.ts +28 -0
  451. package/lib/types/ai/thinking/stories/ai-thinking.stories.d.ts.map +1 -0
  452. package/lib/types/ai/thinking/stories/index.d.ts +25 -0
  453. package/lib/types/ai/thinking/stories/index.d.ts.map +1 -0
  454. package/lib/types/ai/thinking/thinking-duration-formatter.d.ts +45 -0
  455. package/lib/types/ai/thinking/thinking-duration-formatter.d.ts.map +1 -0
  456. package/lib/types/ai/tool-call/ToolCall.d.ts +37 -0
  457. package/lib/types/ai/tool-call/ToolCall.d.ts.map +1 -0
  458. package/lib/types/ai/tool-call/index.d.ts +22 -0
  459. package/lib/types/ai/tool-call/index.d.ts.map +1 -0
  460. package/lib/types/ai/tool-call/stories/index.d.ts +25 -0
  461. package/lib/types/ai/tool-call/stories/index.d.ts.map +1 -0
  462. package/lib/types/ai/tool-call/stories/tool-call-default.story.d.ts +24 -0
  463. package/lib/types/ai/tool-call/stories/tool-call-default.story.d.ts.map +1 -0
  464. package/lib/types/ai/tool-call/stories/tool-call-done.story.d.ts +24 -0
  465. package/lib/types/ai/tool-call/stories/tool-call-done.story.d.ts.map +1 -0
  466. package/lib/types/ai/tool-call/stories/tool-call.stories.d.ts +28 -0
  467. package/lib/types/ai/tool-call/stories/tool-call.stories.d.ts.map +1 -0
  468. package/lib/types/ai/user-bubble/UserBubble.d.ts +39 -0
  469. package/lib/types/ai/user-bubble/UserBubble.d.ts.map +1 -0
  470. package/lib/types/ai/user-bubble/index.d.ts +22 -0
  471. package/lib/types/ai/user-bubble/index.d.ts.map +1 -0
  472. package/lib/types/ai/user-bubble/stories/index.d.ts +29 -0
  473. package/lib/types/ai/user-bubble/stories/index.d.ts.map +1 -0
  474. package/lib/types/ai/user-bubble/stories/user-bubble-action.story.d.ts +24 -0
  475. package/lib/types/ai/user-bubble/stories/user-bubble-action.story.d.ts.map +1 -0
  476. package/lib/types/ai/user-bubble/stories/user-bubble-and-files.story.d.ts +24 -0
  477. package/lib/types/ai/user-bubble/stories/user-bubble-and-files.story.d.ts.map +1 -0
  478. package/lib/types/ai/user-bubble/stories/user-bubble-long.story.d.ts +24 -0
  479. package/lib/types/ai/user-bubble/stories/user-bubble-long.story.d.ts.map +1 -0
  480. package/lib/types/ai/user-bubble/stories/user-bubble.stories.d.ts +30 -0
  481. package/lib/types/ai/user-bubble/stories/user-bubble.stories.d.ts.map +1 -0
  482. package/lib/types/ai/user-bubble/stories/user-bubble.story.d.ts +24 -0
  483. package/lib/types/ai/user-bubble/stories/user-bubble.story.d.ts.map +1 -0
  484. package/lib/types/code/Code.d.ts +4 -1
  485. package/lib/types/code/Code.d.ts.map +1 -1
  486. package/lib/types/text-area/TextArea.d.ts.map +1 -1
  487. package/package.json +3 -2
@@ -0,0 +1,185 @@
1
+ /**
2
+ *
3
+ * Copyright (c) "Neo4j"
4
+ * Neo4j Sweden AB [http://neo4j.com]
5
+ *
6
+ * This file is part of Neo4j.
7
+ *
8
+ * Neo4j is free software: you can redistribute it and/or modify
9
+ * it under the terms of the GNU General Public License as published by
10
+ * the Free Software Foundation, either version 3 of the License, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ * GNU General Public License for more details.
17
+ *
18
+ * You should have received a copy of the GNU General Public License
19
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
20
+ */
21
+
22
+ "use strict";
23
+ var __rest = (this && this.__rest) || function (s, e) {
24
+ var t = {};
25
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
26
+ t[p] = s[p];
27
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
28
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
29
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
30
+ t[p[i]] = s[p[i]];
31
+ }
32
+ return t;
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.Response = void 0;
39
+ const jsx_runtime_1 = require("react/jsx-runtime");
40
+ const code_1 = require("@neo4j-ndl/react/code");
41
+ const text_link_1 = require("@neo4j-ndl/react/text-link");
42
+ const typography_1 = require("@neo4j-ndl/react/typography");
43
+ const classnames_1 = __importDefault(require("classnames"));
44
+ const react_1 = require("react");
45
+ const streamdown_1 = require("streamdown");
46
+ const code_languages_1 = require("../../code-block/code-languages");
47
+ const code_preview_1 = require("../code-preview");
48
+ /**
49
+ * The component is used to display the response from an LLM.
50
+ * It handles markdown rendering and streaming.
51
+ *
52
+ * @alpha - Changes to this component may be breaking.
53
+ */
54
+ const Response = (0, react_1.memo)((_a) => {
55
+ var { className, children, isAnimating = false, ref, style, htmlAttributes } = _a, restProps = __rest(_a, ["className", "children", "isAnimating", "ref", "style", "htmlAttributes"]);
56
+ // Use a ref to store the current markdown content so we can check for unclosed fences
57
+ // without recreating the components object on every render
58
+ const childrenRef = (0, react_1.useRef)(children);
59
+ childrenRef.current = children;
60
+ const components = (0, react_1.useMemo)(() => ({
61
+ ol: (_a) => {
62
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
63
+ return ((0, jsx_runtime_1.jsx)("ol", Object.assign({ className: className }, props, { children: children })));
64
+ },
65
+ ul: (_a) => {
66
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
67
+ return ((0, jsx_runtime_1.jsx)("ul", Object.assign({ className: (0, classnames_1.default)(className) }, props, { children: children })));
68
+ },
69
+ li: (_a) => {
70
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
71
+ return ((0, jsx_runtime_1.jsx)("li", Object.assign({ className: className }, props, { children: children })));
72
+ },
73
+ hr: (_a) => {
74
+ var { className } = _a, props = __rest(_a, ["className"]);
75
+ return ((0, jsx_runtime_1.jsx)("hr", Object.assign({ className: (0, classnames_1.default)(className) }, props)));
76
+ },
77
+ strong: (_a) => {
78
+ var { children, className, style } = _a, props = __rest(_a, ["children", "className", "style"]);
79
+ return ((0, jsx_runtime_1.jsx)(typography_1.Typography, Object.assign({ as: "strong", variant: "body-medium", className: className, style: Object.assign(Object.assign({}, style), { fontWeight: 'bold' }) }, props, { children: children })));
80
+ },
81
+ em: (_a) => {
82
+ var { children, className, style } = _a, props = __rest(_a, ["children", "className", "style"]);
83
+ return ((0, jsx_runtime_1.jsx)(typography_1.Typography, Object.assign({ as: "em", variant: "body-medium", className: className, style: Object.assign(Object.assign({}, style), { fontStyle: 'italic' }) }, props, { children: children })));
84
+ },
85
+ a: (_a) => {
86
+ var { children, className, href } = _a, props = __rest(_a, ["children", "className", "href"]);
87
+ return ((0, jsx_runtime_1.jsx)(text_link_1.TextLink, { type: "internal-underline", className: className, href: href, htmlAttributes: props, children: children }));
88
+ },
89
+ h1: (_a) => {
90
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
91
+ return ((0, jsx_runtime_1.jsx)(typography_1.Typography, { as: "h1", variant: "display", className: className, htmlAttributes: Object.assign({}, props), children: children }));
92
+ },
93
+ h2: (_a) => {
94
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
95
+ return ((0, jsx_runtime_1.jsx)(typography_1.Typography, { as: "h2", variant: "title-1", className: className, htmlAttributes: Object.assign({}, props), children: children }));
96
+ },
97
+ h3: (_a) => {
98
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
99
+ return ((0, jsx_runtime_1.jsx)(typography_1.Typography, { as: "h3", variant: "title-2", className: className, htmlAttributes: Object.assign({}, props), children: children }));
100
+ },
101
+ h4: (_a) => {
102
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
103
+ return ((0, jsx_runtime_1.jsx)(typography_1.Typography, { as: "h4", variant: "title-3", className: className, htmlAttributes: Object.assign({}, props), children: children }));
104
+ },
105
+ h5: (_a) => {
106
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
107
+ return ((0, jsx_runtime_1.jsx)(typography_1.Typography, { as: "h5", variant: "title-4", className: className, htmlAttributes: Object.assign({}, props), children: children }));
108
+ },
109
+ h6: (_a) => {
110
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
111
+ return ((0, jsx_runtime_1.jsx)(typography_1.Typography, { as: "h6", variant: "subheading-large", className: className, htmlAttributes: Object.assign({}, props), children: children }));
112
+ },
113
+ table: (_a) => {
114
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
115
+ return ((0, jsx_runtime_1.jsx)("div", { className: "my-4 overflow-x-auto", children: (0, jsx_runtime_1.jsx)("table", Object.assign({ className: (0, classnames_1.default)('w-full border-collapse border border-border', className) }, props, { children: children })) }));
116
+ },
117
+ thead: (_a) => {
118
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
119
+ return ((0, jsx_runtime_1.jsx)("thead", Object.assign({ className: (0, classnames_1.default)('bg-muted/50', className) }, props, { children: children })));
120
+ },
121
+ tbody: (_a) => {
122
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
123
+ return ((0, jsx_runtime_1.jsx)("tbody", Object.assign({ className: (0, classnames_1.default)('divide-y divide-border', className) }, props, { children: children })));
124
+ },
125
+ tr: (_a) => {
126
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
127
+ return ((0, jsx_runtime_1.jsx)("tr", Object.assign({ className: (0, classnames_1.default)('border-border border-b', className) }, props, { children: children })));
128
+ },
129
+ th: (_a) => {
130
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
131
+ return ((0, jsx_runtime_1.jsx)("th", Object.assign({ className: (0, classnames_1.default)('px-4 py-2 text-left font-semibold text-sm', className) }, props, { children: children })));
132
+ },
133
+ td: (_a) => {
134
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
135
+ return ((0, jsx_runtime_1.jsx)("td", Object.assign({ className: (0, classnames_1.default)('px-4 py-2 text-sm', className) }, props, { children: children })));
136
+ },
137
+ blockquote: (_a) => {
138
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
139
+ return ((0, jsx_runtime_1.jsx)("blockquote", Object.assign({ className: (0, classnames_1.default)(className) }, props, { children: children })));
140
+ },
141
+ code: (_a) => {
142
+ var _b, _c, _d;
143
+ var { node, className, key, children: codeChildren } = _a, props = __rest(_a, ["node", "className", "key", "children"]);
144
+ const isInline = ((_b = node === null || node === void 0 ? void 0 : node.position) === null || _b === void 0 ? void 0 : _b.start.line) === ((_c = node === null || node === void 0 ? void 0 : node.position) === null || _c === void 0 ? void 0 : _c.end.line);
145
+ let language = 'javascript';
146
+ if (typeof ((_d = node === null || node === void 0 ? void 0 : node.properties) === null || _d === void 0 ? void 0 : _d.className) === 'string') {
147
+ const rawLanguage = node.properties.className.replace('language-', '');
148
+ language = code_languages_1.Languages.includes(rawLanguage)
149
+ ? rawLanguage
150
+ : 'text';
151
+ }
152
+ if (isInline) {
153
+ return ((0, jsx_runtime_1.jsx)(code_1.Code, { isRunnable: false, className: className, htmlAttributes: props, children: codeChildren }));
154
+ }
155
+ if (typeof codeChildren === 'string') {
156
+ // Check if code fences are balanced in the markdown
157
+ // If there are an odd number of fences, it means there's an unclosed code block
158
+ const fenceMatches = childrenRef.current.match(/```/g);
159
+ const fenceCount = fenceMatches ? fenceMatches.length : 0;
160
+ const hasUnclosedFence = fenceCount % 2 !== 0;
161
+ // Show loading state when there's an unclosed fence (code block is streaming)
162
+ const isCodeBlockLoading = hasUnclosedFence;
163
+ return ((0, jsx_runtime_1.jsx)(code_preview_1.CodePreview, { code: codeChildren, isLoading: isCodeBlockLoading, language: language, className: className, htmlAttributes: Object.assign({}, props) }, key));
164
+ }
165
+ else {
166
+ return (0, jsx_runtime_1.jsx)("code", { className: className, children: codeChildren });
167
+ }
168
+ },
169
+ pre: ({ className, children }) => {
170
+ return (0, jsx_runtime_1.jsx)("pre", { className: (0, classnames_1.default)(className), children: children });
171
+ },
172
+ p: (_a) => {
173
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
174
+ return ((0, jsx_runtime_1.jsx)(typography_1.Typography, Object.assign({ as: "p", variant: "body-medium", className: (0, classnames_1.default)(className) }, props, { children: children })));
175
+ },
176
+ img: (_a) => {
177
+ var { className, src, alt } = _a, props = __rest(_a, ["className", "src", "alt"]);
178
+ return ((0, jsx_runtime_1.jsx)("img", Object.assign({ className: (0, classnames_1.default)(className), src: src, alt: alt }, props)));
179
+ },
180
+ }), []);
181
+ return ((0, jsx_runtime_1.jsx)("div", Object.assign({ ref: ref, style: style, className: (0, classnames_1.default)('ndl-ai-response size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0', className) }, restProps, htmlAttributes, { children: (0, jsx_runtime_1.jsx)(streamdown_1.Streamdown, { isAnimating: isAnimating, parseIncompleteMarkdown: true, components: components, children: children }) })));
182
+ }, (prevProps, nextProps) => prevProps.children === nextProps.children);
183
+ exports.Response = Response;
184
+ Response.displayName = 'Response';
185
+ //# sourceMappingURL=Response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Response.js","sourceRoot":"","sources":["../../../../src/ai/response/Response.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { type CommonProps } from '@neo4j-ndl/react/_common/types';\nimport { Code } from '@neo4j-ndl/react/code';\nimport { TextLink } from '@neo4j-ndl/react/text-link';\nimport { Typography } from '@neo4j-ndl/react/typography';\nimport classNames from 'classnames';\nimport { memo, useMemo, useRef } from 'react';\nimport { Streamdown } from 'streamdown';\n\nimport { type LanguageProp, Languages } from '../../code-block/code-languages';\nimport { CodePreview } from '../code-preview';\n\ntype ResponseProps = {\n /** The response from the AI */\n children: string;\n /** Whether the response is animating */\n isAnimating?: React.ComponentProps<typeof Streamdown>['isAnimating'];\n};\n\n/**\n * The component is used to display the response from an LLM.\n * It handles markdown rendering and streaming.\n *\n * @alpha - Changes to this component may be breaking.\n */\nconst Response = memo(\n ({\n className,\n children,\n isAnimating = false,\n ref,\n style,\n htmlAttributes,\n ...restProps\n }: CommonProps<'div', ResponseProps>) => {\n // Use a ref to store the current markdown content so we can check for unclosed fences\n // without recreating the components object on every render\n const childrenRef = useRef(children);\n childrenRef.current = children;\n\n const components: React.ComponentProps<typeof Streamdown>['components'] =\n useMemo(\n () => ({\n ol: ({ children, className, ...props }) => (\n <ol className={className} {...props}>\n {children}\n </ol>\n ),\n ul: ({ children, className, ...props }) => (\n <ul className={classNames(className)} {...props}>\n {children}\n </ul>\n ),\n li: ({ children, className, ...props }) => (\n <li className={className} {...props}>\n {children}\n </li>\n ),\n hr: ({ className, ...props }) => (\n <hr className={classNames(className)} {...props} />\n ),\n strong: ({ children, className, style, ...props }) => (\n <Typography\n as=\"strong\"\n variant=\"body-medium\"\n className={className}\n style={{ ...style, fontWeight: 'bold' }}\n {...props}\n >\n {children}\n </Typography>\n ),\n em: ({ children, className, style, ...props }) => (\n <Typography\n as=\"em\"\n variant=\"body-medium\"\n className={className}\n style={{ ...style, fontStyle: 'italic' }}\n {...props}\n >\n {children}\n </Typography>\n ),\n a: ({ children, className, href, ...props }) => (\n <TextLink\n type=\"internal-underline\"\n className={className}\n href={href}\n htmlAttributes={props}\n >\n {children}\n </TextLink>\n ),\n h1: ({ children, className, ...props }) => (\n <Typography\n as=\"h1\"\n variant=\"display\"\n className={className}\n htmlAttributes={{ ...props }}\n >\n {children}\n </Typography>\n ),\n h2: ({ children, className, ...props }) => (\n <Typography\n as=\"h2\"\n variant=\"title-1\"\n className={className}\n htmlAttributes={{ ...props }}\n >\n {children}\n </Typography>\n ),\n h3: ({ children, className, ...props }) => (\n <Typography\n as=\"h3\"\n variant=\"title-2\"\n className={className}\n htmlAttributes={{ ...props }}\n >\n {children}\n </Typography>\n ),\n h4: ({ children, className, ...props }) => (\n <Typography\n as=\"h4\"\n variant=\"title-3\"\n className={className}\n htmlAttributes={{ ...props }}\n >\n {children}\n </Typography>\n ),\n h5: ({ children, className, ...props }) => (\n <Typography\n as=\"h5\"\n variant=\"title-4\"\n className={className}\n htmlAttributes={{ ...props }}\n >\n {children}\n </Typography>\n ),\n h6: ({ children, className, ...props }) => (\n <Typography\n as=\"h6\"\n variant=\"subheading-large\"\n className={className}\n htmlAttributes={{ ...props }}\n >\n {children}\n </Typography>\n ),\n table: ({ children, className, ...props }) => (\n <div className=\"my-4 overflow-x-auto\">\n <table\n className={classNames(\n 'w-full border-collapse border border-border',\n className,\n )}\n {...props}\n >\n {children}\n </table>\n </div>\n ),\n thead: ({ children, className, ...props }) => (\n <thead className={classNames('bg-muted/50', className)} {...props}>\n {children}\n </thead>\n ),\n tbody: ({ children, className, ...props }) => (\n <tbody\n className={classNames('divide-y divide-border', className)}\n {...props}\n >\n {children}\n </tbody>\n ),\n tr: ({ children, className, ...props }) => (\n <tr\n className={classNames('border-border border-b', className)}\n {...props}\n >\n {children}\n </tr>\n ),\n th: ({ children, className, ...props }) => (\n <th\n className={classNames(\n 'px-4 py-2 text-left font-semibold text-sm',\n className,\n )}\n {...props}\n >\n {children}\n </th>\n ),\n td: ({ children, className, ...props }) => (\n <td\n className={classNames('px-4 py-2 text-sm', className)}\n {...props}\n >\n {children}\n </td>\n ),\n blockquote: ({ children, className, ...props }) => (\n <blockquote className={classNames(className)} {...props}>\n {children}\n </blockquote>\n ),\n code: ({\n node,\n className,\n key,\n children: codeChildren,\n ...props\n }) => {\n const isInline =\n node?.position?.start.line === node?.position?.end.line;\n let language: LanguageProp | 'text' = 'javascript';\n if (typeof node?.properties?.className === 'string') {\n const rawLanguage = node.properties.className.replace(\n 'language-',\n '',\n );\n language = (Languages as readonly string[]).includes(rawLanguage)\n ? (rawLanguage as LanguageProp)\n : 'text';\n }\n if (isInline) {\n return (\n <Code\n isRunnable={false}\n className={className}\n htmlAttributes={props}\n >\n {codeChildren}\n </Code>\n );\n }\n if (typeof codeChildren === 'string') {\n // Check if code fences are balanced in the markdown\n // If there are an odd number of fences, it means there's an unclosed code block\n const fenceMatches = childrenRef.current.match(/```/g);\n const fenceCount = fenceMatches ? fenceMatches.length : 0;\n const hasUnclosedFence = fenceCount % 2 !== 0;\n\n // Show loading state when there's an unclosed fence (code block is streaming)\n const isCodeBlockLoading = hasUnclosedFence;\n return (\n <CodePreview\n key={key}\n code={codeChildren}\n isLoading={isCodeBlockLoading}\n language={language}\n className={className}\n htmlAttributes={{\n ...props,\n }}\n />\n );\n } else {\n return <code className={className}>{codeChildren}</code>;\n }\n },\n pre: ({ className, children }) => {\n return <pre className={classNames(className)}>{children}</pre>;\n },\n p: ({ children, className, ...props }) => (\n <Typography\n as=\"p\"\n variant=\"body-medium\"\n className={classNames(className)}\n {...props}\n >\n {children}\n </Typography>\n ),\n img: ({ className, src, alt, ...props }) => (\n <img\n className={classNames(className)}\n src={src}\n alt={alt}\n {...props}\n />\n ),\n }),\n [],\n );\n\n return (\n <div\n ref={ref}\n style={style}\n className={classNames(\n 'ndl-ai-response size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0',\n className,\n )}\n {...restProps}\n {...htmlAttributes}\n >\n <Streamdown\n isAnimating={isAnimating}\n parseIncompleteMarkdown={true}\n components={components}\n >\n {children}\n </Streamdown>\n </div>\n );\n },\n (prevProps, nextProps) => prevProps.children === nextProps.children,\n);\n\nResponse.displayName = 'Response';\n\nexport { Response };\n"]}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /**
3
+ *
4
+ * Copyright (c) "Neo4j"
5
+ * Neo4j Sweden AB [http://neo4j.com]
6
+ *
7
+ * This file is part of Neo4j.
8
+ *
9
+ * Neo4j is free software: you can redistribute it and/or modify
10
+ * it under the terms of the GNU General Public License as published by
11
+ * the Free Software Foundation, either version 3 of the License, or
12
+ * (at your option) any later version.
13
+ *
14
+ * This program is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ * GNU General Public License for more details.
18
+ *
19
+ * You should have received a copy of the GNU General Public License
20
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.Response = void 0;
24
+ var Response_1 = require("./Response");
25
+ Object.defineProperty(exports, "Response", { enumerable: true, get: function () { return Response_1.Response; } });
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ai/response/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAEH,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport { Response } from './Response';\n"]}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ /**
3
+ *
4
+ * Copyright (c) "Neo4j"
5
+ * Neo4j Sweden AB [http://neo4j.com]
6
+ *
7
+ * This file is part of Neo4j.
8
+ *
9
+ * Neo4j is free software: you can redistribute it and/or modify
10
+ * it under the terms of the GNU General Public License as published by
11
+ * the Free Software Foundation, either version 3 of the License, or
12
+ * (at your option) any later version.
13
+ *
14
+ * This program is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ * GNU General Public License for more details.
18
+ *
19
+ * You should have received a copy of the GNU General Public License
20
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
21
+ */
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.ResponseFullExampleSource = exports.ResponseListsSource = exports.ResponseHeadingsSource = exports.ResponseCodeExamplesSource = exports.ResponseAllComponentsSource = exports.ResponseStreamingSource = exports.ResponseDefaultSource = exports.ResponseFullExample = exports.ResponseLists = exports.ResponseHeadings = exports.ResponseCodeExamples = exports.ResponseAllComponents = exports.ResponseStreaming = exports.ResponseDefault = void 0;
27
+ var response_default_story_1 = require("./response-default.story");
28
+ Object.defineProperty(exports, "ResponseDefault", { enumerable: true, get: function () { return __importDefault(response_default_story_1).default; } });
29
+ var response_streaming_story_1 = require("./response-streaming.story");
30
+ Object.defineProperty(exports, "ResponseStreaming", { enumerable: true, get: function () { return __importDefault(response_streaming_story_1).default; } });
31
+ var response_all_components_story_1 = require("./response-all-components.story");
32
+ Object.defineProperty(exports, "ResponseAllComponents", { enumerable: true, get: function () { return __importDefault(response_all_components_story_1).default; } });
33
+ var response_code_examples_story_1 = require("./response-code-examples.story");
34
+ Object.defineProperty(exports, "ResponseCodeExamples", { enumerable: true, get: function () { return __importDefault(response_code_examples_story_1).default; } });
35
+ var response_headings_story_1 = require("./response-headings.story");
36
+ Object.defineProperty(exports, "ResponseHeadings", { enumerable: true, get: function () { return __importDefault(response_headings_story_1).default; } });
37
+ var response_lists_story_1 = require("./response-lists.story");
38
+ Object.defineProperty(exports, "ResponseLists", { enumerable: true, get: function () { return __importDefault(response_lists_story_1).default; } });
39
+ var response_full_example_story_1 = require("./response-full-example.story");
40
+ Object.defineProperty(exports, "ResponseFullExample", { enumerable: true, get: function () { return __importDefault(response_full_example_story_1).default; } });
41
+ const export_stories_utils_1 = require("@neo4j-ndl/react/_common/export-stories-utils");
42
+ const response_all_components_story_raw_1 = __importDefault(require("./response-all-components.story?raw"));
43
+ const response_code_examples_story_raw_1 = __importDefault(require("./response-code-examples.story?raw"));
44
+ const response_default_story_raw_1 = __importDefault(require("./response-default.story?raw"));
45
+ const response_full_example_story_raw_1 = __importDefault(require("./response-full-example.story?raw"));
46
+ const response_headings_story_raw_1 = __importDefault(require("./response-headings.story?raw"));
47
+ const response_lists_story_raw_1 = __importDefault(require("./response-lists.story?raw"));
48
+ const response_streaming_story_raw_1 = __importDefault(require("./response-streaming.story?raw"));
49
+ exports.ResponseDefaultSource = (0, export_stories_utils_1.removeLicenseHeader)(response_default_story_raw_1.default);
50
+ exports.ResponseStreamingSource = (0, export_stories_utils_1.removeLicenseHeader)(response_streaming_story_raw_1.default);
51
+ exports.ResponseAllComponentsSource = (0, export_stories_utils_1.removeLicenseHeader)(response_all_components_story_raw_1.default);
52
+ exports.ResponseCodeExamplesSource = (0, export_stories_utils_1.removeLicenseHeader)(response_code_examples_story_raw_1.default);
53
+ exports.ResponseHeadingsSource = (0, export_stories_utils_1.removeLicenseHeader)(response_headings_story_raw_1.default);
54
+ exports.ResponseListsSource = (0, export_stories_utils_1.removeLicenseHeader)(response_lists_story_raw_1.default);
55
+ exports.ResponseFullExampleSource = (0, export_stories_utils_1.removeLicenseHeader)(response_full_example_story_raw_1.default);
56
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ai/response/stories/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;;;;AAEH,mEAAsE;AAA7D,0IAAA,OAAO,OAAmB;AACnC,uEAA0E;AAAjE,8IAAA,OAAO,OAAqB;AACrC,iFAAmF;AAA1E,uJAAA,OAAO,OAAyB;AACzC,+EAAiF;AAAxE,qJAAA,OAAO,OAAwB;AACxC,qEAAwE;AAA/D,4IAAA,OAAO,OAAoB;AACpC,+DAAkE;AAAzD,sIAAA,OAAO,OAAiB;AACjC,6EAA+E;AAAtE,mJAAA,OAAO,OAAuB;AAEvC,wFAAoF;AAEpF,4GAAiF;AACjF,0GAA+E;AAC/E,8FAAoE;AACpE,wGAA6E;AAC7E,gGAAsE;AACtE,0FAAgE;AAChE,kGAAwE;AAE3D,QAAA,qBAAqB,GAAG,IAAA,0CAAmB,EACtD,oCAAwB,CACzB,CAAC;AACW,QAAA,uBAAuB,GAAG,IAAA,0CAAmB,EACxD,sCAA0B,CAC3B,CAAC;AACW,QAAA,2BAA2B,GAAG,IAAA,0CAAmB,EAC5D,2CAA8B,CAC/B,CAAC;AACW,QAAA,0BAA0B,GAAG,IAAA,0CAAmB,EAC3D,0CAA6B,CAC9B,CAAC;AACW,QAAA,sBAAsB,GAAG,IAAA,0CAAmB,EACvD,qCAAyB,CAC1B,CAAC;AACW,QAAA,mBAAmB,GAAG,IAAA,0CAAmB,EAAC,kCAAsB,CAAC,CAAC;AAClE,QAAA,yBAAyB,GAAG,IAAA,0CAAmB,EAC1D,yCAA4B,CAC7B,CAAC","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport { default as ResponseDefault } from './response-default.story';\nexport { default as ResponseStreaming } from './response-streaming.story';\nexport { default as ResponseAllComponents } from './response-all-components.story';\nexport { default as ResponseCodeExamples } from './response-code-examples.story';\nexport { default as ResponseHeadings } from './response-headings.story';\nexport { default as ResponseLists } from './response-lists.story';\nexport { default as ResponseFullExample } from './response-full-example.story';\n\nimport { removeLicenseHeader } from '@neo4j-ndl/react/_common/export-stories-utils';\n\nimport ResponseAllComponentsSourceRaw from './response-all-components.story?raw';\nimport ResponseCodeExamplesSourceRaw from './response-code-examples.story?raw';\nimport ResponseDefaultSourceRaw from './response-default.story?raw';\nimport ResponseFullExampleSourceRaw from './response-full-example.story?raw';\nimport ResponseHeadingsSourceRaw from './response-headings.story?raw';\nimport ResponseListsSourceRaw from './response-lists.story?raw';\nimport ResponseStreamingSourceRaw from './response-streaming.story?raw';\n\nexport const ResponseDefaultSource = removeLicenseHeader(\n ResponseDefaultSourceRaw,\n);\nexport const ResponseStreamingSource = removeLicenseHeader(\n ResponseStreamingSourceRaw,\n);\nexport const ResponseAllComponentsSource = removeLicenseHeader(\n ResponseAllComponentsSourceRaw,\n);\nexport const ResponseCodeExamplesSource = removeLicenseHeader(\n ResponseCodeExamplesSourceRaw,\n);\nexport const ResponseHeadingsSource = removeLicenseHeader(\n ResponseHeadingsSourceRaw,\n);\nexport const ResponseListsSource = removeLicenseHeader(ResponseListsSourceRaw);\nexport const ResponseFullExampleSource = removeLicenseHeader(\n ResponseFullExampleSourceRaw,\n);\n"]}
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Component = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ /**
6
+ *
7
+ * Copyright (c) "Neo4j"
8
+ * Neo4j Sweden AB [http://neo4j.com]
9
+ *
10
+ * This file is part of Neo4j.
11
+ *
12
+ * Neo4j is free software: you can redistribute it and/or modify
13
+ * it under the terms of the GNU General Public License as published by
14
+ * the Free Software Foundation, either version 3 of the License, or
15
+ * (at your option) any later version.
16
+ *
17
+ * This program is distributed in the hope that it will be useful,
18
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20
+ * GNU General Public License for more details.
21
+ *
22
+ * You should have received a copy of the GNU General Public License
23
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
24
+ */
25
+ const ai_1 = require("@neo4j-ndl/react/ai");
26
+ const comprehensiveMarkdown = `
27
+ # All Markdown Components Demo
28
+
29
+ This story demonstrates all the markdown components that the Response component can render.
30
+
31
+ ## Headings
32
+
33
+ # Heading 1
34
+ ## Heading 2
35
+ ### Heading 3
36
+ #### Heading 4
37
+ ##### Heading 5
38
+ ###### Heading 6
39
+
40
+ ## Text Formatting
41
+
42
+ This is **bold text** and this is *italic text*.
43
+
44
+ You can also use __bold__ and _italic_ with underscores.
45
+
46
+ Combine them: **bold and *italic* together**.
47
+
48
+ ## Lists
49
+
50
+ ### Unordered Lists
51
+
52
+ - Item 1
53
+ - Item 2
54
+ - Item 3
55
+ - Nested item 1
56
+ - Nested item 2
57
+ - Deeply nested item
58
+
59
+ ### Ordered Lists
60
+
61
+ 1. First item
62
+ 2. Second item
63
+ 3. Third item
64
+ 1. Nested numbered item
65
+ 2. Another nested item
66
+
67
+ ## Code
68
+
69
+ ### Inline Code
70
+
71
+ Use \`const x = 5\` for inline code.
72
+
73
+ ### Code Blocks
74
+
75
+ #### JavaScript
76
+
77
+ \`\`\`javascript
78
+ const greeting = "Hello World";
79
+ console.log(greeting);
80
+
81
+ function sayHello(name) {
82
+ return \`Hello, \${name}!\`;
83
+ }
84
+ \`\`\`
85
+
86
+ #### Python
87
+
88
+ \`\`\`python
89
+ def greet(name):
90
+ return f"Hello, {name}!"
91
+
92
+ print(greet("World"))
93
+ \`\`\`
94
+
95
+ #### Cypher
96
+
97
+ \`\`\`cypher
98
+ MATCH (n:Person)-[:KNOWS]->(m:Person)
99
+ WHERE n.name = "Alice"
100
+ RETURN m.name
101
+ \`\`\`
102
+
103
+ #### TypeScript
104
+
105
+ \`\`\`typescript
106
+ interface User {
107
+ name: string;
108
+ age: number;
109
+ }
110
+
111
+ const user: User = {
112
+ name: "John",
113
+ age: 30
114
+ };
115
+ \`\`\`
116
+
117
+ #### Without Language Specification
118
+
119
+ \`\`\`
120
+ Plain code block
121
+ without syntax highlighting
122
+ \`\`\`
123
+
124
+ ## Links
125
+
126
+ Visit [Neo4j](https://neo4j.com) for more information.
127
+
128
+ Multiple links: [Documentation](https://neo4j.com/docs) and [Community](https://community.neo4j.com)
129
+
130
+ ## Blockquotes
131
+
132
+ > This is a blockquote.
133
+ > It can span multiple lines.
134
+
135
+ > ### Blockquote with heading
136
+ >
137
+ > You can also include other markdown inside blockquotes.
138
+ >
139
+ > - Like lists
140
+ > - And other elements
141
+
142
+ ### Nested Blockquotes
143
+
144
+ > Outer quote
145
+ >> Nested quote
146
+ >>> Deeply nested quote
147
+
148
+ ## Horizontal Rules
149
+
150
+ Content above the rule
151
+
152
+ ---
153
+
154
+ Content below the rule
155
+
156
+ ## Images
157
+
158
+ ![A smiling man](https://media.istockphoto.com/id/1334716681/photo/a-smiling-man.jpg?s=612x612&w=0&k=20&c=U6rkSDpQMzkcJEqx2hAa63fNLIhqnZb31Xuc_QSi648=)
159
+
160
+ ## Paragraphs
161
+
162
+ This is a paragraph with multiple sentences. It demonstrates how regular text is rendered. You can write long-form content that spans multiple lines.
163
+
164
+ Another paragraph here. Paragraphs are separated by blank lines in markdown.
165
+
166
+ ## Mixed Content Example
167
+
168
+ Here's a practical example combining multiple elements:
169
+
170
+ ### Database Query Tutorial
171
+
172
+ To query your Neo4j database, follow these steps:
173
+
174
+ 1. **Connect to your database**
175
+
176
+ Use the following code:
177
+
178
+ \`\`\`javascript
179
+ const driver = neo4j.driver(
180
+ 'bolt://localhost:7687',
181
+ neo4j.auth.basic('neo4j', 'password')
182
+ );
183
+ \`\`\`
184
+
185
+ 2. **Write your Cypher query**
186
+
187
+ \`\`\`cypher
188
+ MATCH (n:Movie)
189
+ WHERE n.released > 2000
190
+ RETURN n.title, n.released
191
+ ORDER BY n.released DESC
192
+ LIMIT 10
193
+ \`\`\`
194
+
195
+ 3. **Execute and process results**
196
+
197
+ > **Note**: Always close your session after use!
198
+
199
+ For more information, visit the [Neo4j Documentation](https://neo4j.com/docs).
200
+
201
+ ---
202
+
203
+ ## Special Characters and Escaping
204
+
205
+ You can escape special characters: \\* \\_ \\[ \\]
206
+
207
+ ## Preformatted Text
208
+
209
+ Use code blocks for preformatted text with preserved spacing:
210
+
211
+ \`\`\`
212
+ This text
213
+ has preserved
214
+ indentation
215
+ \`\`\`
216
+
217
+ | Item | In Stock | Price |
218
+ | :---------------- | :------: | ----: |
219
+ | Python Hat | True | 222222223.99 |
220
+ | SQL Hat | True | 23.99 |
221
+ | Codecademy Tee | False | 19.99 |
222
+ | Codecademy Hoodie | False | 42.99 |
223
+ `;
224
+ const Component = () => {
225
+ return ((0, jsx_runtime_1.jsx)("div", { className: "max-w-4xl", children: (0, jsx_runtime_1.jsx)(ai_1.Response, { children: comprehensiveMarkdown }) }));
226
+ };
227
+ exports.Component = Component;
228
+ exports.default = exports.Component;
229
+ //# sourceMappingURL=response-all-components.story.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-all-components.story.js","sourceRoot":"","sources":["../../../../../src/ai/response/stories/response-all-components.story.tsx"],"names":[],"mappings":";;;;AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,4CAA+C;AAE/C,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqM7B,CAAC;AAEK,MAAM,SAAS,GAAG,GAAG,EAAE;IAC5B,OAAO,CACL,gCAAK,SAAS,EAAC,WAAW,YACxB,uBAAC,aAAQ,cAAE,qBAAqB,GAAY,GACxC,CACP,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,SAAS,aAMpB;AAEF,kBAAe,iBAAS,CAAC","sourcesContent":["/**\n *\n * Copyright (c) \"Neo4j\"\n * Neo4j Sweden AB [http://neo4j.com]\n *\n * This file is part of Neo4j.\n *\n * Neo4j is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\nimport { Response } from '@neo4j-ndl/react/ai';\n\nconst comprehensiveMarkdown = `\n# All Markdown Components Demo\n\nThis story demonstrates all the markdown components that the Response component can render.\n\n## Headings\n\n# Heading 1\n## Heading 2\n### Heading 3\n#### Heading 4\n##### Heading 5\n###### Heading 6\n\n## Text Formatting\n\nThis is **bold text** and this is *italic text*.\n\nYou can also use __bold__ and _italic_ with underscores.\n\nCombine them: **bold and *italic* together**.\n\n## Lists\n\n### Unordered Lists\n\n- Item 1\n- Item 2\n- Item 3\n - Nested item 1\n - Nested item 2\n - Deeply nested item\n\n### Ordered Lists\n\n1. First item\n2. Second item\n3. Third item\n 1. Nested numbered item\n 2. Another nested item\n\n## Code\n\n### Inline Code\n\nUse \\`const x = 5\\` for inline code.\n\n### Code Blocks\n\n#### JavaScript\n\n\\`\\`\\`javascript\nconst greeting = \"Hello World\";\nconsole.log(greeting);\n\nfunction sayHello(name) {\n return \\`Hello, \\${name}!\\`;\n}\n\\`\\`\\`\n\n#### Python\n\n\\`\\`\\`python\ndef greet(name):\n return f\"Hello, {name}!\"\n\nprint(greet(\"World\"))\n\\`\\`\\`\n\n#### Cypher\n\n\\`\\`\\`cypher\nMATCH (n:Person)-[:KNOWS]->(m:Person)\nWHERE n.name = \"Alice\"\nRETURN m.name\n\\`\\`\\`\n\n#### TypeScript\n\n\\`\\`\\`typescript\ninterface User {\n name: string;\n age: number;\n}\n\nconst user: User = {\n name: \"John\",\n age: 30\n};\n\\`\\`\\`\n\n#### Without Language Specification\n\n\\`\\`\\`\nPlain code block\nwithout syntax highlighting\n\\`\\`\\`\n\n## Links\n\nVisit [Neo4j](https://neo4j.com) for more information.\n\nMultiple links: [Documentation](https://neo4j.com/docs) and [Community](https://community.neo4j.com)\n\n## Blockquotes\n\n> This is a blockquote.\n> It can span multiple lines.\n\n> ### Blockquote with heading\n> \n> You can also include other markdown inside blockquotes.\n> \n> - Like lists\n> - And other elements\n\n### Nested Blockquotes\n\n> Outer quote\n>> Nested quote\n>>> Deeply nested quote\n\n## Horizontal Rules\n\nContent above the rule\n\n---\n\nContent below the rule\n\n## Images\n\n![A smiling man](https://media.istockphoto.com/id/1334716681/photo/a-smiling-man.jpg?s=612x612&w=0&k=20&c=U6rkSDpQMzkcJEqx2hAa63fNLIhqnZb31Xuc_QSi648=)\n\n## Paragraphs\n\nThis is a paragraph with multiple sentences. It demonstrates how regular text is rendered. You can write long-form content that spans multiple lines.\n\nAnother paragraph here. Paragraphs are separated by blank lines in markdown.\n\n## Mixed Content Example\n\nHere's a practical example combining multiple elements:\n\n### Database Query Tutorial\n\nTo query your Neo4j database, follow these steps:\n\n1. **Connect to your database**\n \n Use the following code:\n \n \\`\\`\\`javascript\n const driver = neo4j.driver(\n 'bolt://localhost:7687',\n neo4j.auth.basic('neo4j', 'password')\n );\n \\`\\`\\`\n\n2. **Write your Cypher query**\n \n \\`\\`\\`cypher\n MATCH (n:Movie)\n WHERE n.released > 2000\n RETURN n.title, n.released\n ORDER BY n.released DESC\n LIMIT 10\n \\`\\`\\`\n\n3. **Execute and process results**\n \n > **Note**: Always close your session after use!\n\nFor more information, visit the [Neo4j Documentation](https://neo4j.com/docs).\n\n---\n\n## Special Characters and Escaping\n\nYou can escape special characters: \\\\* \\\\_ \\\\[ \\\\]\n\n## Preformatted Text\n\nUse code blocks for preformatted text with preserved spacing:\n\n\\`\\`\\`\n This text\n has preserved\n indentation\n\\`\\`\\`\n\n| Item | In Stock | Price |\n| :---------------- | :------: | ----: |\n| Python Hat | True | 222222223.99 |\n| SQL Hat | True | 23.99 |\n| Codecademy Tee | False | 19.99 |\n| Codecademy Hoodie | False | 42.99 |\n`;\n\nexport const Component = () => {\n return (\n <div className=\"max-w-4xl\">\n <Response>{comprehensiveMarkdown}</Response>\n </div>\n );\n};\n\nexport default Component;\n"]}