@neo4j-ndl/react 4.1.9 → 4.2.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 (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 +133 -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 +130 -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 +4 -3
@@ -0,0 +1,38 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
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
+ import '@neo4j-ndl/base/lib/neo4j-ds-styles.css';
23
+ import { Prompt } from '@neo4j-ndl/react/ai';
24
+ import { useState } from 'react';
25
+ const Component = () => {
26
+ const [prompt, setPrompt] = useState('');
27
+ const [isRunningPrompt, setIsRunningPrompt] = useState(false);
28
+ const handleSubmitPrompt = () => {
29
+ setIsRunningPrompt(!isRunningPrompt);
30
+ if (!isRunningPrompt) {
31
+ alert(`You submitted the following prompt: ${prompt}`);
32
+ setPrompt('');
33
+ }
34
+ };
35
+ return (_jsx(Prompt, { isRunningPrompt: isRunningPrompt, value: prompt, onChange: (e) => setPrompt(e.target.value), onSubmitPrompt: handleSubmitPrompt }));
36
+ };
37
+ export default Component;
38
+ //# sourceMappingURL=prompt-default.story.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-default.story.js","sourceRoot":"","sources":["../../../../../src/ai/prompt/stories/prompt-default.story.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,yCAAyC,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9D,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,kBAAkB,CAAC,CAAC,eAAe,CAAC,CAAC;QACrC,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,KAAK,CAAC,uCAAuC,MAAM,EAAE,CAAC,CAAC;YACvD,SAAS,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,MAAM,IACL,eAAe,EAAE,eAAe,EAChC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,CAAyC,EAAE,EAAE,CACtD,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAE3B,cAAc,EAAE,kBAAkB,GAClC,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,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\nimport '@neo4j-ndl/base/lib/neo4j-ds-styles.css';\n\nimport { Prompt } from '@neo4j-ndl/react/ai';\nimport { useState } from 'react';\n\nconst Component = () => {\n const [prompt, setPrompt] = useState('');\n const [isRunningPrompt, setIsRunningPrompt] = useState(false);\n\n const handleSubmitPrompt = () => {\n setIsRunningPrompt(!isRunningPrompt);\n if (!isRunningPrompt) {\n alert(`You submitted the following prompt: ${prompt}`);\n setPrompt('');\n }\n };\n\n return (\n <Prompt\n isRunningPrompt={isRunningPrompt}\n value={prompt}\n onChange={(e: React.ChangeEvent<HTMLTextAreaElement>) =>\n setPrompt(e.target.value)\n }\n onSubmitPrompt={handleSubmitPrompt}\n />\n );\n};\n\nexport default Component;\n"]}
@@ -0,0 +1,60 @@
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
+ import { Prompt } from '../Prompt';
23
+ import { PromptAdvanced, PromptAdvancedSrc, PromptDefault, PromptDefaultSrc, } from '.';
24
+ const componentMeta = {
25
+ component: Prompt,
26
+ id: 'components-ai-prompt',
27
+ parameters: {
28
+ controls: { disable: true },
29
+ },
30
+ tags: ['docsPage'],
31
+ title: 'Components/AI/Prompt',
32
+ };
33
+ export default componentMeta;
34
+ export const Basic = {
35
+ args: {},
36
+ parameters: {
37
+ docs: {
38
+ source: {
39
+ code: PromptDefaultSrc,
40
+ language: 'tsx',
41
+ type: 'code',
42
+ },
43
+ },
44
+ },
45
+ render: PromptDefault,
46
+ };
47
+ export const Advanced = {
48
+ args: {},
49
+ parameters: {
50
+ docs: {
51
+ source: {
52
+ code: PromptAdvancedSrc,
53
+ language: 'tsx',
54
+ type: 'code',
55
+ },
56
+ },
57
+ },
58
+ render: PromptAdvanced,
59
+ };
60
+ //# sourceMappingURL=prompt.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.stories.js","sourceRoot":"","sources":["../../../../../src/ai/prompt/stories/prompt.stories.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,gBAAgB,GACjB,MAAM,GAAG,CAAC;AAEX,MAAM,aAAa,GAAwB;IACzC,SAAS,EAAE,MAAM;IACjB,EAAE,EAAE,sBAAsB;IAC1B,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;KAC5B;IACD,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,KAAK,EAAE,sBAAsB;CAC9B,CAAC;AAEF,eAAe,aAAa,CAAC;AAI7B,MAAM,CAAC,MAAM,KAAK,GAAU;IAC1B,IAAI,EAAE,EAAE;IACR,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,MAAM,EAAE;gBACN,IAAI,EAAE,gBAAgB;gBACtB,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,MAAM;aACb;SACF;KACF;IACD,MAAM,EAAE,aAAa;CACtB,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAU;IAC7B,IAAI,EAAE,EAAE;IACR,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,MAAM,EAAE;gBACN,IAAI,EAAE,iBAAiB;gBACvB,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,MAAM;aACb;SACF;KACF;IACD,MAAM,EAAE,cAAc;CACvB,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 { type Meta, type StoryObj } from '@storybook/react-vite';\n\nimport { Prompt } from '../Prompt';\nimport {\n PromptAdvanced,\n PromptAdvancedSrc,\n PromptDefault,\n PromptDefaultSrc,\n} from '.';\n\nconst componentMeta: Meta<typeof Prompt> = {\n component: Prompt,\n id: 'components-ai-prompt',\n parameters: {\n controls: { disable: true },\n },\n tags: ['docsPage'],\n title: 'Components/AI/Prompt',\n};\n\nexport default componentMeta;\n\ntype Story = StoryObj<typeof componentMeta>;\n\nexport const Basic: Story = {\n args: {},\n parameters: {\n docs: {\n source: {\n code: PromptDefaultSrc,\n language: 'tsx',\n type: 'code',\n },\n },\n },\n render: PromptDefault,\n};\n\nexport const Advanced: Story = {\n args: {},\n parameters: {\n docs: {\n source: {\n code: PromptAdvancedSrc,\n language: 'tsx',\n type: 'code',\n },\n },\n },\n render: PromptAdvanced,\n};\n"]}
@@ -0,0 +1,71 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
13
+ /**
14
+ *
15
+ * Copyright (c) "Neo4j"
16
+ * Neo4j Sweden AB [http://neo4j.com]
17
+ *
18
+ * This file is part of Neo4j.
19
+ *
20
+ * Neo4j is free software: you can redistribute it and/or modify
21
+ * it under the terms of the GNU General Public License as published by
22
+ * the Free Software Foundation, either version 3 of the License, or
23
+ * (at your option) any later version.
24
+ *
25
+ * This program is distributed in the hope that it will be useful,
26
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
27
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28
+ * GNU General Public License for more details.
29
+ *
30
+ * You should have received a copy of the GNU General Public License
31
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
32
+ */
33
+ import { CleanIconButton, Typography } from '@neo4j-ndl/react';
34
+ import { ChevronDownIconOutline } from '@neo4j-ndl/react/icons';
35
+ import classNames from 'classnames';
36
+ import { useState } from 'react';
37
+ import { Presence } from '../presence';
38
+ import { formatThinkingDuration } from '../thinking/thinking-duration-formatter';
39
+ /**
40
+ * The component is used to display the reasoning state of an LLM.
41
+ * It has an accordion like behavior to show the reasoning steps.
42
+ *
43
+ * @alpha - Changes to this component may be breaking.
44
+ */
45
+ const ReasoningComponent = (_a) => {
46
+ var { isThinking = true, thinkingMs = 1000, currentAction = 'Thinking', children, className, style, htmlAttributes, ref } = _a, restProps = __rest(_a, ["isThinking", "thinkingMs", "currentAction", "children", "className", "style", "htmlAttributes", "ref"]);
47
+ const classes = classNames('ndl-ai-reasoning', className);
48
+ const [isExpanded, setIsExpanded] = useState(false);
49
+ const shouldShowChildren = isExpanded && isThinking === false;
50
+ const { value: thinkingDuration, unit } = formatThinkingDuration(thinkingMs);
51
+ return (_jsxs("div", Object.assign({ ref: ref, className: classes, style: style }, restProps, htmlAttributes, { children: [_jsx(Typography, { variant: "label", className: "ndl-ai-reasoning-header", children: isThinking === true ? (_jsxs(_Fragment, { children: [_jsx(Presence, { isThinking: isThinking, className: "n-size-token-24" }), _jsxs("span", { className: "ndl-ai-reasoning-header-text", children: [currentAction, "..."] })] })) : (_jsxs(_Fragment, { children: [_jsxs("span", { children: ["Thought for ", thinkingDuration, " ", unit] }), _jsx(CleanIconButton, { size: "small", variant: "neutral", onClick: () => setIsExpanded(!isExpanded), description: isExpanded ? 'Collapse' : 'Expand', className: classNames('ndl-ai-reasoning-expand-button', {
52
+ 'ndl-expanded': isExpanded,
53
+ }), children: _jsx(ChevronDownIconOutline, {}) })] })) }), _jsx("div", { className: classNames('ndl-ai-reasoning-content', {
54
+ 'ndl-expanded': shouldShowChildren,
55
+ }), inert: !shouldShowChildren, children: _jsx("div", { className: "ndl-ai-reasoning-content-inner", children: _jsx("div", { className: "ndl-ai-reasoning-content-inner-2", children: children }) }) })] })));
56
+ };
57
+ const Section = (_a) => {
58
+ var { heading, leadingVisual, children, className, style, htmlAttributes, ref } = _a, restProps = __rest(_a, ["heading", "leadingVisual", "children", "className", "style", "htmlAttributes", "ref"]);
59
+ const classes = classNames('ndl-ai-reasoning-section', className);
60
+ const [isExpanded, setIsExpanded] = useState(false);
61
+ return (_jsxs("div", Object.assign({ ref: ref, className: classes, style: style }, restProps, htmlAttributes, { children: [_jsxs("div", { className: "ndl-ai-reasoning-section-header", children: [_jsx("div", { className: "ndl-ai-reasoning-section-leading", children: leadingVisual }), _jsx(Typography, { variant: "subheading-small", children: heading }), _jsx(CleanIconButton, { description: isExpanded ? 'Collapse' : 'Expand', size: "small", variant: "neutral", className: classNames('ndl-ai-reasoning-expand-button', {
62
+ 'ndl-expanded': isExpanded,
63
+ }), onClick: () => setIsExpanded(!isExpanded), children: _jsx(ChevronDownIconOutline, {}) })] }), _jsx("div", { className: classNames('ndl-ai-reasoning-section-content', {
64
+ 'ndl-expanded': isExpanded,
65
+ }), inert: !isExpanded, children: _jsx("div", { className: "ndl-ai-reasoning-section-content-inner", children: _jsxs("div", { className: "ndl-ai-reasoning-section-content-inner-2", children: [_jsx("div", { className: "ndl-ai-reasoning-section-content-line-container", children: _jsx("div", { className: "ndl-ai-reasoning-section-content-line" }) }), _jsx("div", { className: "ndl-ai-reasoning-section-content-children", children: children })] }) }) })] })));
66
+ };
67
+ const Reasoning = Object.assign(ReasoningComponent, {
68
+ Section,
69
+ });
70
+ export { Reasoning };
71
+ //# sourceMappingURL=Reasoning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Reasoning.js","sourceRoot":"","sources":["../../../../src/ai/reasoning/Reasoning.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAajF;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG,CAAC,EAUS,EAAE,EAAE;QAVb,EAC1B,UAAU,GAAG,IAAI,EACjB,UAAU,GAAG,IAAI,EACjB,aAAa,GAAG,UAAU,EAC1B,QAAQ,EACR,SAAS,EACT,KAAK,EACL,cAAc,EACd,GAAG,OAEgC,EADhC,SAAS,cATc,wGAU3B,CADa;IAEZ,MAAM,OAAO,GAAG,UAAU,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IAC1D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,kBAAkB,GAAG,UAAU,IAAI,UAAU,KAAK,KAAK,CAAC;IAE9D,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAE7E,OAAO,CACL,6BACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,KAAK,IACR,SAAS,EACT,cAAc,eAElB,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,EAAC,SAAS,EAAC,yBAAyB,YAC5D,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,CACrB,8BACE,KAAC,QAAQ,IAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAC,iBAAiB,GAAG,EAChE,gBAAM,SAAS,EAAC,8BAA8B,aAC3C,aAAa,WACT,IACN,CACJ,CAAC,CAAC,CAAC,CACF,8BACE,2CACe,gBAAgB,OAAG,IAAI,IAC/B,EACP,KAAC,eAAe,IACd,IAAI,EAAC,OAAO,EACZ,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,EACzC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAC/C,SAAS,EAAE,UAAU,CAAC,gCAAgC,EAAE;gCACtD,cAAc,EAAE,UAAU;6BAC3B,CAAC,YAEF,KAAC,sBAAsB,KAAG,GACV,IACjB,CACJ,GACU,EACb,cACE,SAAS,EAAE,UAAU,CAAC,0BAA0B,EAAE;oBAChD,cAAc,EAAE,kBAAkB;iBACnC,CAAC,EACF,KAAK,EAAE,CAAC,kBAAkB,YAE1B,cAAK,SAAS,EAAC,gCAAgC,YAC7C,cAAK,SAAS,EAAC,kCAAkC,YAAE,QAAQ,GAAO,GAC9D,GACF,KACF,CACP,CAAC;AACJ,CAAC,CAAC;AAWF,MAAM,OAAO,GAAG,CAAC,EASkB,EAAE,EAAE;QATtB,EACf,OAAO,EACP,aAAa,EACb,QAAQ,EACR,SAAS,EACT,KAAK,EACL,cAAc,EACd,GAAG,OAE8B,EAD9B,SAAS,cARG,uFAShB,CADa;IAEZ,MAAM,OAAO,GAAG,UAAU,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC;IAClE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,OAAO,CACL,6BACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,KAAK,IACR,SAAS,EACT,cAAc,eAElB,eAAK,SAAS,EAAC,iCAAiC,aAC9C,cAAK,SAAS,EAAC,kCAAkC,YAAE,aAAa,GAAO,EACvE,KAAC,UAAU,IAAC,OAAO,EAAC,kBAAkB,YAAE,OAAO,GAAc,EAC7D,KAAC,eAAe,IACd,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAC/C,IAAI,EAAC,OAAO,EACZ,OAAO,EAAC,SAAS,EACjB,SAAS,EAAE,UAAU,CAAC,gCAAgC,EAAE;4BACtD,cAAc,EAAE,UAAU;yBAC3B,CAAC,EACF,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,YAEzC,KAAC,sBAAsB,KAAG,GACV,IACd,EACN,cACE,SAAS,EAAE,UAAU,CAAC,kCAAkC,EAAE;oBACxD,cAAc,EAAE,UAAU;iBAC3B,CAAC,EACF,KAAK,EAAE,CAAC,UAAU,YAElB,cAAK,SAAS,EAAC,wCAAwC,YACrD,eAAK,SAAS,EAAC,0CAA0C,aACvD,cAAK,SAAS,EAAC,iDAAiD,YAC9D,cAAK,SAAS,EAAC,uCAAuC,GAAG,GACrD,EACN,cAAK,SAAS,EAAC,2CAA2C,YACvD,QAAQ,GACL,IACF,GACF,GACF,KACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE;IAClD,OAAO;CACR,CAAC,CAAC;AAEH,OAAO,EAAE,SAAS,EAAE,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\nimport { CleanIconButton, Typography } from '@neo4j-ndl/react';\nimport { type CommonProps } from '@neo4j-ndl/react/_common/types';\nimport { ChevronDownIconOutline } from '@neo4j-ndl/react/icons';\nimport classNames from 'classnames';\nimport { useState } from 'react';\n\nimport { Presence } from '../presence';\nimport { formatThinkingDuration } from '../thinking/thinking-duration-formatter';\n\ntype ReasoningProps = {\n /** What should be displayed inside the reasoning component. */\n children?: React.ReactNode;\n /** Whether the AI is thinking */\n isThinking?: boolean;\n /** The duration of the thinking in milliseconds */\n thinkingMs?: number;\n /** The current action the AI is performing */\n currentAction?: string;\n};\n\n/**\n * The component is used to display the reasoning state of an LLM.\n * It has an accordion like behavior to show the reasoning steps.\n *\n * @alpha - Changes to this component may be breaking.\n */\nconst ReasoningComponent = ({\n isThinking = true,\n thinkingMs = 1000,\n currentAction = 'Thinking',\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', ReasoningProps>) => {\n const classes = classNames('ndl-ai-reasoning', className);\n const [isExpanded, setIsExpanded] = useState(false);\n const shouldShowChildren = isExpanded && isThinking === false;\n\n const { value: thinkingDuration, unit } = formatThinkingDuration(thinkingMs);\n\n return (\n <div\n ref={ref}\n className={classes}\n style={style}\n {...restProps}\n {...htmlAttributes}\n >\n <Typography variant=\"label\" className=\"ndl-ai-reasoning-header\">\n {isThinking === true ? (\n <>\n <Presence isThinking={isThinking} className=\"n-size-token-24\" />\n <span className=\"ndl-ai-reasoning-header-text\">\n {currentAction}...\n </span>\n </>\n ) : (\n <>\n <span>\n Thought for {thinkingDuration} {unit}\n </span>\n <CleanIconButton\n size=\"small\"\n variant=\"neutral\"\n onClick={() => setIsExpanded(!isExpanded)}\n description={isExpanded ? 'Collapse' : 'Expand'}\n className={classNames('ndl-ai-reasoning-expand-button', {\n 'ndl-expanded': isExpanded,\n })}\n >\n <ChevronDownIconOutline />\n </CleanIconButton>\n </>\n )}\n </Typography>\n <div\n className={classNames('ndl-ai-reasoning-content', {\n 'ndl-expanded': shouldShowChildren,\n })}\n inert={!shouldShowChildren}\n >\n <div className=\"ndl-ai-reasoning-content-inner\">\n <div className=\"ndl-ai-reasoning-content-inner-2\">{children}</div>\n </div>\n </div>\n </div>\n );\n};\n\ntype SectionProps = {\n /** The heading of the section */\n heading?: React.ReactNode;\n /** The children of the section */\n children?: React.ReactNode;\n /** The visual leading the section */\n leadingVisual?: React.ReactNode;\n};\n\nconst Section = ({\n heading,\n leadingVisual,\n children,\n className,\n style,\n htmlAttributes,\n ref,\n ...restProps\n}: CommonProps<'div', SectionProps>) => {\n const classes = classNames('ndl-ai-reasoning-section', className);\n const [isExpanded, setIsExpanded] = useState(false);\n\n return (\n <div\n ref={ref}\n className={classes}\n style={style}\n {...restProps}\n {...htmlAttributes}\n >\n <div className=\"ndl-ai-reasoning-section-header\">\n <div className=\"ndl-ai-reasoning-section-leading\">{leadingVisual}</div>\n <Typography variant=\"subheading-small\">{heading}</Typography>\n <CleanIconButton\n description={isExpanded ? 'Collapse' : 'Expand'}\n size=\"small\"\n variant=\"neutral\"\n className={classNames('ndl-ai-reasoning-expand-button', {\n 'ndl-expanded': isExpanded,\n })}\n onClick={() => setIsExpanded(!isExpanded)}\n >\n <ChevronDownIconOutline />\n </CleanIconButton>\n </div>\n <div\n className={classNames('ndl-ai-reasoning-section-content', {\n 'ndl-expanded': isExpanded,\n })}\n inert={!isExpanded}\n >\n <div className=\"ndl-ai-reasoning-section-content-inner\">\n <div className=\"ndl-ai-reasoning-section-content-inner-2\">\n <div className=\"ndl-ai-reasoning-section-content-line-container\">\n <div className=\"ndl-ai-reasoning-section-content-line\" />\n </div>\n <div className=\"ndl-ai-reasoning-section-content-children\">\n {children}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nconst Reasoning = Object.assign(ReasoningComponent, {\n Section,\n});\n\nexport { Reasoning };\n"]}
@@ -0,0 +1,22 @@
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
+ export * from './Reasoning';
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ai/reasoning/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,cAAc,aAAa,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 * from './Reasoning';\n"]}
@@ -0,0 +1,25 @@
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
+ export { default as ReasoningFull } from './reasoning-full.story';
22
+ import { removeLicenseHeader } from '@neo4j-ndl/react/_common/export-stories-utils';
23
+ import ReasoningFullSrcRaw from './reasoning-full.story?raw';
24
+ export const ReasoningFullSrc = removeLicenseHeader(ReasoningFullSrcRaw);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ai/reasoning/stories/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,mBAAmB,MAAM,4BAA4B,CAAC;AAE7D,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,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 ReasoningFull } from './reasoning-full.story';\n\nimport { removeLicenseHeader } from '@neo4j-ndl/react/_common/export-stories-utils';\n\nimport ReasoningFullSrcRaw from './reasoning-full.story?raw';\n\nexport const ReasoningFullSrc = removeLicenseHeader(ReasoningFullSrcRaw);\n"]}
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
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
+ import '@neo4j-ndl/base/lib/neo4j-ds-styles.css';
23
+ import { FilledButton } from '@neo4j-ndl/react';
24
+ import { Reasoning } from '@neo4j-ndl/react/ai';
25
+ import { PencilSquareIconOutline, WrenchIconOutline, } from '@neo4j-ndl/react/icons';
26
+ import { useState } from 'react';
27
+ const Component = () => {
28
+ const [isThinking, setThinking] = useState(true);
29
+ return (_jsxs("div", { className: "n-flex n-flex-col n-gap-token-12", children: [_jsx(FilledButton, { onClick: () => setThinking(!isThinking), children: isThinking ? 'Stop Thinking' : 'Start Thinking' }), _jsxs(Reasoning, { isThinking: isThinking, thinkingMs: 1400, currentAction: "Creating an action plan", children: [_jsx(Reasoning.Section, { leadingVisual: _jsx(PencilSquareIconOutline, {}), heading: "Creating an action plan", children: "Step 1 content" }), _jsx(Reasoning.Section, { leadingVisual: _jsx(WrenchIconOutline, {}), heading: "Applying agent tools", children: "Step 2 content" })] })] }));
30
+ };
31
+ export default Component;
32
+ //# sourceMappingURL=reasoning-full.story.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reasoning-full.story.js","sourceRoot":"","sources":["../../../../../src/ai/reasoning/stories/reasoning-full.story.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,yCAAyC,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACL,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEjD,OAAO,CACL,eAAK,SAAS,EAAC,kCAAkC,aAC/C,KAAC,YAAY,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,YAClD,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,GACnC,EACf,MAAC,SAAS,IACR,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,IAAI,EAChB,aAAa,EAAC,yBAAyB,aAEvC,KAAC,SAAS,CAAC,OAAO,IAChB,aAAa,EAAE,KAAC,uBAAuB,KAAG,EAC1C,OAAO,EAAC,yBAAyB,+BAGf,EACpB,KAAC,SAAS,CAAC,OAAO,IAChB,aAAa,EAAE,KAAC,iBAAiB,KAAG,EACpC,OAAO,EAAC,sBAAsB,+BAGZ,IACV,IACR,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,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\nimport '@neo4j-ndl/base/lib/neo4j-ds-styles.css';\n\nimport { FilledButton } from '@neo4j-ndl/react';\nimport { Reasoning } from '@neo4j-ndl/react/ai';\nimport {\n PencilSquareIconOutline,\n WrenchIconOutline,\n} from '@neo4j-ndl/react/icons';\nimport { useState } from 'react';\n\nconst Component = () => {\n const [isThinking, setThinking] = useState(true);\n\n return (\n <div className=\"n-flex n-flex-col n-gap-token-12\">\n <FilledButton onClick={() => setThinking(!isThinking)}>\n {isThinking ? 'Stop Thinking' : 'Start Thinking'}\n </FilledButton>\n <Reasoning\n isThinking={isThinking}\n thinkingMs={1400}\n currentAction=\"Creating an action plan\"\n >\n <Reasoning.Section\n leadingVisual={<PencilSquareIconOutline />}\n heading=\"Creating an action plan\"\n >\n Step 1 content\n </Reasoning.Section>\n <Reasoning.Section\n leadingVisual={<WrenchIconOutline />}\n heading=\"Applying agent tools\"\n >\n Step 2 content\n </Reasoning.Section>\n </Reasoning>\n </div>\n );\n};\n\nexport default Component;\n"]}
@@ -0,0 +1,47 @@
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
+ import { Reasoning } from '../Reasoning';
23
+ import { ReasoningFull, ReasoningFullSrc } from '.';
24
+ const componentMeta = {
25
+ component: Reasoning,
26
+ id: 'components-ai-reasoning',
27
+ parameters: {
28
+ controls: { disable: true },
29
+ },
30
+ tags: ['docsPage'],
31
+ title: 'Components/AI/Reasoning',
32
+ };
33
+ export default componentMeta;
34
+ export const Full = {
35
+ args: {},
36
+ parameters: {
37
+ docs: {
38
+ source: {
39
+ code: ReasoningFullSrc,
40
+ language: 'tsx',
41
+ type: 'code',
42
+ },
43
+ },
44
+ },
45
+ render: ReasoningFull,
46
+ };
47
+ //# sourceMappingURL=reasoning.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reasoning.stories.js","sourceRoot":"","sources":["../../../../../src/ai/reasoning/stories/reasoning.stories.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,GAAG,CAAC;AAEpD,MAAM,aAAa,GAA2B;IAC5C,SAAS,EAAE,SAAS;IACpB,EAAE,EAAE,yBAAyB;IAC7B,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;KAC5B;IACD,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,KAAK,EAAE,yBAAyB;CACjC,CAAC;AAEF,eAAe,aAAa,CAAC;AAI7B,MAAM,CAAC,MAAM,IAAI,GAAU;IACzB,IAAI,EAAE,EAAE;IACR,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,MAAM,EAAE;gBACN,IAAI,EAAE,gBAAgB;gBACtB,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,MAAM;aACb;SACF;KACF;IACD,MAAM,EAAE,aAAa;CACtB,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 { type Meta, type StoryObj } from '@storybook/react-vite';\n\nimport { Reasoning } from '../Reasoning';\nimport { ReasoningFull, ReasoningFullSrc } from '.';\n\nconst componentMeta: Meta<typeof Reasoning> = {\n component: Reasoning,\n id: 'components-ai-reasoning',\n parameters: {\n controls: { disable: true },\n },\n tags: ['docsPage'],\n title: 'Components/AI/Reasoning',\n};\n\nexport default componentMeta;\n\ntype Story = StoryObj<typeof componentMeta>;\n\nexport const Full: Story = {\n args: {},\n parameters: {\n docs: {\n source: {\n code: ReasoningFullSrc,\n language: 'tsx',\n type: 'code',\n },\n },\n },\n render: ReasoningFull,\n};\n"]}
@@ -0,0 +1,179 @@
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
+ var __rest = (this && this.__rest) || function (s, e) {
23
+ var t = {};
24
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
25
+ t[p] = s[p];
26
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
27
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
28
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
29
+ t[p[i]] = s[p[i]];
30
+ }
31
+ return t;
32
+ };
33
+ import { jsx as _jsx } from "react/jsx-runtime";
34
+ import { Code } from '@neo4j-ndl/react/code';
35
+ import { TextLink } from '@neo4j-ndl/react/text-link';
36
+ import { Typography } from '@neo4j-ndl/react/typography';
37
+ import classNames from 'classnames';
38
+ import { memo, useMemo, useRef } from 'react';
39
+ import { Streamdown } from 'streamdown';
40
+ import { Languages } from '../../code-block/code-languages';
41
+ import { CodePreview } from '../code-preview';
42
+ /**
43
+ * The component is used to display the response from an LLM.
44
+ * It handles markdown rendering and streaming.
45
+ *
46
+ * @alpha - Changes to this component may be breaking.
47
+ */
48
+ const Response = memo((_a) => {
49
+ var { className, children, isAnimating = false, ref, style, htmlAttributes } = _a, restProps = __rest(_a, ["className", "children", "isAnimating", "ref", "style", "htmlAttributes"]);
50
+ // Use a ref to store the current markdown content so we can check for unclosed fences
51
+ // without recreating the components object on every render
52
+ const childrenRef = useRef(children);
53
+ childrenRef.current = children;
54
+ const components = useMemo(() => ({
55
+ ol: (_a) => {
56
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
57
+ return (_jsx("ol", Object.assign({ className: className }, props, { children: children })));
58
+ },
59
+ ul: (_a) => {
60
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
61
+ return (_jsx("ul", Object.assign({ className: classNames(className) }, props, { children: children })));
62
+ },
63
+ li: (_a) => {
64
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
65
+ return (_jsx("li", Object.assign({ className: className }, props, { children: children })));
66
+ },
67
+ hr: (_a) => {
68
+ var { className } = _a, props = __rest(_a, ["className"]);
69
+ return (_jsx("hr", Object.assign({ className: classNames(className) }, props)));
70
+ },
71
+ strong: (_a) => {
72
+ var { children, className, style } = _a, props = __rest(_a, ["children", "className", "style"]);
73
+ return (_jsx(Typography, Object.assign({ as: "strong", variant: "body-medium", className: className, style: Object.assign(Object.assign({}, style), { fontWeight: 'bold' }) }, props, { children: children })));
74
+ },
75
+ em: (_a) => {
76
+ var { children, className, style } = _a, props = __rest(_a, ["children", "className", "style"]);
77
+ return (_jsx(Typography, Object.assign({ as: "em", variant: "body-medium", className: className, style: Object.assign(Object.assign({}, style), { fontStyle: 'italic' }) }, props, { children: children })));
78
+ },
79
+ a: (_a) => {
80
+ var { children, className, href } = _a, props = __rest(_a, ["children", "className", "href"]);
81
+ return (_jsx(TextLink, { type: "internal-underline", className: className, href: href, htmlAttributes: props, children: children }));
82
+ },
83
+ h1: (_a) => {
84
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
85
+ return (_jsx(Typography, { as: "h1", variant: "display", className: className, htmlAttributes: Object.assign({}, props), children: children }));
86
+ },
87
+ h2: (_a) => {
88
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
89
+ return (_jsx(Typography, { as: "h2", variant: "title-1", className: className, htmlAttributes: Object.assign({}, props), children: children }));
90
+ },
91
+ h3: (_a) => {
92
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
93
+ return (_jsx(Typography, { as: "h3", variant: "title-2", className: className, htmlAttributes: Object.assign({}, props), children: children }));
94
+ },
95
+ h4: (_a) => {
96
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
97
+ return (_jsx(Typography, { as: "h4", variant: "title-3", className: className, htmlAttributes: Object.assign({}, props), children: children }));
98
+ },
99
+ h5: (_a) => {
100
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
101
+ return (_jsx(Typography, { as: "h5", variant: "title-4", className: className, htmlAttributes: Object.assign({}, props), children: children }));
102
+ },
103
+ h6: (_a) => {
104
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
105
+ return (_jsx(Typography, { as: "h6", variant: "subheading-large", className: className, htmlAttributes: Object.assign({}, props), children: children }));
106
+ },
107
+ table: (_a) => {
108
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
109
+ return (_jsx("div", { className: "my-4 overflow-x-auto", children: _jsx("table", Object.assign({ className: classNames('w-full border-collapse border border-border', className) }, props, { children: children })) }));
110
+ },
111
+ thead: (_a) => {
112
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
113
+ return (_jsx("thead", Object.assign({ className: classNames('bg-muted/50', className) }, props, { children: children })));
114
+ },
115
+ tbody: (_a) => {
116
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
117
+ return (_jsx("tbody", Object.assign({ className: classNames('divide-y divide-border', className) }, props, { children: children })));
118
+ },
119
+ tr: (_a) => {
120
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
121
+ return (_jsx("tr", Object.assign({ className: classNames('border-border border-b', className) }, props, { children: children })));
122
+ },
123
+ th: (_a) => {
124
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
125
+ return (_jsx("th", Object.assign({ className: classNames('px-4 py-2 text-left font-semibold text-sm', className) }, props, { children: children })));
126
+ },
127
+ td: (_a) => {
128
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
129
+ return (_jsx("td", Object.assign({ className: classNames('px-4 py-2 text-sm', className) }, props, { children: children })));
130
+ },
131
+ blockquote: (_a) => {
132
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
133
+ return (_jsx("blockquote", Object.assign({ className: classNames(className) }, props, { children: children })));
134
+ },
135
+ code: (_a) => {
136
+ var _b, _c, _d;
137
+ var { node, className, key, children: codeChildren } = _a, props = __rest(_a, ["node", "className", "key", "children"]);
138
+ 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);
139
+ let language = 'javascript';
140
+ if (typeof ((_d = node === null || node === void 0 ? void 0 : node.properties) === null || _d === void 0 ? void 0 : _d.className) === 'string') {
141
+ const rawLanguage = node.properties.className.replace('language-', '');
142
+ language = Languages.includes(rawLanguage)
143
+ ? rawLanguage
144
+ : 'text';
145
+ }
146
+ if (isInline) {
147
+ return (_jsx(Code, { isRunnable: false, className: className, htmlAttributes: props, children: codeChildren }));
148
+ }
149
+ if (typeof codeChildren === 'string') {
150
+ // Check if code fences are balanced in the markdown
151
+ // If there are an odd number of fences, it means there's an unclosed code block
152
+ const fenceMatches = childrenRef.current.match(/```/g);
153
+ const fenceCount = fenceMatches ? fenceMatches.length : 0;
154
+ const hasUnclosedFence = fenceCount % 2 !== 0;
155
+ // Show loading state when there's an unclosed fence (code block is streaming)
156
+ const isCodeBlockLoading = hasUnclosedFence;
157
+ return (_jsx(CodePreview, { code: codeChildren, isLoading: isCodeBlockLoading, language: language, className: className, htmlAttributes: Object.assign({}, props) }, key));
158
+ }
159
+ else {
160
+ return _jsx("code", { className: className, children: codeChildren });
161
+ }
162
+ },
163
+ pre: ({ className, children }) => {
164
+ return _jsx("pre", { className: classNames(className), children: children });
165
+ },
166
+ p: (_a) => {
167
+ var { children, className } = _a, props = __rest(_a, ["children", "className"]);
168
+ return (_jsx(Typography, Object.assign({ as: "p", variant: "body-medium", className: classNames(className) }, props, { children: children })));
169
+ },
170
+ img: (_a) => {
171
+ var { className, src, alt } = _a, props = __rest(_a, ["className", "src", "alt"]);
172
+ return (_jsx("img", Object.assign({ className: classNames(className), src: src, alt: alt }, props)));
173
+ },
174
+ }), []);
175
+ return (_jsx("div", Object.assign({ ref: ref, style: style, className: classNames('ndl-ai-response size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0', className) }, restProps, htmlAttributes, { children: _jsx(Streamdown, { isAnimating: isAnimating, parseIncompleteMarkdown: true, components: components, children: children }) })));
176
+ }, (prevProps, nextProps) => prevProps.children === nextProps.children);
177
+ Response.displayName = 'Response';
178
+ export { Response };
179
+ //# 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,22 @@
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
+ export { Response } from './Response';
22
+ //# 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,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,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 { Response } from './Response';\n"]}