@copilotkit/react-ui 0.15.0-alpha.0 → 0.15.0-alpha.2

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 (328) hide show
  1. package/.turbo/turbo-build.log +196 -209
  2. package/CHANGELOG.md +27 -1
  3. package/dist/chunk-3M4HWSE7.mjs +61 -0
  4. package/dist/chunk-3M4HWSE7.mjs.map +1 -0
  5. package/dist/chunk-47SYBLI2.mjs +110 -0
  6. package/dist/chunk-47SYBLI2.mjs.map +1 -0
  7. package/dist/chunk-5O2MCJZ2.mjs +21 -0
  8. package/dist/chunk-5O2MCJZ2.mjs.map +1 -0
  9. package/dist/chunk-7YXG7D47.mjs +191 -0
  10. package/dist/chunk-7YXG7D47.mjs.map +1 -0
  11. package/dist/chunk-CKJXXQ2W.mjs +26 -0
  12. package/dist/chunk-CKJXXQ2W.mjs.map +1 -0
  13. package/dist/{chunk-6LAZQHEB.mjs → chunk-DPRH4HX3.mjs} +18 -43
  14. package/dist/chunk-DPRH4HX3.mjs.map +1 -0
  15. package/dist/chunk-GWGHQNRI.mjs +54 -0
  16. package/dist/chunk-GWGHQNRI.mjs.map +1 -0
  17. package/dist/chunk-JD7BAH7U.mjs +3 -0
  18. package/dist/chunk-KBGIPFXA.mjs +14 -0
  19. package/dist/chunk-KBGIPFXA.mjs.map +1 -0
  20. package/dist/chunk-NNVWLSYK.mjs +72 -0
  21. package/dist/chunk-NNVWLSYK.mjs.map +1 -0
  22. package/dist/chunk-NYLOXKYT.mjs +51 -0
  23. package/dist/chunk-NYLOXKYT.mjs.map +1 -0
  24. package/dist/chunk-OF66AL5Z.mjs +56 -0
  25. package/dist/chunk-OF66AL5Z.mjs.map +1 -0
  26. package/dist/chunk-P4GBO6MW.mjs +3 -0
  27. package/dist/chunk-UWPFPWAW.mjs +14 -0
  28. package/dist/chunk-UWPFPWAW.mjs.map +1 -0
  29. package/dist/chunk-WB3YULQ4.mjs +3 -0
  30. package/dist/chunk-WM6BS77F.mjs +53 -0
  31. package/dist/chunk-WM6BS77F.mjs.map +1 -0
  32. package/dist/chunk-Z34F3WLK.mjs +14 -0
  33. package/dist/chunk-Z34F3WLK.mjs.map +1 -0
  34. package/dist/components/chat/Button.d.ts +6 -0
  35. package/dist/components/chat/Button.js +38 -0
  36. package/dist/components/chat/Button.js.map +1 -0
  37. package/dist/components/chat/Button.mjs +6 -0
  38. package/dist/components/chat/Chat.d.ts +96 -0
  39. package/dist/components/chat/Chat.js +800 -0
  40. package/dist/components/chat/Chat.js.map +1 -0
  41. package/dist/components/chat/Chat.mjs +16 -0
  42. package/dist/components/chat/ChatContext.d.ts +105 -0
  43. package/dist/components/chat/ChatContext.js +220 -0
  44. package/dist/components/chat/ChatContext.js.map +1 -0
  45. package/dist/components/chat/ChatContext.mjs +5 -0
  46. package/dist/components/chat/CodeBlock.js +221 -0
  47. package/dist/components/chat/CodeBlock.js.map +1 -0
  48. package/dist/components/chat/CodeBlock.mjs +6 -0
  49. package/dist/components/chat/Header.d.ts +6 -0
  50. package/dist/components/chat/Header.js +31 -0
  51. package/dist/components/chat/Header.js.map +1 -0
  52. package/dist/components/chat/Header.mjs +6 -0
  53. package/dist/components/chat/Icons.d.ts +15 -0
  54. package/dist/components/chat/Icons.js +233 -0
  55. package/dist/components/chat/Icons.js.map +1 -0
  56. package/dist/components/chat/Icons.mjs +4 -0
  57. package/dist/components/chat/Input.d.ts +6 -0
  58. package/dist/components/chat/Input.js +111 -0
  59. package/dist/components/chat/Input.js.map +1 -0
  60. package/dist/components/chat/Input.mjs +7 -0
  61. package/dist/components/chat/Markdown.d.ts +6 -0
  62. package/dist/components/chat/Markdown.js +269 -0
  63. package/dist/components/chat/Markdown.js.map +1 -0
  64. package/dist/components/chat/Markdown.mjs +7 -0
  65. package/dist/components/chat/Messages.d.ts +6 -0
  66. package/dist/components/chat/Messages.js +331 -0
  67. package/dist/components/chat/Messages.js.map +1 -0
  68. package/dist/components/chat/Messages.mjs +9 -0
  69. package/dist/components/chat/Popup.d.ts +10 -0
  70. package/dist/components/chat/Popup.js +806 -0
  71. package/dist/components/chat/Popup.js.map +1 -0
  72. package/dist/components/chat/Popup.mjs +17 -0
  73. package/dist/components/chat/Response.d.ts +6 -0
  74. package/dist/components/chat/Response.js +31 -0
  75. package/dist/components/chat/Response.js.map +1 -0
  76. package/dist/components/chat/Response.mjs +6 -0
  77. package/dist/components/chat/Sidebar.d.ts +13 -0
  78. package/dist/components/chat/Sidebar.js +817 -0
  79. package/dist/components/chat/Sidebar.js.map +1 -0
  80. package/dist/components/chat/Sidebar.mjs +17 -0
  81. package/dist/components/chat/Textarea.d.ts +13 -0
  82. package/dist/components/chat/Textarea.js +55 -0
  83. package/dist/components/chat/Textarea.js.map +1 -0
  84. package/dist/components/chat/Textarea.mjs +4 -0
  85. package/dist/components/chat/Window.d.ts +6 -0
  86. package/dist/components/chat/Window.js +116 -0
  87. package/dist/components/chat/Window.js.map +1 -0
  88. package/dist/components/chat/Window.mjs +4 -0
  89. package/dist/components/chat/index.d.ts +8 -0
  90. package/dist/components/chat/index.js +824 -0
  91. package/dist/components/chat/index.js.map +1 -0
  92. package/dist/components/chat/index.mjs +20 -0
  93. package/dist/components/chat/props.d.ts +33 -0
  94. package/dist/components/chat/props.js +4 -0
  95. package/dist/components/chat/props.mjs +3 -0
  96. package/dist/components/index.d.ts +6 -7
  97. package/dist/components/index.js +824 -0
  98. package/dist/components/index.js.map +1 -0
  99. package/dist/components/index.mjs +17 -22
  100. package/dist/context/index.js +4 -0
  101. package/dist/hooks/index.js +4 -0
  102. package/dist/hooks/use-copy-to-clipboard.js +47 -0
  103. package/dist/hooks/use-copy-to-clipboard.js.map +1 -0
  104. package/dist/index.css +565 -917
  105. package/dist/index.css.map +1 -1
  106. package/dist/index.d.ts +6 -7
  107. package/dist/index.js +824 -0
  108. package/dist/index.js.map +1 -0
  109. package/dist/index.mjs +18 -23
  110. package/dist/lib/utils.js +64 -0
  111. package/dist/lib/utils.js.map +1 -0
  112. package/dist/lib/utils.mjs +38 -2
  113. package/dist/lib/utils.mjs.map +1 -1
  114. package/dist/lib/utils.test.js +10 -0
  115. package/dist/lib/utils.test.js.map +1 -0
  116. package/dist/types/index.js +4 -0
  117. package/dist/types/index.js.map +1 -0
  118. package/dist/types/types.d.ts +1 -1
  119. package/dist/types/types.js +4 -0
  120. package/dist/types/types.js.map +1 -0
  121. package/package.json +8 -7
  122. package/src/components/chat/Button.tsx +23 -0
  123. package/src/components/chat/Chat.tsx +186 -0
  124. package/src/components/chat/ChatContext.tsx +176 -0
  125. package/src/components/{chat-components/ui/codeblock.tsx → chat/CodeBlock.tsx} +21 -33
  126. package/src/components/chat/Header.tsx +15 -0
  127. package/src/components/chat/Icons.tsx +179 -0
  128. package/src/components/chat/Input.tsx +51 -0
  129. package/src/components/chat/Markdown.tsx +68 -0
  130. package/src/components/chat/Messages.tsx +113 -0
  131. package/src/components/chat/Popup.tsx +9 -0
  132. package/src/components/chat/Response.tsx +12 -0
  133. package/src/components/chat/Sidebar.tsx +28 -0
  134. package/src/components/chat/Textarea.tsx +61 -0
  135. package/src/components/chat/Window.tsx +141 -0
  136. package/src/components/chat/index.tsx +3 -0
  137. package/src/components/chat/props.ts +36 -0
  138. package/src/components/index.ts +1 -7
  139. package/src/css/animations.css +35 -0
  140. package/src/css/button.css +54 -0
  141. package/src/css/colors.css +61 -0
  142. package/src/css/header.css +43 -0
  143. package/src/css/input.css +79 -0
  144. package/src/css/markdown.css +123 -0
  145. package/src/css/messages.css +57 -0
  146. package/src/css/popup.css +22 -0
  147. package/src/css/response.css +29 -0
  148. package/src/css/sidebar.css +34 -0
  149. package/src/css/window.css +58 -0
  150. package/src/styles.css +12 -0
  151. package/src/types/types.ts +1 -1
  152. package/tsup.config.ts +1 -2
  153. package/dist/chunk-2KAF7NKC.mjs +0 -484
  154. package/dist/chunk-2KAF7NKC.mjs.map +0 -1
  155. package/dist/chunk-5KEDV5VC.mjs +0 -27
  156. package/dist/chunk-5KEDV5VC.mjs.map +0 -1
  157. package/dist/chunk-6LAZQHEB.mjs.map +0 -1
  158. package/dist/chunk-CF3BK4OX.mjs +0 -53
  159. package/dist/chunk-CF3BK4OX.mjs.map +0 -1
  160. package/dist/chunk-CNQX2VY3.mjs +0 -66
  161. package/dist/chunk-CNQX2VY3.mjs.map +0 -1
  162. package/dist/chunk-GCOPYGHH.mjs +0 -27
  163. package/dist/chunk-GCOPYGHH.mjs.map +0 -1
  164. package/dist/chunk-IJLMKBSZ.mjs +0 -25
  165. package/dist/chunk-IJLMKBSZ.mjs.map +0 -1
  166. package/dist/chunk-INCNMGJ7.mjs +0 -72
  167. package/dist/chunk-INCNMGJ7.mjs.map +0 -1
  168. package/dist/chunk-M3CZWJI3.mjs +0 -44
  169. package/dist/chunk-M3CZWJI3.mjs.map +0 -1
  170. package/dist/chunk-MC6KTH4X.mjs +0 -12
  171. package/dist/chunk-MC6KTH4X.mjs.map +0 -1
  172. package/dist/chunk-NMT7XT2R.mjs +0 -39
  173. package/dist/chunk-NMT7XT2R.mjs.map +0 -1
  174. package/dist/chunk-OHWEJUCS.mjs +0 -18
  175. package/dist/chunk-OHWEJUCS.mjs.map +0 -1
  176. package/dist/chunk-OOBQC5H6.mjs +0 -34
  177. package/dist/chunk-OOBQC5H6.mjs.map +0 -1
  178. package/dist/chunk-Q6YO7LDK.mjs +0 -40
  179. package/dist/chunk-Q6YO7LDK.mjs.map +0 -1
  180. package/dist/chunk-RPTRCFSO.mjs +0 -42
  181. package/dist/chunk-RPTRCFSO.mjs.map +0 -1
  182. package/dist/chunk-SEH5PQVW.mjs +0 -52
  183. package/dist/chunk-SEH5PQVW.mjs.map +0 -1
  184. package/dist/chunk-SHOTWRKC.mjs +0 -18
  185. package/dist/chunk-SHOTWRKC.mjs.map +0 -1
  186. package/dist/chunk-SRBUGQTM.mjs +0 -109
  187. package/dist/chunk-SRBUGQTM.mjs.map +0 -1
  188. package/dist/chunk-TEYIQHMK.mjs +0 -12
  189. package/dist/chunk-TEYIQHMK.mjs.map +0 -1
  190. package/dist/chunk-U6NJWGTV.mjs +0 -3
  191. package/dist/chunk-VGX2W5ZB.mjs +0 -28
  192. package/dist/chunk-VGX2W5ZB.mjs.map +0 -1
  193. package/dist/chunk-WLTEQ2FW.mjs +0 -80
  194. package/dist/chunk-WLTEQ2FW.mjs.map +0 -1
  195. package/dist/chunk-ZYC5YVDO.mjs +0 -21
  196. package/dist/chunk-ZYC5YVDO.mjs.map +0 -1
  197. package/dist/components/chat-components/chat-list.d.ts +0 -8
  198. package/dist/components/chat-components/chat-list.mjs +0 -13
  199. package/dist/components/chat-components/chat-message-actions.d.ts +0 -8
  200. package/dist/components/chat-components/chat-message-actions.mjs +0 -8
  201. package/dist/components/chat-components/chat-message.d.ts +0 -8
  202. package/dist/components/chat-components/chat-message.mjs +0 -11
  203. package/dist/components/chat-components/chat-panel.d.ts +0 -8
  204. package/dist/components/chat-components/chat-panel.mjs +0 -10
  205. package/dist/components/chat-components/chat-scroll-anchor.d.ts +0 -6
  206. package/dist/components/chat-components/chat-scroll-anchor.mjs +0 -5
  207. package/dist/components/chat-components/clear-history.d.ts +0 -9
  208. package/dist/components/chat-components/clear-history.mjs +0 -56
  209. package/dist/components/chat-components/clear-history.mjs.map +0 -1
  210. package/dist/components/chat-components/copilot-chat.d.ts +0 -12
  211. package/dist/components/chat-components/copilot-chat.mjs +0 -22
  212. package/dist/components/chat-components/default-empty-screen.d.ts +0 -8
  213. package/dist/components/chat-components/default-empty-screen.mjs +0 -8
  214. package/dist/components/chat-components/external-link.d.ts +0 -6
  215. package/dist/components/chat-components/external-link.mjs +0 -4
  216. package/dist/components/chat-components/markdown.d.ts +0 -6
  217. package/dist/components/chat-components/markdown.mjs +0 -4
  218. package/dist/components/chat-components/prompt-form.d.ts +0 -9
  219. package/dist/components/chat-components/prompt-form.mjs +0 -9
  220. package/dist/components/chat-components/theme-toggle.d.ts +0 -3
  221. package/dist/components/chat-components/theme-toggle.mjs +0 -32
  222. package/dist/components/chat-components/theme-toggle.mjs.map +0 -1
  223. package/dist/components/chat-components/toaster.d.ts +0 -1
  224. package/dist/components/chat-components/toaster.mjs +0 -4
  225. package/dist/components/chat-components/toaster.mjs.map +0 -1
  226. package/dist/components/chat-components/ui/alert-dialog.d.ts +0 -20
  227. package/dist/components/chat-components/ui/alert-dialog.mjs +0 -6
  228. package/dist/components/chat-components/ui/badge.d.ts +0 -12
  229. package/dist/components/chat-components/ui/badge.mjs +0 -29
  230. package/dist/components/chat-components/ui/badge.mjs.map +0 -1
  231. package/dist/components/chat-components/ui/button.d.ts +0 -14
  232. package/dist/components/chat-components/ui/button.mjs +0 -5
  233. package/dist/components/chat-components/ui/codeblock.mjs +0 -8
  234. package/dist/components/chat-components/ui/dialog.d.ts +0 -18
  235. package/dist/components/chat-components/ui/dialog.mjs +0 -94
  236. package/dist/components/chat-components/ui/dialog.mjs.map +0 -1
  237. package/dist/components/chat-components/ui/dropdown-menu.d.ts +0 -24
  238. package/dist/components/chat-components/ui/dropdown-menu.mjs +0 -87
  239. package/dist/components/chat-components/ui/dropdown-menu.mjs.map +0 -1
  240. package/dist/components/chat-components/ui/icons.d.ts +0 -33
  241. package/dist/components/chat-components/ui/icons.mjs +0 -5
  242. package/dist/components/chat-components/ui/input.d.ts +0 -7
  243. package/dist/components/chat-components/ui/input.mjs +0 -26
  244. package/dist/components/chat-components/ui/input.mjs.map +0 -1
  245. package/dist/components/chat-components/ui/label.d.ts +0 -8
  246. package/dist/components/chat-components/ui/label.mjs +0 -19
  247. package/dist/components/chat-components/ui/label.mjs.map +0 -1
  248. package/dist/components/chat-components/ui/select.d.ts +0 -13
  249. package/dist/components/chat-components/ui/select.mjs +0 -101
  250. package/dist/components/chat-components/ui/select.mjs.map +0 -1
  251. package/dist/components/chat-components/ui/separator.d.ts +0 -6
  252. package/dist/components/chat-components/ui/separator.mjs +0 -5
  253. package/dist/components/chat-components/ui/sheet.d.ts +0 -19
  254. package/dist/components/chat-components/ui/sheet.mjs +0 -93
  255. package/dist/components/chat-components/ui/sheet.mjs.map +0 -1
  256. package/dist/components/chat-components/ui/switch.d.ts +0 -6
  257. package/dist/components/chat-components/ui/switch.mjs +0 -33
  258. package/dist/components/chat-components/ui/switch.mjs.map +0 -1
  259. package/dist/components/chat-components/ui/textarea.d.ts +0 -7
  260. package/dist/components/chat-components/ui/textarea.mjs +0 -25
  261. package/dist/components/chat-components/ui/textarea.mjs.map +0 -1
  262. package/dist/components/chat-components/ui/tooltip.d.ts +0 -9
  263. package/dist/components/chat-components/ui/tooltip.mjs +0 -5
  264. package/dist/components/sidebar/copilot-sidebar-ui-provider.d.ts +0 -9
  265. package/dist/components/sidebar/copilot-sidebar-ui-provider.mjs +0 -25
  266. package/dist/components/sidebar/copilot-sidebar.d.ts +0 -7
  267. package/dist/components/sidebar/copilot-sidebar.mjs +0 -23
  268. package/dist/components/sidebar/sidebar-context.d.ts +0 -9
  269. package/dist/components/sidebar/sidebar-context.mjs +0 -4
  270. package/dist/hooks/use-at-bottom.d.ts +0 -3
  271. package/dist/hooks/use-at-bottom.mjs +0 -4
  272. package/dist/hooks/use-enter-submit.d.ts +0 -8
  273. package/dist/hooks/use-enter-submit.mjs +0 -4
  274. package/src/components/chat-components/chat-list.tsx +0 -28
  275. package/src/components/chat-components/chat-message-actions.tsx +0 -36
  276. package/src/components/chat-components/chat-message.tsx +0 -70
  277. package/src/components/chat-components/chat-panel.tsx +0 -64
  278. package/src/components/chat-components/chat-scroll-anchor.tsx +0 -29
  279. package/src/components/chat-components/clear-history.tsx +0 -72
  280. package/src/components/chat-components/copilot-chat.tsx +0 -57
  281. package/src/components/chat-components/default-empty-screen.tsx +0 -57
  282. package/src/components/chat-components/external-link.tsx +0 -17
  283. package/src/components/chat-components/markdown.tsx +0 -8
  284. package/src/components/chat-components/prompt-form.tsx +0 -85
  285. package/src/components/chat-components/theme-toggle.tsx +0 -31
  286. package/src/components/chat-components/toaster.tsx +0 -3
  287. package/src/components/chat-components/ui/alert-dialog.tsx +0 -126
  288. package/src/components/chat-components/ui/badge.tsx +0 -33
  289. package/src/components/chat-components/ui/button.tsx +0 -49
  290. package/src/components/chat-components/ui/dialog.tsx +0 -106
  291. package/src/components/chat-components/ui/dropdown-menu.tsx +0 -117
  292. package/src/components/chat-components/ui/icons.tsx +0 -484
  293. package/src/components/chat-components/ui/input.tsx +0 -24
  294. package/src/components/chat-components/ui/label.tsx +0 -21
  295. package/src/components/chat-components/ui/select.tsx +0 -119
  296. package/src/components/chat-components/ui/separator.tsx +0 -26
  297. package/src/components/chat-components/ui/sheet.tsx +0 -106
  298. package/src/components/chat-components/ui/switch.tsx +0 -29
  299. package/src/components/chat-components/ui/textarea.tsx +0 -23
  300. package/src/components/chat-components/ui/tooltip.tsx +0 -30
  301. package/src/components/sidebar/copilot-sidebar-ui-provider.tsx +0 -77
  302. package/src/components/sidebar/copilot-sidebar.tsx +0 -39
  303. package/src/components/sidebar/sidebar-context.tsx +0 -11
  304. package/src/hooks/use-at-bottom.tsx +0 -20
  305. package/src/hooks/use-enter-submit.tsx +0 -17
  306. /package/dist/{chunk-U6NJWGTV.mjs.map → chunk-JD7BAH7U.mjs.map} +0 -0
  307. /package/dist/{components/chat-components/chat-list.mjs.map → chunk-P4GBO6MW.mjs.map} +0 -0
  308. /package/dist/{components/chat-components/chat-message-actions.mjs.map → chunk-WB3YULQ4.mjs.map} +0 -0
  309. /package/dist/components/{chat-components/chat-message.mjs.map → chat/Button.mjs.map} +0 -0
  310. /package/dist/components/{chat-components/chat-panel.mjs.map → chat/Chat.mjs.map} +0 -0
  311. /package/dist/components/{chat-components/chat-scroll-anchor.mjs.map → chat/ChatContext.mjs.map} +0 -0
  312. /package/dist/components/{chat-components/ui/codeblock.d.ts → chat/CodeBlock.d.ts} +0 -0
  313. /package/dist/components/{chat-components/copilot-chat.mjs.map → chat/CodeBlock.mjs.map} +0 -0
  314. /package/dist/components/{chat-components/default-empty-screen.mjs.map → chat/Header.mjs.map} +0 -0
  315. /package/dist/components/{chat-components/external-link.mjs.map → chat/Icons.mjs.map} +0 -0
  316. /package/dist/components/{chat-components/markdown.mjs.map → chat/Input.mjs.map} +0 -0
  317. /package/dist/components/{chat-components/prompt-form.mjs.map → chat/Markdown.mjs.map} +0 -0
  318. /package/dist/components/{chat-components/ui/alert-dialog.mjs.map → chat/Messages.mjs.map} +0 -0
  319. /package/dist/components/{chat-components/ui/button.mjs.map → chat/Popup.mjs.map} +0 -0
  320. /package/dist/components/{chat-components/ui/codeblock.mjs.map → chat/Response.mjs.map} +0 -0
  321. /package/dist/components/{chat-components/ui/icons.mjs.map → chat/Sidebar.mjs.map} +0 -0
  322. /package/dist/components/{chat-components/ui/separator.mjs.map → chat/Textarea.mjs.map} +0 -0
  323. /package/dist/components/{chat-components/ui/tooltip.mjs.map → chat/Window.mjs.map} +0 -0
  324. /package/dist/components/{sidebar/copilot-sidebar-ui-provider.mjs.map → chat/index.mjs.map} +0 -0
  325. /package/dist/components/{sidebar/copilot-sidebar.mjs.map → chat/props.js.map} +0 -0
  326. /package/dist/components/{sidebar/sidebar-context.mjs.map → chat/props.mjs.map} +0 -0
  327. /package/dist/{hooks/use-at-bottom.mjs.map → context/index.js.map} +0 -0
  328. /package/dist/hooks/{use-enter-submit.mjs.map → index.js.map} +0 -0
@@ -0,0 +1,72 @@
1
+ import { Messages } from './chunk-3M4HWSE7.mjs';
2
+ import { ResponseButton } from './chunk-Z34F3WLK.mjs';
3
+ import { Window } from './chunk-47SYBLI2.mjs';
4
+ import { Button } from './chunk-5O2MCJZ2.mjs';
5
+ import { Header } from './chunk-UWPFPWAW.mjs';
6
+ import { Input } from './chunk-NYLOXKYT.mjs';
7
+ import { ChatContextProvider } from './chunk-OF66AL5Z.mjs';
8
+ import { __async } from './chunk-MRXNTQOX.mjs';
9
+ import React from 'react';
10
+ import { useCopilotChat } from '@copilotkit/react-core';
11
+ import { nanoid } from 'nanoid';
12
+ import { jsx, jsxs } from 'react/jsx-runtime';
13
+
14
+ var CopilotChat = ({
15
+ instructions,
16
+ defaultOpen = false,
17
+ clickOutsideToClose = true,
18
+ hitEscapeToClose = true,
19
+ onSetOpen,
20
+ hotkey = "e",
21
+ icons,
22
+ labels,
23
+ makeSystemMessage,
24
+ showResponseButton = true,
25
+ Window: Window2 = Window,
26
+ Button: Button2 = Button,
27
+ Header: Header2 = Header,
28
+ Messages: Messages2 = Messages,
29
+ Input: Input2 = Input,
30
+ ResponseButton: ResponseButton2 = ResponseButton,
31
+ className
32
+ }) => {
33
+ const { visibleMessages, append, reload, stop, isLoading, input, setInput } = useCopilotChat({
34
+ id: nanoid(),
35
+ makeSystemMessage,
36
+ additionalInstructions: instructions
37
+ });
38
+ const [openState, setOpenState] = React.useState(defaultOpen);
39
+ const setOpen = (open) => {
40
+ onSetOpen == null ? void 0 : onSetOpen(open);
41
+ setOpenState(open);
42
+ };
43
+ const sendMessage = (message) => __async(void 0, null, function* () {
44
+ append({
45
+ id: nanoid(),
46
+ content: message,
47
+ role: "user"
48
+ });
49
+ });
50
+ return /* @__PURE__ */ jsx(ChatContextProvider, { icons, labels, children: /* @__PURE__ */ jsxs("div", { className, children: [
51
+ /* @__PURE__ */ jsx(Button2, { open: openState, setOpen }),
52
+ /* @__PURE__ */ jsxs(
53
+ Window2,
54
+ {
55
+ open: openState,
56
+ setOpen,
57
+ clickOutsideToClose,
58
+ hotkey,
59
+ hitEscapeToClose,
60
+ children: [
61
+ /* @__PURE__ */ jsx(Header2, { open: openState, setOpen }),
62
+ /* @__PURE__ */ jsx(Messages2, { messages: visibleMessages, inProgress: isLoading }),
63
+ /* @__PURE__ */ jsx(Input2, { inProgress: isLoading, onSend: sendMessage, children: showResponseButton && visibleMessages.length > 0 && /* @__PURE__ */ jsx(ResponseButton2, { onClick: isLoading ? stop : reload, inProgress: isLoading }) })
64
+ ]
65
+ }
66
+ )
67
+ ] }) });
68
+ };
69
+
70
+ export { CopilotChat };
71
+ //# sourceMappingURL=out.js.map
72
+ //# sourceMappingURL=chunk-NNVWLSYK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/Chat.tsx"],"names":["Window","Button","Header","Messages","Input","ResponseButton"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,WAAW;AAElB,SAAgC,sBAAsB;AActD,SAAS,cAAc;AAsJf,cACA,YADA;AA3CD,IAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA,cAAc;AAAA,EACd,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA,qBAAqB;AAAA,EACrB,QAAAA,UAAS;AAAA,EACT,QAAAC,UAAS;AAAA,EACT,QAAAC,UAAS;AAAA,EACT,UAAAC,YAAW;AAAA,EACX,OAAAC,SAAQ;AAAA,EACR,gBAAAC,kBAAiB;AAAA,EACjB;AACF,MAAwB;AACtB,QAAM,EAAE,iBAAiB,QAAQ,QAAQ,MAAM,WAAW,OAAO,SAAS,IAAI,eAAe;AAAA,IAC3F,IAAI,OAAO;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,EAC1B,CAAC;AAED,QAAM,CAAC,WAAW,YAAY,IAAI,MAAM,SAAS,WAAW;AAE5D,QAAM,UAAU,CAAC,SAAkB;AACjC,2CAAY;AACZ,iBAAa,IAAI;AAAA,EACnB;AAEA,QAAM,cAAc,CAAO,YAAoB;AAC7C,WAAO;AAAA,MACL,IAAI,OAAO;AAAA,MACX,SAAS;AAAA,MACT,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAEA,SACE,oBAAC,uBAAoB,OAAc,QACjC,+BAAC,SAAI,WACH;AAAA,wBAACJ,SAAA,EAAO,MAAM,WAAW,SAAkB;AAAA,IAC3C;AAAA,MAACD;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA,8BAACE,SAAA,EAAO,MAAM,WAAW,SAAkB;AAAA,UAC3C,oBAACC,WAAA,EAAS,UAAU,iBAAiB,YAAY,WAAW;AAAA,UAC5D,oBAACC,QAAA,EAAM,YAAY,WAAW,QAAQ,aACnC,gCAAsB,gBAAgB,SAAS,KAC9C,oBAACC,iBAAA,EAAe,SAAS,YAAY,OAAO,QAAQ,YAAY,WAAW,GAE/E;AAAA;AAAA;AAAA,IACF;AAAA,KACF,GACF;AAEJ","sourcesContent":["import React from \"react\";\nimport { CopilotChatIcons, ChatContextProvider, CopilotChatLabels } from \"./ChatContext\";\nimport { SystemMessageFunction, useCopilotChat } from \"@copilotkit/react-core\";\nimport {\n ButtonProps,\n HeaderProps,\n WindowProps,\n MessagesProps,\n InputProps,\n ResponseButtonProps,\n} from \"./props\";\nimport { Window as DefaultWindow } from \"./Window\";\nimport { Button as DefaultButton } from \"./Button\";\nimport { Header as DefaultHeader } from \"./Header\";\nimport { Messages as DefaultMessages } from \"./Messages\";\nimport { Input as DefaultInput } from \"./Input\";\nimport { nanoid } from \"nanoid\";\nimport { ResponseButton as DefaultResponseButton } from \"./Response\";\n\n/**\n * Props for CopilotChat component.\n */\nexport interface CopilotChatProps {\n /**\n * Custom instructions to be added to the system message. Use this property to\n * provide additional context or guidance to the language model, influencing\n * its responses. These instructions can include specific directions,\n * preferences, or criteria that the model should consider when generating\n * its output, thereby tailoring the conversation more precisely to the\n * user's needs or the application's requirements.\n */\n instructions?: string;\n\n /**\n * Whether the chat window should be open by default.\n * @default false\n */\n defaultOpen?: boolean;\n\n /**\n * If the chat window should close when the user clicks outside of it.\n * @default true\n */\n clickOutsideToClose?: boolean;\n\n /**\n * If the chat window should close when the user hits the Escape key.\n * @default true\n */\n hitEscapeToClose?: boolean;\n\n /**\n * A callback that gets called when the chat window opens or closes.\n */\n onSetOpen?: (open: boolean) => void;\n\n /**\n * The hotkey to open the chat window.\n * Uses Command-<hotkey> on a Mac and Ctrl-<hotkey> on Windows.\n * @default \"e\"\n */\n hotkey?: string;\n\n /**\n * Icons can be used to set custom icons for the chat window.\n */\n icons?: CopilotChatIcons;\n\n /**\n * Labels can be used to set custom labels for the chat window.\n */\n labels?: CopilotChatLabels;\n\n /**\n * A function that takes in context string and instructions and returns\n * the system message to include in the chat request.\n * Use this to completely override the system message, when providing\n * instructions is not enough.\n */\n makeSystemMessage?: SystemMessageFunction;\n\n /**\n * Whether to show the response button.\n * @default true\n */\n showResponseButton?: boolean;\n\n /**\n * A custom Window component to use instead of the default.\n */\n Window?: React.ComponentType<WindowProps>;\n\n /**\n * A custom Button component to use instead of the default.\n */\n Button?: React.ComponentType<ButtonProps>;\n\n /**\n * A custom Header component to use instead of the default.\n */\n Header?: React.ComponentType<HeaderProps>;\n\n /**\n * A custom Messages component to use instead of the default.\n */\n Messages?: React.ComponentType<MessagesProps>;\n\n /**\n * A custom Input component to use instead of the default.\n */\n Input?: React.ComponentType<InputProps>;\n\n /**\n * A custom ResponseButton component to use instead of the default.\n */\n ResponseButton?: React.ComponentType<ResponseButtonProps>;\n\n /**\n * A class name to apply to the root element.\n */\n className?: string;\n}\n\nexport const CopilotChat = ({\n instructions,\n defaultOpen = false,\n clickOutsideToClose = true,\n hitEscapeToClose = true,\n onSetOpen,\n hotkey = \"e\",\n icons,\n labels,\n makeSystemMessage,\n showResponseButton = true,\n Window = DefaultWindow,\n Button = DefaultButton,\n Header = DefaultHeader,\n Messages = DefaultMessages,\n Input = DefaultInput,\n ResponseButton = DefaultResponseButton,\n className,\n}: CopilotChatProps) => {\n const { visibleMessages, append, reload, stop, isLoading, input, setInput } = useCopilotChat({\n id: nanoid(),\n makeSystemMessage,\n additionalInstructions: instructions,\n });\n\n const [openState, setOpenState] = React.useState(defaultOpen);\n\n const setOpen = (open: boolean) => {\n onSetOpen?.(open);\n setOpenState(open);\n };\n\n const sendMessage = async (message: string) => {\n append({\n id: nanoid(),\n content: message,\n role: \"user\",\n });\n };\n\n return (\n <ChatContextProvider icons={icons} labels={labels}>\n <div className={className}>\n <Button open={openState} setOpen={setOpen}></Button>\n <Window\n open={openState}\n setOpen={setOpen}\n clickOutsideToClose={clickOutsideToClose}\n hotkey={hotkey}\n hitEscapeToClose={hitEscapeToClose}\n >\n <Header open={openState} setOpen={setOpen} />\n <Messages messages={visibleMessages} inProgress={isLoading} />\n <Input inProgress={isLoading} onSend={sendMessage}>\n {showResponseButton && visibleMessages.length > 0 && (\n <ResponseButton onClick={isLoading ? stop : reload} inProgress={isLoading} />\n )}\n </Input>\n </Window>\n </div>\n </ChatContextProvider>\n );\n};\n"]}
@@ -0,0 +1,51 @@
1
+ import { Textarea_default } from './chunk-WM6BS77F.mjs';
2
+ import { useChatContext } from './chunk-OF66AL5Z.mjs';
3
+ import { useRef, useState } from 'react';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ var Input = ({ inProgress, onSend, children }) => {
7
+ const context = useChatContext();
8
+ const textareaRef = useRef(null);
9
+ const handleDivClick = (event) => {
10
+ var _a;
11
+ if (event.target !== event.currentTarget)
12
+ return;
13
+ (_a = textareaRef.current) == null ? void 0 : _a.focus();
14
+ };
15
+ const [text, setText] = useState("");
16
+ const send = () => {
17
+ var _a;
18
+ if (inProgress)
19
+ return;
20
+ onSend(text);
21
+ setText("");
22
+ (_a = textareaRef.current) == null ? void 0 : _a.focus();
23
+ };
24
+ const icon = inProgress ? context.icons.activityIcon : context.icons.sendIcon;
25
+ const disabled = inProgress || text.length === 0;
26
+ return /* @__PURE__ */ jsxs("div", { className: "copilotKitInput", onClick: handleDivClick, children: [
27
+ /* @__PURE__ */ jsx("span", { children }),
28
+ /* @__PURE__ */ jsx("button", { className: "copilotKitSendButton", disabled, onClick: send, children: icon }),
29
+ /* @__PURE__ */ jsx(
30
+ Textarea_default,
31
+ {
32
+ ref: textareaRef,
33
+ placeholder: context.labels.placeholder,
34
+ autoFocus: true,
35
+ maxRows: 5,
36
+ value: text,
37
+ onChange: (event) => setText(event.target.value),
38
+ onKeyDown: (event) => {
39
+ if (event.key === "Enter" && !event.shiftKey) {
40
+ event.preventDefault();
41
+ send();
42
+ }
43
+ }
44
+ }
45
+ )
46
+ ] });
47
+ };
48
+
49
+ export { Input };
50
+ //# sourceMappingURL=out.js.map
51
+ //# sourceMappingURL=chunk-NYLOXKYT.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/Input.tsx"],"names":[],"mappings":";;;;;;;;AAAA,SAAgB,QAAQ,gBAAgB;AA6BpC,SACE,KADF;AAxBG,IAAM,QAAQ,CAAC,EAAE,YAAY,QAAQ,SAAS,MAAkB;AACrE,QAAM,UAAU,eAAe;AAC/B,QAAM,cAAc,OAA4B,IAAI;AAEpD,QAAM,iBAAiB,CAAC,UAA4C;AATtE;AAWI,QAAI,MAAM,WAAW,MAAM;AAAe;AAE1C,sBAAY,YAAZ,mBAAqB;AAAA,EACvB;AAEA,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,EAAE;AACnC,QAAM,OAAO,MAAM;AAjBrB;AAkBI,QAAI;AAAY;AAChB,WAAO,IAAI;AACX,YAAQ,EAAE;AAEV,sBAAY,YAAZ,mBAAqB;AAAA,EACvB;AAEA,QAAM,OAAO,aAAa,QAAQ,MAAM,eAAe,QAAQ,MAAM;AACrE,QAAM,WAAW,cAAc,KAAK,WAAW;AAE/C,SACE,qBAAC,SAAI,WAAU,mBAAkB,SAAS,gBACxC;AAAA,wBAAC,UAAM,UAAS;AAAA,IAChB,oBAAC,YAAO,WAAU,wBAAuB,UAAoB,SAAS,MACnE,gBACH;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,aAAa,QAAQ,OAAO;AAAA,QAC5B,WAAW;AAAA,QACX,SAAS;AAAA,QACT,OAAO;AAAA,QACP,UAAU,CAAC,UAAU,QAAQ,MAAM,OAAO,KAAK;AAAA,QAC/C,WAAW,CAAC,UAAU;AACpB,cAAI,MAAM,QAAQ,WAAW,CAAC,MAAM,UAAU;AAC5C,kBAAM,eAAe;AACrB,iBAAK;AAAA,UACP;AAAA,QACF;AAAA;AAAA,IACF;AAAA,KACF;AAEJ","sourcesContent":["import React, { useRef, useState } from \"react\";\nimport { InputProps } from \"./props\";\nimport { useChatContext } from \"./ChatContext\";\nimport AutoResizingTextarea from \"./Textarea\";\n\nexport const Input = ({ inProgress, onSend, children }: InputProps) => {\n const context = useChatContext();\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n const handleDivClick = (event: React.MouseEvent<HTMLDivElement>) => {\n // Check if the clicked element is not the textarea itself\n if (event.target !== event.currentTarget) return;\n\n textareaRef.current?.focus();\n };\n\n const [text, setText] = useState(\"\");\n const send = () => {\n if (inProgress) return;\n onSend(text);\n setText(\"\");\n\n textareaRef.current?.focus();\n };\n\n const icon = inProgress ? context.icons.activityIcon : context.icons.sendIcon;\n const disabled = inProgress || text.length === 0;\n\n return (\n <div className=\"copilotKitInput\" onClick={handleDivClick}>\n <span>{children}</span>\n <button className=\"copilotKitSendButton\" disabled={disabled} onClick={send}>\n {icon}\n </button>\n <AutoResizingTextarea\n ref={textareaRef}\n placeholder={context.labels.placeholder}\n autoFocus={true}\n maxRows={5}\n value={text}\n onChange={(event) => setText(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" && !event.shiftKey) {\n event.preventDefault();\n send();\n }\n }}\n />\n </div>\n );\n};\n"]}
@@ -0,0 +1,56 @@
1
+ import { OpenIcon, CloseIcon, HeaderCloseIcon, SendIcon, ActivityIcon, SpinnerIcon, StopIcon, RegenerateIcon } from './chunk-7YXG7D47.mjs';
2
+ import { __spreadValues, __spreadProps } from './chunk-MRXNTQOX.mjs';
3
+ import React, { useMemo } from 'react';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ var ChatContext = React.createContext(void 0);
7
+ function useChatContext() {
8
+ const context = React.useContext(ChatContext);
9
+ if (context === void 0) {
10
+ throw new Error(
11
+ "Context not found. Did you forget to wrap your app in a <ChatContextProvider> component?"
12
+ );
13
+ }
14
+ return context;
15
+ }
16
+ var ChatContextProvider = ({
17
+ // temperature,
18
+ // instructions,
19
+ // maxFeedback,
20
+ labels,
21
+ icons,
22
+ children
23
+ }) => {
24
+ const context = useMemo(
25
+ () => ({
26
+ labels: __spreadValues(__spreadValues({}, {
27
+ initial: "",
28
+ title: "CopilotKit",
29
+ placeholder: "Type a message...",
30
+ thinking: "Thinking...",
31
+ done: "\u2705 Done",
32
+ error: "\u274C An error occurred. Please try again.",
33
+ stopGenerating: "Stop generating",
34
+ regenerateResponse: "Regenerate response"
35
+ }), labels),
36
+ icons: __spreadProps(__spreadValues({}, {
37
+ openIcon: OpenIcon,
38
+ closeIcon: CloseIcon,
39
+ headerCloseIcon: HeaderCloseIcon,
40
+ sendIcon: SendIcon,
41
+ activityIcon: ActivityIcon,
42
+ spinnerIcon: SpinnerIcon,
43
+ stopIcon: StopIcon,
44
+ regenerateIcon: RegenerateIcon
45
+ }), {
46
+ icons
47
+ })
48
+ }),
49
+ [labels, icons]
50
+ );
51
+ return /* @__PURE__ */ jsx(ChatContext.Provider, { value: context, children });
52
+ };
53
+
54
+ export { ChatContext, ChatContextProvider, useChatContext };
55
+ //# sourceMappingURL=out.js.map
56
+ //# sourceMappingURL=chunk-OF66AL5Z.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/ChatContext.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO,SAAS,eAAe;AA8KtB;AA7DF,IAAM,cAAc,MAAM,cAAuC,MAAS;AAE1E,SAAS,iBAA8B;AAC5C,QAAM,UAAU,MAAM,WAAW,WAAW;AAC5C,MAAI,YAAY,QAAW;AACzB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAWO,IAAM,sBAAsB,CAAC;AAAA;AAAA;AAAA;AAAA,EAIlC;AAAA,EACA;AAAA,EACA;AACF,MAAwB;AACtB,QAAM,UAAU;AAAA,IACd,OAAO;AAAA,MACL,QAAQ,kCACH;AAAA,QACD,SAAS;AAAA,QACT,OAAO;AAAA,QACP,aAAa;AAAA,QACb,UAAU;AAAA,QACV,MAAM;AAAA,QACN,OAAO;AAAA,QACP,gBAAgB;AAAA,QAChB,oBAAoB;AAAA,MACtB,IACG;AAAA,MAGL,OAAO,iCACF;AAAA,QACD,UAAuB;AAAA,QACvB,WAAwB;AAAA,QACxB,iBAA8B;AAAA,QAC9B,UAAuB;AAAA,QACvB,cAA2B;AAAA,QAC3B,aAA0B;AAAA,QAC1B,UAAuB;AAAA,QACvB,gBAA6B;AAAA,MAC/B,IAVK;AAAA,QAWL;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,QAAQ,KAAK;AAAA,EAChB;AACA,SAAO,oBAAC,YAAY,UAAZ,EAAqB,OAAO,SAAU,UAAS;AACzD","sourcesContent":["import React, { useMemo } from \"react\";\nimport * as DefaultIcons from \"./Icons\";\n\n/**\n * Icons for CopilotChat component.\n */\nexport interface CopilotChatIcons {\n /**\n * The icon to use for the open chat button.\n * @default <OpenIcon />\n */\n openIcon?: React.ReactNode;\n\n /**\n * The icon to use for the close chat button.\n * @default <CloseIcon />\n */\n closeIcon?: React.ReactNode;\n\n /**\n * The icon to use for the close chat button in the header.\n * @default <HeaderCloseIcon />\n */\n headerCloseIcon?: React.ReactNode;\n\n /**\n * The icon to use for the send button.\n * @default <SendIcon />\n */\n sendIcon?: React.ReactNode;\n\n /**\n * The icon to use for the activity indicator.\n * @default <ActivityIcon />\n */\n activityIcon?: React.ReactNode;\n\n /**\n * The icon to use for the spinner.\n * @default <SpinnerIcon />\n */\n spinnerIcon?: React.ReactNode;\n\n /**\n * The icon to use for the stop button.\n * @default <StopIcon />\n */\n stopIcon?: React.ReactNode;\n\n /**\n * The icon to use for the regenerate button.\n * @default <RegenerateIcon />\n */\n regenerateIcon?: React.ReactNode;\n}\n\n/**\n * Labels for CopilotChat component.\n */\nexport interface CopilotChatLabels {\n /**\n * The initial message(s) to display in the chat window.\n */\n initial?: string | string[];\n\n /**\n * The title to display in the header.\n * @default \"CopilotKit\"\n */\n title?: string;\n\n /**\n * The placeholder to display in the input.\n * @default \"Type a message...\"\n */\n placeholder?: string;\n\n /**\n * The message to display while the chat GPT is \"thinking\".\n * @default \"Thinking...\"\n */\n thinking?: string;\n\n /**\n * The message to display when the chat is done executing a function.\n * @default \"✅ Done\"\n */\n done?: string;\n\n /**\n * The message to display when an error occurs.\n * @default \"❌ An error occurred. Please try again.\"\n */\n error?: string;\n\n /**\n * The label to display on the stop button.\n * @default \"Stop generating\"\n */\n stopGenerating?: string;\n\n /**\n * The label to display on the regenerate button.\n * @default \"Regenerate response\"\n */\n regenerateResponse?: string;\n}\n\ninterface ChatContext {\n labels: Required<CopilotChatLabels>;\n icons: Required<CopilotChatIcons>;\n}\n\nexport const ChatContext = React.createContext<ChatContext | undefined>(undefined);\n\nexport function useChatContext(): ChatContext {\n const context = React.useContext(ChatContext);\n if (context === undefined) {\n throw new Error(\n \"Context not found. Did you forget to wrap your app in a <ChatContextProvider> component?\",\n );\n }\n return context;\n}\n\ninterface ChatContextProps {\n // temperature?: number;\n // instructions?: string;\n // maxFeedback?: number;\n labels?: CopilotChatLabels;\n icons?: CopilotChatIcons;\n children?: React.ReactNode;\n}\n\nexport const ChatContextProvider = ({\n // temperature,\n // instructions,\n // maxFeedback,\n labels,\n icons,\n children,\n}: ChatContextProps) => {\n const context = useMemo(\n () => ({\n labels: {\n ...{\n initial: \"\",\n title: \"CopilotKit\",\n placeholder: \"Type a message...\",\n thinking: \"Thinking...\",\n done: \"✅ Done\",\n error: \"❌ An error occurred. Please try again.\",\n stopGenerating: \"Stop generating\",\n regenerateResponse: \"Regenerate response\",\n },\n ...labels,\n },\n\n icons: {\n ...{\n openIcon: DefaultIcons.OpenIcon,\n closeIcon: DefaultIcons.CloseIcon,\n headerCloseIcon: DefaultIcons.HeaderCloseIcon,\n sendIcon: DefaultIcons.SendIcon,\n activityIcon: DefaultIcons.ActivityIcon,\n spinnerIcon: DefaultIcons.SpinnerIcon,\n stopIcon: DefaultIcons.StopIcon,\n regenerateIcon: DefaultIcons.RegenerateIcon,\n },\n icons,\n },\n }),\n [labels, icons],\n );\n return <ChatContext.Provider value={context}>{children}</ChatContext.Provider>;\n};\n"]}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=out.js.map
3
+ //# sourceMappingURL=chunk-P4GBO6MW.mjs.map
@@ -0,0 +1,14 @@
1
+ import { useChatContext } from './chunk-OF66AL5Z.mjs';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+
4
+ var Header = ({ setOpen }) => {
5
+ const context = useChatContext();
6
+ return /* @__PURE__ */ jsxs("div", { className: "copilotKitHeader", children: [
7
+ /* @__PURE__ */ jsx("div", { children: context.labels.title }),
8
+ /* @__PURE__ */ jsx("button", { onClick: () => setOpen(false), "aria-label": "Close", children: context.icons.headerCloseIcon })
9
+ ] });
10
+ };
11
+
12
+ export { Header };
13
+ //# sourceMappingURL=out.js.map
14
+ //# sourceMappingURL=chunk-UWPFPWAW.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/Header.tsx"],"names":[],"mappings":";;;;;AAOI,SACE,KADF;AAJG,IAAM,SAAS,CAAC,EAAE,QAAQ,MAAmB;AAClD,QAAM,UAAU,eAAe;AAE/B,SACE,qBAAC,SAAI,WAAU,oBACb;AAAA,wBAAC,SAAK,kBAAQ,OAAO,OAAM;AAAA,IAC3B,oBAAC,YAAO,SAAS,MAAM,QAAQ,KAAK,GAAG,cAAW,SAC/C,kBAAQ,MAAM,iBACjB;AAAA,KACF;AAEJ","sourcesContent":["import { HeaderProps } from \"./props\";\nimport { useChatContext } from \"./ChatContext\";\n\nexport const Header = ({ setOpen }: HeaderProps) => {\n const context = useChatContext();\n\n return (\n <div className=\"copilotKitHeader\">\n <div>{context.labels.title}</div>\n <button onClick={() => setOpen(false)} aria-label=\"Close\">\n {context.icons.headerCloseIcon}\n </button>\n </div>\n );\n};\n"]}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=out.js.map
3
+ //# sourceMappingURL=chunk-WB3YULQ4.mjs.map
@@ -0,0 +1,53 @@
1
+ import { forwardRef, useRef, useState, useImperativeHandle, useEffect } from 'react';
2
+ import { jsx } from 'react/jsx-runtime';
3
+
4
+ // src/components/chat/Textarea.tsx
5
+ var AutoResizingTextarea = forwardRef(
6
+ ({ maxRows = 1, placeholder, value, onChange, onKeyDown, autoFocus }, ref) => {
7
+ const internalTextareaRef = useRef(null);
8
+ const [maxHeight, setMaxHeight] = useState(0);
9
+ useImperativeHandle(ref, () => internalTextareaRef.current);
10
+ useEffect(() => {
11
+ const calculateMaxHeight = () => {
12
+ const textarea = internalTextareaRef.current;
13
+ if (textarea) {
14
+ textarea.style.height = "auto";
15
+ const singleRowHeight = textarea.scrollHeight;
16
+ setMaxHeight(singleRowHeight * maxRows);
17
+ if (autoFocus) {
18
+ textarea.focus();
19
+ }
20
+ }
21
+ };
22
+ calculateMaxHeight();
23
+ }, [maxRows]);
24
+ useEffect(() => {
25
+ const textarea = internalTextareaRef.current;
26
+ if (textarea) {
27
+ textarea.style.height = "auto";
28
+ textarea.style.height = `${Math.min(textarea.scrollHeight, maxHeight)}px`;
29
+ }
30
+ }, [value, maxHeight]);
31
+ return /* @__PURE__ */ jsx(
32
+ "textarea",
33
+ {
34
+ ref: internalTextareaRef,
35
+ value,
36
+ onChange,
37
+ onKeyDown,
38
+ placeholder,
39
+ style: {
40
+ overflow: "hidden",
41
+ resize: "none",
42
+ maxHeight: `${maxHeight}px`
43
+ },
44
+ rows: 1
45
+ }
46
+ );
47
+ }
48
+ );
49
+ var Textarea_default = AutoResizingTextarea;
50
+
51
+ export { Textarea_default };
52
+ //# sourceMappingURL=out.js.map
53
+ //# sourceMappingURL=chunk-WM6BS77F.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/Textarea.tsx"],"names":[],"mappings":";AAAA,SAAgB,UAAU,QAAQ,WAAW,YAAY,2BAA2B;AA2C9E;AAhCN,IAAM,uBAAuB;AAAA,EAC3B,CAAC,EAAE,UAAU,GAAG,aAAa,OAAO,UAAU,WAAW,UAAU,GAAG,QAAQ;AAC5E,UAAM,sBAAsB,OAA4B,IAAI;AAC5D,UAAM,CAAC,WAAW,YAAY,IAAI,SAAiB,CAAC;AAEpD,wBAAoB,KAAK,MAAM,oBAAoB,OAA8B;AAEjF,cAAU,MAAM;AACd,YAAM,qBAAqB,MAAM;AAC/B,cAAM,WAAW,oBAAoB;AACrC,YAAI,UAAU;AACZ,mBAAS,MAAM,SAAS;AACxB,gBAAM,kBAAkB,SAAS;AACjC,uBAAa,kBAAkB,OAAO;AACtC,cAAI,WAAW;AACb,qBAAS,MAAM;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AAEA,yBAAmB;AAAA,IACrB,GAAG,CAAC,OAAO,CAAC;AAEZ,cAAU,MAAM;AACd,YAAM,WAAW,oBAAoB;AACrC,UAAI,UAAU;AACZ,iBAAS,MAAM,SAAS;AACxB,iBAAS,MAAM,SAAS,GAAG,KAAK,IAAI,SAAS,cAAc,SAAS;AAAA,MACtE;AAAA,IACF,GAAG,CAAC,OAAO,SAAS,CAAC;AAErB,WACE;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO;AAAA,UACL,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,WAAW,GAAG;AAAA,QAChB;AAAA,QACA,MAAM;AAAA;AAAA,IACR;AAAA,EAEJ;AACF;AAEA,IAAO,mBAAQ","sourcesContent":["import React, { useState, useRef, useEffect, forwardRef, useImperativeHandle } from \"react\";\n\ninterface AutoResizingTextareaProps {\n maxRows?: number;\n placeholder?: string;\n value: string;\n onChange: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n onKeyDown?: (event: React.KeyboardEvent<HTMLTextAreaElement>) => void;\n autoFocus?: boolean;\n}\n\nconst AutoResizingTextarea = forwardRef<HTMLTextAreaElement, AutoResizingTextareaProps>(\n ({ maxRows = 1, placeholder, value, onChange, onKeyDown, autoFocus }, ref) => {\n const internalTextareaRef = useRef<HTMLTextAreaElement>(null);\n const [maxHeight, setMaxHeight] = useState<number>(0);\n\n useImperativeHandle(ref, () => internalTextareaRef.current as HTMLTextAreaElement);\n\n useEffect(() => {\n const calculateMaxHeight = () => {\n const textarea = internalTextareaRef.current;\n if (textarea) {\n textarea.style.height = \"auto\";\n const singleRowHeight = textarea.scrollHeight;\n setMaxHeight(singleRowHeight * maxRows);\n if (autoFocus) {\n textarea.focus();\n }\n }\n };\n\n calculateMaxHeight();\n }, [maxRows]);\n\n useEffect(() => {\n const textarea = internalTextareaRef.current;\n if (textarea) {\n textarea.style.height = \"auto\";\n textarea.style.height = `${Math.min(textarea.scrollHeight, maxHeight)}px`;\n }\n }, [value, maxHeight]);\n\n return (\n <textarea\n ref={internalTextareaRef}\n value={value}\n onChange={onChange}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n style={{\n overflow: \"hidden\",\n resize: \"none\",\n maxHeight: `${maxHeight}px`,\n }}\n rows={1}\n />\n );\n },\n);\n\nexport default AutoResizingTextarea;\n"]}
@@ -0,0 +1,14 @@
1
+ import { useChatContext } from './chunk-OF66AL5Z.mjs';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+
4
+ var ResponseButton = ({ onClick, inProgress }) => {
5
+ const context = useChatContext();
6
+ return /* @__PURE__ */ jsxs("button", { onClick, className: "copilotKitResponseButton", children: [
7
+ /* @__PURE__ */ jsx("span", { children: inProgress ? context.icons.stopIcon : context.icons.regenerateIcon }),
8
+ inProgress ? context.labels.stopGenerating : context.labels.regenerateResponse
9
+ ] });
10
+ };
11
+
12
+ export { ResponseButton };
13
+ //# sourceMappingURL=out.js.map
14
+ //# sourceMappingURL=chunk-Z34F3WLK.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/Response.tsx"],"names":[],"mappings":";;;;;AAMI,SACE,KADF;AAHG,IAAM,iBAAiB,CAAC,EAAE,SAAS,WAAW,MAA2B;AAC9E,QAAM,UAAU,eAAe;AAC/B,SACE,qBAAC,YAAO,SAAkB,WAAU,4BAClC;AAAA,wBAAC,UAAM,uBAAa,QAAQ,MAAM,WAAW,QAAQ,MAAM,gBAAe;AAAA,IACzE,aAAa,QAAQ,OAAO,iBAAiB,QAAQ,OAAO;AAAA,KAC/D;AAEJ","sourcesContent":["import { useChatContext } from \"./ChatContext\";\nimport { ResponseButtonProps } from \"./props\";\n\nexport const ResponseButton = ({ onClick, inProgress }: ResponseButtonProps) => {\n const context = useChatContext();\n return (\n <button onClick={onClick} className=\"copilotKitResponseButton\">\n <span>{inProgress ? context.icons.stopIcon : context.icons.regenerateIcon}</span>\n {inProgress ? context.labels.stopGenerating : context.labels.regenerateResponse}\n </button>\n );\n};\n"]}
@@ -0,0 +1,6 @@
1
+ import { ButtonProps } from './props.js';
2
+ import '@copilotkit/shared';
3
+
4
+ declare const Button: ({ open, setOpen }: ButtonProps) => JSX.Element;
5
+
6
+ export { Button };
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+
6
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
+
8
+ var React__default = /*#__PURE__*/_interopDefault(React);
9
+
10
+ // src/components/chat/ChatContext.tsx
11
+ var ChatContext = React__default.default.createContext(void 0);
12
+ function useChatContext() {
13
+ const context = React__default.default.useContext(ChatContext);
14
+ if (context === void 0) {
15
+ throw new Error(
16
+ "Context not found. Did you forget to wrap your app in a <ChatContextProvider> component?"
17
+ );
18
+ }
19
+ return context;
20
+ }
21
+ var Button = ({ open, setOpen }) => {
22
+ const context = useChatContext();
23
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { onClick: () => setOpen(!open), children: /* @__PURE__ */ jsxRuntime.jsxs(
24
+ "button",
25
+ {
26
+ className: `copilotKitButton ${open ? "open" : ""}`,
27
+ "aria-label": open ? "Close Chat" : "Open Chat",
28
+ children: [
29
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "copilotKitButtonIcon copilotKitButtonIconOpen", children: context.icons.openIcon }),
30
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "copilotKitButtonIcon copilotKitButtonIconClose", children: context.icons.closeIcon })
31
+ ]
32
+ }
33
+ ) });
34
+ };
35
+
36
+ exports.Button = Button;
37
+ //# sourceMappingURL=out.js.map
38
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/chat/ChatContext.tsx","../../../src/components/chat/Button.tsx"],"names":["jsx"],"mappings":";AAAA,OAAO,SAAS,eAAe;AA8KtB;AA7DF,IAAM,cAAc,MAAM,cAAuC,MAAS;AAE1E,SAAS,iBAA8B;AAC5C,QAAM,UAAU,MAAM,WAAW,WAAW;AAC5C,MAAI,YAAY,QAAW;AACzB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;;;AClHM,SAIE,OAAAA,MAJF;AANC,IAAM,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAmB;AACxD,QAAM,UAAU,eAAe;AAG/B,SACE,gBAAAA,KAAC,SAAI,SAAS,MAAM,QAAQ,CAAC,IAAI,GAC/B;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,oBAAoB,OAAO,SAAS;AAAA,MAC/C,cAAY,OAAO,eAAe;AAAA,MAElC;AAAA,wBAAAA,KAAC,SAAI,WAAU,iDACZ,kBAAQ,MAAM,UACjB;AAAA,QACA,gBAAAA,KAAC,SAAI,WAAU,kDACZ,kBAAQ,MAAM,WACjB;AAAA;AAAA;AAAA,EACF,GACF;AAEJ","sourcesContent":["import React, { useMemo } from \"react\";\nimport * as DefaultIcons from \"./Icons\";\n\n/**\n * Icons for CopilotChat component.\n */\nexport interface CopilotChatIcons {\n /**\n * The icon to use for the open chat button.\n * @default <OpenIcon />\n */\n openIcon?: React.ReactNode;\n\n /**\n * The icon to use for the close chat button.\n * @default <CloseIcon />\n */\n closeIcon?: React.ReactNode;\n\n /**\n * The icon to use for the close chat button in the header.\n * @default <HeaderCloseIcon />\n */\n headerCloseIcon?: React.ReactNode;\n\n /**\n * The icon to use for the send button.\n * @default <SendIcon />\n */\n sendIcon?: React.ReactNode;\n\n /**\n * The icon to use for the activity indicator.\n * @default <ActivityIcon />\n */\n activityIcon?: React.ReactNode;\n\n /**\n * The icon to use for the spinner.\n * @default <SpinnerIcon />\n */\n spinnerIcon?: React.ReactNode;\n\n /**\n * The icon to use for the stop button.\n * @default <StopIcon />\n */\n stopIcon?: React.ReactNode;\n\n /**\n * The icon to use for the regenerate button.\n * @default <RegenerateIcon />\n */\n regenerateIcon?: React.ReactNode;\n}\n\n/**\n * Labels for CopilotChat component.\n */\nexport interface CopilotChatLabels {\n /**\n * The initial message(s) to display in the chat window.\n */\n initial?: string | string[];\n\n /**\n * The title to display in the header.\n * @default \"CopilotKit\"\n */\n title?: string;\n\n /**\n * The placeholder to display in the input.\n * @default \"Type a message...\"\n */\n placeholder?: string;\n\n /**\n * The message to display while the chat GPT is \"thinking\".\n * @default \"Thinking...\"\n */\n thinking?: string;\n\n /**\n * The message to display when the chat is done executing a function.\n * @default \"✅ Done\"\n */\n done?: string;\n\n /**\n * The message to display when an error occurs.\n * @default \"❌ An error occurred. Please try again.\"\n */\n error?: string;\n\n /**\n * The label to display on the stop button.\n * @default \"Stop generating\"\n */\n stopGenerating?: string;\n\n /**\n * The label to display on the regenerate button.\n * @default \"Regenerate response\"\n */\n regenerateResponse?: string;\n}\n\ninterface ChatContext {\n labels: Required<CopilotChatLabels>;\n icons: Required<CopilotChatIcons>;\n}\n\nexport const ChatContext = React.createContext<ChatContext | undefined>(undefined);\n\nexport function useChatContext(): ChatContext {\n const context = React.useContext(ChatContext);\n if (context === undefined) {\n throw new Error(\n \"Context not found. Did you forget to wrap your app in a <ChatContextProvider> component?\",\n );\n }\n return context;\n}\n\ninterface ChatContextProps {\n // temperature?: number;\n // instructions?: string;\n // maxFeedback?: number;\n labels?: CopilotChatLabels;\n icons?: CopilotChatIcons;\n children?: React.ReactNode;\n}\n\nexport const ChatContextProvider = ({\n // temperature,\n // instructions,\n // maxFeedback,\n labels,\n icons,\n children,\n}: ChatContextProps) => {\n const context = useMemo(\n () => ({\n labels: {\n ...{\n initial: \"\",\n title: \"CopilotKit\",\n placeholder: \"Type a message...\",\n thinking: \"Thinking...\",\n done: \"✅ Done\",\n error: \"❌ An error occurred. Please try again.\",\n stopGenerating: \"Stop generating\",\n regenerateResponse: \"Regenerate response\",\n },\n ...labels,\n },\n\n icons: {\n ...{\n openIcon: DefaultIcons.OpenIcon,\n closeIcon: DefaultIcons.CloseIcon,\n headerCloseIcon: DefaultIcons.HeaderCloseIcon,\n sendIcon: DefaultIcons.SendIcon,\n activityIcon: DefaultIcons.ActivityIcon,\n spinnerIcon: DefaultIcons.SpinnerIcon,\n stopIcon: DefaultIcons.StopIcon,\n regenerateIcon: DefaultIcons.RegenerateIcon,\n },\n icons,\n },\n }),\n [labels, icons],\n );\n return <ChatContext.Provider value={context}>{children}</ChatContext.Provider>;\n};\n","import { ButtonProps } from \"./props\";\nimport { useChatContext } from \"./ChatContext\";\n\nexport const Button = ({ open, setOpen }: ButtonProps) => {\n const context = useChatContext();\n // To ensure that the mouse handler fires even when the button is scaled down\n // we wrap the button in a div and attach the handler to the div\n return (\n <div onClick={() => setOpen(!open)}>\n <button\n className={`copilotKitButton ${open ? \"open\" : \"\"}`}\n aria-label={open ? \"Close Chat\" : \"Open Chat\"}\n >\n <div className=\"copilotKitButtonIcon copilotKitButtonIconOpen\">\n {context.icons.openIcon}\n </div>\n <div className=\"copilotKitButtonIcon copilotKitButtonIconClose\">\n {context.icons.closeIcon}\n </div>\n </button>\n </div>\n );\n};\n"]}
@@ -0,0 +1,6 @@
1
+ export { Button } from '../../chunk-5O2MCJZ2.mjs';
2
+ import '../../chunk-OF66AL5Z.mjs';
3
+ import '../../chunk-7YXG7D47.mjs';
4
+ import '../../chunk-MRXNTQOX.mjs';
5
+ //# sourceMappingURL=out.js.map
6
+ //# sourceMappingURL=Button.mjs.map
@@ -0,0 +1,96 @@
1
+ import React from 'react';
2
+ import { CopilotChatIcons, CopilotChatLabels } from './ChatContext.js';
3
+ import { SystemMessageFunction } from '@copilotkit/react-core';
4
+ import { WindowProps, ButtonProps, HeaderProps, MessagesProps, InputProps, ResponseButtonProps } from './props.js';
5
+ import '@copilotkit/shared';
6
+
7
+ /**
8
+ * Props for CopilotChat component.
9
+ */
10
+ interface CopilotChatProps {
11
+ /**
12
+ * Custom instructions to be added to the system message. Use this property to
13
+ * provide additional context or guidance to the language model, influencing
14
+ * its responses. These instructions can include specific directions,
15
+ * preferences, or criteria that the model should consider when generating
16
+ * its output, thereby tailoring the conversation more precisely to the
17
+ * user's needs or the application's requirements.
18
+ */
19
+ instructions?: string;
20
+ /**
21
+ * Whether the chat window should be open by default.
22
+ * @default false
23
+ */
24
+ defaultOpen?: boolean;
25
+ /**
26
+ * If the chat window should close when the user clicks outside of it.
27
+ * @default true
28
+ */
29
+ clickOutsideToClose?: boolean;
30
+ /**
31
+ * If the chat window should close when the user hits the Escape key.
32
+ * @default true
33
+ */
34
+ hitEscapeToClose?: boolean;
35
+ /**
36
+ * A callback that gets called when the chat window opens or closes.
37
+ */
38
+ onSetOpen?: (open: boolean) => void;
39
+ /**
40
+ * The hotkey to open the chat window.
41
+ * Uses Command-<hotkey> on a Mac and Ctrl-<hotkey> on Windows.
42
+ * @default "e"
43
+ */
44
+ hotkey?: string;
45
+ /**
46
+ * Icons can be used to set custom icons for the chat window.
47
+ */
48
+ icons?: CopilotChatIcons;
49
+ /**
50
+ * Labels can be used to set custom labels for the chat window.
51
+ */
52
+ labels?: CopilotChatLabels;
53
+ /**
54
+ * A function that takes in context string and instructions and returns
55
+ * the system message to include in the chat request.
56
+ * Use this to completely override the system message, when providing
57
+ * instructions is not enough.
58
+ */
59
+ makeSystemMessage?: SystemMessageFunction;
60
+ /**
61
+ * Whether to show the response button.
62
+ * @default true
63
+ */
64
+ showResponseButton?: boolean;
65
+ /**
66
+ * A custom Window component to use instead of the default.
67
+ */
68
+ Window?: React.ComponentType<WindowProps>;
69
+ /**
70
+ * A custom Button component to use instead of the default.
71
+ */
72
+ Button?: React.ComponentType<ButtonProps>;
73
+ /**
74
+ * A custom Header component to use instead of the default.
75
+ */
76
+ Header?: React.ComponentType<HeaderProps>;
77
+ /**
78
+ * A custom Messages component to use instead of the default.
79
+ */
80
+ Messages?: React.ComponentType<MessagesProps>;
81
+ /**
82
+ * A custom Input component to use instead of the default.
83
+ */
84
+ Input?: React.ComponentType<InputProps>;
85
+ /**
86
+ * A custom ResponseButton component to use instead of the default.
87
+ */
88
+ ResponseButton?: React.ComponentType<ResponseButtonProps>;
89
+ /**
90
+ * A class name to apply to the root element.
91
+ */
92
+ className?: string;
93
+ }
94
+ declare const CopilotChat: ({ instructions, defaultOpen, clickOutsideToClose, hitEscapeToClose, onSetOpen, hotkey, icons, labels, makeSystemMessage, showResponseButton, Window, Button, Header, Messages, Input, ResponseButton, className, }: CopilotChatProps) => JSX.Element;
95
+
96
+ export { CopilotChat, CopilotChatProps };