@chatsdk-dev/elements 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/dist/{api-CIYPz72L.d.ts → api-BP4g92-0.d.ts} +1 -1
  2. package/dist/{api-CIYPz72L.d.ts.map → api-BP4g92-0.d.ts.map} +1 -1
  3. package/dist/approval-BODP4NVA.d.ts +5 -0
  4. package/dist/approval-BODP4NVA.d.ts.map +1 -0
  5. package/dist/avatar-CK5WGu6N.d.ts +5 -0
  6. package/dist/avatar-CK5WGu6N.d.ts.map +1 -0
  7. package/dist/{callbacks-PIvHXeEI.d.ts → callbacks-CQelTSwD.d.ts} +1 -1
  8. package/dist/{callbacks-PIvHXeEI.d.ts.map → callbacks-CQelTSwD.d.ts.map} +1 -1
  9. package/dist/chat-element-BbBl5CDM.d.ts +131 -0
  10. package/dist/chat-element-BbBl5CDM.d.ts.map +1 -0
  11. package/dist/chat-error-CST-PRdq.d.ts +15 -0
  12. package/dist/chat-error-CST-PRdq.d.ts.map +1 -0
  13. package/dist/{chatsdk-provider-BhlChLFd.d.ts → chatsdk-provider-t1GEgRPY.d.ts} +2 -2
  14. package/dist/chatsdk-provider-t1GEgRPY.d.ts.map +1 -0
  15. package/dist/{config-CqihvSgz.d.ts → config-BGIY5Hkg.d.ts} +20 -19
  16. package/dist/config-BGIY5Hkg.d.ts.map +1 -0
  17. package/dist/config-Wk7C7AJs.js +95 -0
  18. package/dist/config-Wk7C7AJs.js.map +1 -0
  19. package/dist/config-f4Go--5s.d.ts +194 -0
  20. package/dist/config-f4Go--5s.d.ts.map +1 -0
  21. package/dist/content-BoiPVwgM.d.ts +10 -0
  22. package/dist/content-BoiPVwgM.d.ts.map +1 -0
  23. package/dist/{context-aSaHw-ac.d.ts → context-D4dOffYT.d.ts} +1 -1
  24. package/dist/context-D4dOffYT.d.ts.map +1 -0
  25. package/dist/conversation-CtpcctHL.d.ts +8 -0
  26. package/dist/conversation-CtpcctHL.d.ts.map +1 -0
  27. package/dist/copy-BPB94kUd.d.ts +5 -0
  28. package/dist/copy-BPB94kUd.d.ts.map +1 -0
  29. package/dist/{element-provider-C_nBsftD.d.ts → element-provider-C95jVJV9.d.ts} +4 -5
  30. package/dist/element-provider-C95jVJV9.d.ts.map +1 -0
  31. package/dist/features/chat/chat-element.d.ts +2 -2
  32. package/dist/features/chat/chat-element.js +2 -2
  33. package/dist/features/chat/conversation/conversation.d.ts +2 -0
  34. package/dist/features/chat/conversation/conversation.js +73 -0
  35. package/dist/features/chat/conversation/conversation.js.map +1 -0
  36. package/dist/features/chat/conversation/message/activity.d.ts +12 -0
  37. package/dist/features/chat/conversation/message/activity.d.ts.map +1 -0
  38. package/dist/features/chat/conversation/message/activity.js +48 -0
  39. package/dist/features/chat/conversation/message/activity.js.map +1 -0
  40. package/dist/features/chat/conversation/message/approval.d.ts +2 -0
  41. package/dist/features/chat/conversation/message/approval.js +62 -0
  42. package/dist/features/chat/conversation/message/approval.js.map +1 -0
  43. package/dist/features/chat/conversation/message/avatar.d.ts +2 -0
  44. package/dist/features/chat/conversation/message/avatar.js +18 -0
  45. package/dist/features/chat/conversation/message/avatar.js.map +1 -0
  46. package/dist/features/chat/conversation/message/content.d.ts +2 -0
  47. package/dist/features/chat/conversation/message/content.js +11 -0
  48. package/dist/features/chat/conversation/message/content.js.map +1 -0
  49. package/dist/features/chat/conversation/message/copy.d.ts +2 -0
  50. package/dist/features/chat/conversation/message/copy.js +30 -0
  51. package/dist/features/chat/conversation/message/copy.js.map +1 -0
  52. package/dist/features/chat/conversation/message/feedback.d.ts +2 -0
  53. package/dist/features/chat/conversation/message/feedback.js +36 -0
  54. package/dist/features/chat/conversation/message/feedback.js.map +1 -0
  55. package/dist/features/chat/conversation/message/footer.d.ts +2 -0
  56. package/dist/features/chat/conversation/message/footer.js +20 -0
  57. package/dist/features/chat/conversation/message/footer.js.map +1 -0
  58. package/dist/features/chat/conversation/message/frame.d.ts +2 -0
  59. package/dist/features/chat/conversation/message/frame.js +18 -0
  60. package/dist/features/chat/conversation/message/frame.js.map +1 -0
  61. package/dist/features/chat/conversation/message/index.d.ts +2 -0
  62. package/dist/features/chat/conversation/message/index.js +2 -0
  63. package/dist/features/chat/conversation/message/index.parts.d.ts +22 -0
  64. package/dist/features/chat/conversation/message/index.parts.d.ts.map +1 -0
  65. package/dist/features/chat/conversation/message/index.parts.js +36 -0
  66. package/dist/features/chat/conversation/message/index.parts.js.map +1 -0
  67. package/dist/features/chat/conversation/message/message.d.ts +1 -0
  68. package/dist/features/chat/conversation/message/message.js +1 -0
  69. package/dist/features/chat/conversation/message/part.d.ts +2 -0
  70. package/dist/features/chat/conversation/message/part.js +35 -0
  71. package/dist/features/chat/conversation/message/part.js.map +1 -0
  72. package/dist/features/chat/conversation/message/provider.d.ts +2 -0
  73. package/dist/features/chat/conversation/message/provider.js +26 -0
  74. package/dist/features/chat/conversation/message/provider.js.map +1 -0
  75. package/dist/features/chat/conversation/message/reasoning.d.ts +2 -0
  76. package/dist/features/chat/conversation/message/reasoning.js +33 -0
  77. package/dist/features/chat/conversation/message/reasoning.js.map +1 -0
  78. package/dist/features/chat/conversation/message/sources.d.ts +2 -0
  79. package/dist/features/chat/conversation/message/sources.js +20 -0
  80. package/dist/features/chat/conversation/message/sources.js.map +1 -0
  81. package/dist/features/chat/conversation/message/text.d.ts +2 -0
  82. package/dist/features/chat/conversation/message/text.js +29 -0
  83. package/dist/features/chat/conversation/message/text.js.map +1 -0
  84. package/dist/features/chat/conversation/message/timestamp.d.ts +2 -0
  85. package/dist/features/chat/conversation/message/timestamp.js +36 -0
  86. package/dist/features/chat/conversation/message/timestamp.js.map +1 -0
  87. package/dist/features/chat/conversation/message/tool.d.ts +2 -0
  88. package/dist/features/chat/conversation/message/tool.js +56 -0
  89. package/dist/features/chat/conversation/message/tool.js.map +1 -0
  90. package/dist/features/chat/error/chat-error.d.ts +2 -0
  91. package/dist/features/chat/error/chat-error.js +46 -0
  92. package/dist/features/chat/error/chat-error.js.map +1 -0
  93. package/dist/features/chat/frame/frame.d.ts +2 -0
  94. package/dist/features/chat/frame/frame.js +52 -0
  95. package/dist/features/chat/frame/frame.js.map +1 -0
  96. package/dist/features/chat/frame/header-menu.d.ts +8 -0
  97. package/dist/features/chat/frame/header-menu.d.ts.map +1 -0
  98. package/dist/features/chat/{chat-header/chat-menu.js → frame/header-menu.js} +12 -13
  99. package/dist/features/chat/frame/header-menu.js.map +1 -0
  100. package/dist/features/chat/frame/header.d.ts +2 -0
  101. package/dist/features/chat/frame/header.js +50 -0
  102. package/dist/features/chat/frame/header.js.map +1 -0
  103. package/dist/features/chat/history/history-empty.d.ts +8 -0
  104. package/dist/features/chat/history/history-empty.d.ts.map +1 -0
  105. package/dist/features/chat/{chat-history/chat-history-empty.js → history/history-empty.js} +9 -8
  106. package/dist/features/chat/history/history-empty.js.map +1 -0
  107. package/dist/features/chat/history/history.d.ts +2 -0
  108. package/dist/features/chat/history/history.js +65 -0
  109. package/dist/features/chat/history/history.js.map +1 -0
  110. package/dist/features/chat/history/use-history.d.ts +2 -0
  111. package/dist/features/chat/history/use-history.js +30 -0
  112. package/dist/features/chat/history/use-history.js.map +1 -0
  113. package/dist/features/chat/index.d.ts +2 -2
  114. package/dist/features/chat/index.js +29 -2
  115. package/dist/features/chat/index.js.map +1 -0
  116. package/dist/features/chat/index.parts.d.ts +9 -0
  117. package/dist/features/chat/index.parts.js +24 -0
  118. package/dist/features/chat/index.parts.js.map +1 -0
  119. package/dist/features/chat/main/main.d.ts +2 -0
  120. package/dist/features/chat/main/main.js +40 -0
  121. package/dist/features/chat/main/main.js.map +1 -0
  122. package/dist/features/chat/main/prompt-input.d.ts +2 -0
  123. package/dist/features/chat/main/prompt-input.js +70 -0
  124. package/dist/features/chat/main/prompt-input.js.map +1 -0
  125. package/dist/features/chat/main/use-create-new-chat.d.ts +2 -0
  126. package/dist/features/chat/main/use-create-new-chat.js +24 -0
  127. package/dist/features/chat/main/use-create-new-chat.js.map +1 -0
  128. package/dist/features/chat/main/use-prompt-input.d.ts +2 -0
  129. package/dist/features/chat/main/use-prompt-input.js +27 -0
  130. package/dist/features/chat/main/use-prompt-input.js.map +1 -0
  131. package/dist/features/chat/provider/provider.d.ts +2 -0
  132. package/dist/features/chat/provider/provider.js +3 -0
  133. package/dist/features/chat/provider/use-ai-sdk-chat.d.ts +26 -0
  134. package/dist/features/chat/provider/use-ai-sdk-chat.d.ts.map +1 -0
  135. package/dist/features/chat/provider/use-ai-sdk-chat.js +3 -0
  136. package/dist/features/chat/provider/use-create-chat-store.d.ts +2 -0
  137. package/dist/features/chat/provider/use-create-chat-store.js +42 -0
  138. package/dist/features/chat/provider/use-create-chat-store.js.map +1 -0
  139. package/dist/features/chat/provider/use-visible-messages.d.ts +13 -0
  140. package/dist/features/chat/provider/use-visible-messages.d.ts.map +1 -0
  141. package/dist/features/chat/provider/use-visible-messages.js +23 -0
  142. package/dist/features/chat/provider/use-visible-messages.js.map +1 -0
  143. package/dist/features/chat/queries/query-keys.d.ts +3 -3
  144. package/dist/features/chat/queries/query-keys.d.ts.map +1 -1
  145. package/dist/features/chat/queries/query-keys.js +5 -5
  146. package/dist/features/chat/queries/query-keys.js.map +1 -1
  147. package/dist/features/chat/queries/use-create-conversation-mutation.d.ts +13 -14
  148. package/dist/features/chat/queries/use-create-conversation-mutation.d.ts.map +1 -1
  149. package/dist/features/chat/queries/use-create-conversation-mutation.js +4 -4
  150. package/dist/features/chat/queries/use-create-conversation-mutation.js.map +1 -1
  151. package/dist/features/chat/queries/use-get-agent-query.d.ts +2 -0
  152. package/dist/features/chat/queries/use-get-agent-query.js +2 -0
  153. package/dist/features/chat/queries/use-get-conversation-query.d.ts +2 -72
  154. package/dist/features/chat/queries/use-get-conversation-query.js +1 -1
  155. package/dist/features/chat/queries/use-list-conversations-query.d.ts +2 -33
  156. package/dist/features/chat/queries/use-list-conversations-query.js +23 -1
  157. package/dist/features/chat/queries/use-list-conversations-query.js.map +1 -0
  158. package/dist/features/chat/queries/use-record-feedback-mutation.d.ts +26 -0
  159. package/dist/features/chat/queries/use-record-feedback-mutation.d.ts.map +1 -0
  160. package/dist/features/chat/queries/use-record-feedback-mutation.js +2 -0
  161. package/dist/features/chat/utils.d.ts +7 -2
  162. package/dist/features/chat/utils.d.ts.map +1 -1
  163. package/dist/features/chat/utils.js +12 -1
  164. package/dist/features/chat/utils.js.map +1 -1
  165. package/dist/features/data-fetching/use-api-client.d.ts +1 -3
  166. package/dist/features/data-fetching/use-api-client.d.ts.map +1 -1
  167. package/dist/features/data-fetching/use-api-client.js +1 -1
  168. package/dist/features/element/chatsdk-provider.d.ts +1 -1
  169. package/dist/features/element/chatsdk-provider.js +5 -5
  170. package/dist/features/element/chatsdk-provider.js.map +1 -1
  171. package/dist/features/element/element-provider.d.ts +1 -1
  172. package/dist/features/element/element-provider.js +12 -8
  173. package/dist/features/element/element-provider.js.map +1 -1
  174. package/dist/features/element/store.d.ts +1 -1
  175. package/dist/features/element/store.js.map +1 -1
  176. package/dist/features/element/types/api.d.ts +1 -1
  177. package/dist/features/element/types/callbacks.d.ts +1 -1
  178. package/dist/features/element/types/config.d.ts +1 -1
  179. package/dist/features/element/types/context.d.ts +1 -1
  180. package/dist/features/element/types/locale.d.ts +1 -1
  181. package/dist/features/element/types/theme.d.ts +1 -1
  182. package/dist/features/element/types/translations.d.ts +1 -1
  183. package/dist/features/element/use-element-config.d.ts +14 -33
  184. package/dist/features/element/use-element-config.d.ts.map +1 -1
  185. package/dist/features/element/use-element-config.js +7 -15
  186. package/dist/features/element/use-element-config.js.map +1 -1
  187. package/dist/features/element/use-merge-global-config.d.ts +6 -7
  188. package/dist/features/element/use-merge-global-config.d.ts.map +1 -1
  189. package/dist/features/element/use-merge-global-config.js +2 -2
  190. package/dist/features/element/use-merge-global-config.js.map +1 -1
  191. package/dist/features/element/utils.d.ts +1 -1
  192. package/dist/features/element/utils.js.map +1 -1
  193. package/dist/features/errors/use-app-error-message.d.ts +2 -0
  194. package/dist/features/errors/use-app-error-message.js +25 -0
  195. package/dist/features/errors/use-app-error-message.js.map +1 -0
  196. package/dist/features/logging/logger-provider.d.ts +2 -0
  197. package/dist/features/logging/logger-provider.js +20 -0
  198. package/dist/features/logging/logger-provider.js.map +1 -0
  199. package/dist/feedback-hofC2MHC.d.ts +5 -0
  200. package/dist/feedback-hofC2MHC.d.ts.map +1 -0
  201. package/dist/footer-BdcVsDmw.d.ts +11 -0
  202. package/dist/footer-BdcVsDmw.d.ts.map +1 -0
  203. package/dist/frame-BCN71hMj.d.ts +17 -0
  204. package/dist/frame-BCN71hMj.d.ts.map +1 -0
  205. package/dist/frame-D_ce2ErP.d.ts +10 -0
  206. package/dist/frame-D_ce2ErP.d.ts.map +1 -0
  207. package/dist/header-BDGB3zKD.d.ts +8 -0
  208. package/dist/header-BDGB3zKD.d.ts.map +1 -0
  209. package/dist/history-DDUj4LMJ.d.ts +8 -0
  210. package/dist/history-DDUj4LMJ.d.ts.map +1 -0
  211. package/dist/i18n/config.d.ts +1 -1
  212. package/dist/i18n/config.js +1 -1
  213. package/dist/i18n/i18next.d.ts +1 -1377
  214. package/dist/i18n/i18next.d.ts.map +1 -1
  215. package/dist/i18n/i18next.js +1 -2
  216. package/dist/i18n/i18next.js.map +1 -1
  217. package/dist/i18n/utils.d.ts +1 -1
  218. package/dist/i18n/utils.d.ts.map +1 -1
  219. package/dist/i18n/utils.js.map +1 -1
  220. package/dist/index.d.ts +13 -5
  221. package/dist/index.js +12 -59
  222. package/dist/index.js.map +1 -1
  223. package/dist/{locale-W5Kyyi4X.d.ts → locale-v_zPGRhE.d.ts} +2 -2
  224. package/dist/locale-v_zPGRhE.d.ts.map +1 -0
  225. package/dist/logger-provider-whBIV3Gt.d.ts +16 -0
  226. package/dist/logger-provider-whBIV3Gt.d.ts.map +1 -0
  227. package/dist/main-D8VgMjmL.d.ts +15 -0
  228. package/dist/main-D8VgMjmL.d.ts.map +1 -0
  229. package/dist/part-C8ZA6iZn.d.ts +25 -0
  230. package/dist/part-C8ZA6iZn.d.ts.map +1 -0
  231. package/dist/prompt-input-bclKhGu3.d.ts +15 -0
  232. package/dist/prompt-input-bclKhGu3.d.ts.map +1 -0
  233. package/dist/provider-CkkKc2aq.d.ts +21 -0
  234. package/dist/provider-CkkKc2aq.d.ts.map +1 -0
  235. package/dist/provider-Cps0PPXa.js +383 -0
  236. package/dist/provider-Cps0PPXa.js.map +1 -0
  237. package/dist/reasoning-BRNu_n6T.d.ts +5 -0
  238. package/dist/reasoning-BRNu_n6T.d.ts.map +1 -0
  239. package/dist/rolldown-runtime-D7D4PA-g.js +13 -0
  240. package/dist/sources-BXoSxNYc.d.ts +5 -0
  241. package/dist/sources-BXoSxNYc.d.ts.map +1 -0
  242. package/dist/{store-CGX9oRlE.d.ts → store-CkswgmIQ.d.ts} +8 -10
  243. package/dist/store-CkswgmIQ.d.ts.map +1 -0
  244. package/dist/styles.css +1677 -948
  245. package/dist/text-Cio_Hj_h.d.ts +5 -0
  246. package/dist/text-Cio_Hj_h.d.ts.map +1 -0
  247. package/dist/{theme-Cb-RBWbR.d.ts → theme-K7rbPHc1.d.ts} +1 -1
  248. package/dist/{theme-Cb-RBWbR.d.ts.map → theme-K7rbPHc1.d.ts.map} +1 -1
  249. package/dist/timestamp-CbU3bLa3.d.ts +5 -0
  250. package/dist/timestamp-CbU3bLa3.d.ts.map +1 -0
  251. package/dist/tool-DskTWxZb.d.ts +5 -0
  252. package/dist/tool-DskTWxZb.d.ts.map +1 -0
  253. package/dist/use-app-error-message-DAHQ4oR_.d.ts +12 -0
  254. package/dist/use-app-error-message-DAHQ4oR_.d.ts.map +1 -0
  255. package/dist/use-create-chat-store-Ccd5tvho.d.ts +26 -0
  256. package/dist/use-create-chat-store-Ccd5tvho.d.ts.map +1 -0
  257. package/dist/use-create-new-chat-H4kM3hPt.d.ts +7 -0
  258. package/dist/use-create-new-chat-H4kM3hPt.d.ts.map +1 -0
  259. package/dist/use-get-agent-query-hQ4uOjfL.d.ts +10 -0
  260. package/dist/use-get-agent-query-hQ4uOjfL.d.ts.map +1 -0
  261. package/dist/use-get-conversation-query-D5bRlewH.d.ts +73 -0
  262. package/dist/use-get-conversation-query-D5bRlewH.d.ts.map +1 -0
  263. package/dist/use-history-DH2KkVDP.d.ts +30 -0
  264. package/dist/use-history-DH2KkVDP.d.ts.map +1 -0
  265. package/dist/use-list-conversations-query-Ny-nP5cZ.d.ts +29 -0
  266. package/dist/use-list-conversations-query-Ny-nP5cZ.d.ts.map +1 -0
  267. package/package.json +27 -24
  268. package/dist/chat-element-CCsDDFif.js +0 -441
  269. package/dist/chat-element-CCsDDFif.js.map +0 -1
  270. package/dist/chat-element-CSpa62Te.d.ts +0 -53
  271. package/dist/chat-element-CSpa62Te.d.ts.map +0 -1
  272. package/dist/chatsdk-provider-BhlChLFd.d.ts.map +0 -1
  273. package/dist/common/utils.d.ts +0 -14
  274. package/dist/common/utils.d.ts.map +0 -1
  275. package/dist/common/utils.js +0 -26
  276. package/dist/common/utils.js.map +0 -1
  277. package/dist/components/info-card.d.ts +0 -23
  278. package/dist/components/info-card.d.ts.map +0 -1
  279. package/dist/components/info-card.js +0 -38
  280. package/dist/components/info-card.js.map +0 -1
  281. package/dist/config-BigIL6TQ.js +0 -29
  282. package/dist/config-BigIL6TQ.js.map +0 -1
  283. package/dist/config-CqihvSgz.d.ts.map +0 -1
  284. package/dist/config-D_jVTH_D.d.ts +0 -58
  285. package/dist/config-D_jVTH_D.d.ts.map +0 -1
  286. package/dist/context-aSaHw-ac.d.ts.map +0 -1
  287. package/dist/element-provider-C_nBsftD.d.ts.map +0 -1
  288. package/dist/features/chat/chat-card.d.ts +0 -7
  289. package/dist/features/chat/chat-card.d.ts.map +0 -1
  290. package/dist/features/chat/chat-card.js +0 -2
  291. package/dist/features/chat/chat-header/chat-header.d.ts +0 -12
  292. package/dist/features/chat/chat-header/chat-header.d.ts.map +0 -1
  293. package/dist/features/chat/chat-header/chat-header.js +0 -2
  294. package/dist/features/chat/chat-header/chat-menu.d.ts +0 -7
  295. package/dist/features/chat/chat-header/chat-menu.d.ts.map +0 -1
  296. package/dist/features/chat/chat-header/chat-menu.js.map +0 -1
  297. package/dist/features/chat/chat-history/chat-history-empty.d.ts +0 -7
  298. package/dist/features/chat/chat-history/chat-history-empty.d.ts.map +0 -1
  299. package/dist/features/chat/chat-history/chat-history-empty.js.map +0 -1
  300. package/dist/features/chat/chat-history/chat-history.d.ts +0 -7
  301. package/dist/features/chat/chat-history/chat-history.d.ts.map +0 -1
  302. package/dist/features/chat/chat-history/chat-history.js +0 -2
  303. package/dist/features/chat/chat-main/chat-main.d.ts +0 -10
  304. package/dist/features/chat/chat-main/chat-main.d.ts.map +0 -1
  305. package/dist/features/chat/chat-main/chat-main.js +0 -3
  306. package/dist/features/chat/chat-main/use-chat.d.ts +0 -23
  307. package/dist/features/chat/chat-main/use-chat.d.ts.map +0 -1
  308. package/dist/features/chat/chat-main/use-chat.js +0 -3
  309. package/dist/features/chat/chat-main/use-initial-messages.d.ts +0 -22
  310. package/dist/features/chat/chat-main/use-initial-messages.d.ts.map +0 -1
  311. package/dist/features/chat/chat-main/use-initial-messages.js +0 -2
  312. package/dist/features/chat/chat-prompt-input.d.ts +0 -24
  313. package/dist/features/chat/chat-prompt-input.d.ts.map +0 -1
  314. package/dist/features/chat/chat-prompt-input.js +0 -3
  315. package/dist/features/chat/chat.context.d.ts +0 -28
  316. package/dist/features/chat/chat.context.d.ts.map +0 -1
  317. package/dist/features/chat/chat.context.js +0 -10
  318. package/dist/features/chat/chat.context.js.map +0 -1
  319. package/dist/features/chat/queries/use-get-chat-query.d.ts +0 -13
  320. package/dist/features/chat/queries/use-get-chat-query.d.ts.map +0 -1
  321. package/dist/features/chat/queries/use-get-chat-query.js +0 -2
  322. package/dist/features/chat/queries/use-get-conversation-query.d.ts.map +0 -1
  323. package/dist/features/chat/queries/use-list-conversations-query.d.ts.map +0 -1
  324. package/dist/features/chat/store.d.ts +0 -15
  325. package/dist/features/chat/store.d.ts.map +0 -1
  326. package/dist/features/chat/store.js +0 -15
  327. package/dist/features/chat/store.js.map +0 -1
  328. package/dist/features/logger/logger.d.ts +0 -2
  329. package/dist/features/logger/logger.js +0 -15
  330. package/dist/features/logger/logger.js.map +0 -1
  331. package/dist/locale-W5Kyyi4X.d.ts.map +0 -1
  332. package/dist/logger-BvmhODdq.d.ts +0 -11
  333. package/dist/logger-BvmhODdq.d.ts.map +0 -1
  334. package/dist/store-CGX9oRlE.d.ts.map +0 -1
@@ -1,441 +0,0 @@
1
- import { createElementContext } from "./features/element/element-provider.js";
2
- import { useMergeElementConfig } from "./features/element/use-element-config.js";
3
- import { chatQueryKeys } from "./features/chat/queries/query-keys.js";
4
- import { useChatStore } from "./features/chat/store.js";
5
- import { ChatMenu } from "./features/chat/chat-header/chat-menu.js";
6
- import { renderRelativeTime } from "./common/utils.js";
7
- import { ChatHistoryEmpty } from "./features/chat/chat-history/chat-history-empty.js";
8
- import { getInitialMessagesFromStrings } from "./features/chat/utils.js";
9
- import { ArrowLeft, CheckIcon, GlobeIcon, Plus } from "lucide-react";
10
- import { Fragment, useEffect, useMemo, useRef, useState } from "react";
11
- import { jsx, jsxs } from "react/jsx-runtime";
12
- import { useQuery, useQueryClient } from "@tanstack/react-query";
13
- import { useTranslation } from "react-i18next";
14
- import { Card, CardHeader, CardTitle } from "@chatsdk-dev/ui/atoms/card";
15
- import { DotsLoader } from "@chatsdk-dev/ui/atoms/dots-loader";
16
- import { Text } from "@chatsdk-dev/ui/atoms/typography/text";
17
- import { Button } from "@chatsdk-dev/ui/atoms/button";
18
- import { getClient } from "@chatsdk-dev/api-client";
19
- import { Conversation, ConversationContent, ConversationScrollButton } from "@chatsdk-dev/ui/molecules/ai/conversation";
20
- import { ChatMessage } from "@chatsdk-dev/ui/molecules/chat-message";
21
- import { PromptInput, PromptInputButton, PromptInputSubmit, PromptInputTextarea, PromptInputTools } from "@chatsdk-dev/ui/molecules/ai/prompt-input";
22
- import { ModelSelector, ModelSelectorContent, ModelSelectorEmpty, ModelSelectorGroup, ModelSelectorInput, ModelSelectorItem, ModelSelectorList, ModelSelectorLogo, ModelSelectorLogoGroup, ModelSelectorName, ModelSelectorTrigger } from "@chatsdk-dev/ui/molecules/ai/model-selector";
23
- import { useChat } from "@ai-sdk/react";
24
- import { DefaultChatTransport } from "ai";
25
- //#region src/features/data-fetching/use-api-client.ts
26
- function useApiClient() {
27
- const { api } = useElementConfig();
28
- return getClient(api ?? {});
29
- }
30
- //#endregion
31
- //#region src/features/chat/queries/use-get-chat-query.ts
32
- function useGetChatQuery({ chatId }) {
33
- const client = useApiClient();
34
- return useQuery({
35
- queryKey: chatQueryKeys.get(chatId),
36
- queryFn: async () => {
37
- const { data, error } = await client.chats.get({ path: { chatId } });
38
- if (error) throw new Error("error" in error ? error.error : "Failed to fetch chat");
39
- return data;
40
- },
41
- enabled: !!chatId
42
- });
43
- }
44
- //#endregion
45
- //#region src/features/chat/chat-header/chat-header.tsx
46
- function ChatHeader({ chatId }) {
47
- const { t } = useTranslation();
48
- const { tab, setTab } = useChatStore();
49
- const { data } = useGetChatQuery({ chatId });
50
- const [_, setImgLoaded] = useState(false);
51
- const name = data?.chatAppearanceSettings?.displayName;
52
- const iconUrl = data?.chatAppearanceSettings?.icon?.url;
53
- return /* @__PURE__ */ jsxs(CardHeader, {
54
- className: "flex justify-between items-center h-14 bg-slate-900 dark:bg-zinc-400 rounded-t-lg px-4!",
55
- children: [/* @__PURE__ */ jsxs(CardTitle, { children: [tab === "chat" && /* @__PURE__ */ jsxs("div", {
56
- className: "flex items-center gap-2",
57
- children: [iconUrl && /* @__PURE__ */ jsx("img", {
58
- src: iconUrl,
59
- alt: "Chat Icon",
60
- className: "inline-block w-4 h-4",
61
- onLoad: () => setImgLoaded(true)
62
- }), /* @__PURE__ */ jsx(Text, {
63
- variant: "h1",
64
- className: "text-sm text-background flex items-center gap-2",
65
- children: name
66
- })]
67
- }), tab === "history" && /* @__PURE__ */ jsxs("div", {
68
- className: "flex items-center gap-2",
69
- children: [/* @__PURE__ */ jsx(Button, {
70
- onClick: () => setTab("chat"),
71
- variant: "transparent",
72
- className: "p-0!",
73
- children: /* @__PURE__ */ jsx(ArrowLeft, { className: "size-4" })
74
- }), /* @__PURE__ */ jsx(Text, {
75
- variant: "h1",
76
- className: "text-sm text-background flex items-center gap-2",
77
- children: t("header.history-tab-label")
78
- })]
79
- })] }), tab === "chat" && /* @__PURE__ */ jsx(ChatMenu, {})]
80
- });
81
- }
82
- //#endregion
83
- //#region src/features/chat/queries/use-list-conversations-query.ts
84
- function useListConversationsQuery({ chatId }) {
85
- const client = useApiClient();
86
- const { context } = useElementConfig();
87
- return useQuery({
88
- queryKey: chatQueryKeys.listConversations(chatId),
89
- queryFn: async () => {
90
- const { data, error } = await client.chats.conversations.list({
91
- path: { chatId },
92
- query: { actorId: context?.actor?.id ?? "" }
93
- });
94
- if (error) throw new Error("error" in error ? error.error : "Failed to fetch conversations");
95
- return data.conversations.reverse();
96
- },
97
- enabled: !!chatId
98
- });
99
- }
100
- //#endregion
101
- //#region src/features/chat/chat-history/chat-history.tsx
102
- function ChatHistory() {
103
- const { t, i18n } = useTranslation("chat", { keyPrefix: "history" });
104
- const queryClient = useQueryClient();
105
- const { chatId } = useElementComponent();
106
- const { data, isLoading } = useListConversationsQuery({ chatId });
107
- const { setSelectedConversationId, setTab, setConversationType } = useChatStore();
108
- if (isLoading) return /* @__PURE__ */ jsx("div", {
109
- className: "w-full h-full flex items-center justify-center",
110
- children: /* @__PURE__ */ jsx(DotsLoader, {})
111
- });
112
- return /* @__PURE__ */ jsxs("div", {
113
- className: "flex-1 min-h-0 flex flex-col gap-1 overflow-y-auto gap-2 p-2",
114
- children: [data?.length === 0 ? /* @__PURE__ */ jsx(ChatHistoryEmpty, {}) : data?.map((conversation, index) => /* @__PURE__ */ jsxs(Button, {
115
- variant: "ghost",
116
- className: "flex flex-col items-start justify-center gap-2 px-3 py-2 h-auto text-left",
117
- onClick: () => {
118
- queryClient.invalidateQueries({ queryKey: chatQueryKeys.conversation(chatId, conversation._id) });
119
- setSelectedConversationId(conversation._id);
120
- setTab("chat");
121
- setConversationType("history");
122
- },
123
- children: [/* @__PURE__ */ jsxs("div", {
124
- className: "self-stretch flex justify-between gap-1",
125
- children: [/* @__PURE__ */ jsxs(Text, {
126
- className: "truncate text-sm",
127
- children: [
128
- data.length - index,
129
- ":",
130
- " ",
131
- conversation.title ?? t("unitled-conversation")
132
- ]
133
- }), /* @__PURE__ */ jsx(Text, {
134
- variant: "tiny",
135
- color: "muted",
136
- children: renderRelativeTime({
137
- date: conversation._creationTime,
138
- locale: i18n.language
139
- })
140
- })]
141
- }), /* @__PURE__ */ jsx(Text, {
142
- className: "flex-1 min-w-0 max-w-full truncate",
143
- variant: "paragraph2",
144
- color: "muted",
145
- children: conversation.summary
146
- })]
147
- }, conversation._id)), /* @__PURE__ */ jsxs(Button, {
148
- className: "absolute bottom-6 left-1/2 -translate-x-1/2",
149
- onClick: () => {
150
- setConversationType("new");
151
- setSelectedConversationId();
152
- setTab("chat");
153
- },
154
- children: [/* @__PURE__ */ jsx(Plus, { className: "size-4" }), t("new-conversation")]
155
- })]
156
- });
157
- }
158
- //#endregion
159
- //#region src/features/chat/chat-prompt-input.tsx
160
- function ChatPromptInput({ chatId, onSubmit, onModelChange, status, ref }) {
161
- const { data } = useGetChatQuery({ chatId });
162
- const defaultModel = data?.chatModelSettings?.defaultModel;
163
- const allowedModels = data?.chatModelSettings?.allowedModels;
164
- const [input, setInput] = useState("");
165
- const [model, setModel] = useState(defaultModel?.name);
166
- const [modelSelectorOpen, setModelSelectorOpen] = useState(false);
167
- const [webSearch, setWebSearch] = useState(false);
168
- const selectedModel = allowedModels?.find((m) => m.name === model);
169
- const modelGroups = allowedModels?.map((m) => m.chef);
170
- const hasMultipleModels = allowedModels && allowedModels.length > 1;
171
- const hasActions = hasMultipleModels || true;
172
- return /* @__PURE__ */ jsxs("div", {
173
- className: "flex flex-col gap-1",
174
- children: [/* @__PURE__ */ jsxs(PromptInput, {
175
- onSubmit: (message, event) => {
176
- onSubmit(message, event);
177
- setInput("");
178
- },
179
- children: [/* @__PURE__ */ jsx(PromptInputTextarea, {
180
- ref,
181
- placeholder: data?.chatBaseSettings?.inputPlaceholder,
182
- onChange: (e) => setInput(e.target.value),
183
- value: input
184
- }), /* @__PURE__ */ jsx(PromptInputSubmit, {
185
- className: "m-1.5 self-end",
186
- disabled: !input,
187
- status
188
- })]
189
- }), hasActions && /* @__PURE__ */ jsxs(PromptInputTools, { children: [/* @__PURE__ */ jsxs(PromptInputButton, {
190
- variant: webSearch ? "primary" : "ghost",
191
- onClick: () => setWebSearch(!webSearch),
192
- children: [/* @__PURE__ */ jsx(GlobeIcon, { size: 16 }), /* @__PURE__ */ jsx("span", { children: "Search" })]
193
- }), hasMultipleModels && /* @__PURE__ */ jsxs(ModelSelector, {
194
- onOpenChange: setModelSelectorOpen,
195
- open: modelSelectorOpen,
196
- children: [/* @__PURE__ */ jsx(ModelSelectorTrigger, { children: /* @__PURE__ */ jsxs(PromptInputButton, { children: [selectedModel?.chefSlug && /* @__PURE__ */ jsx(ModelSelectorLogo, { provider: selectedModel.chefSlug }), /* @__PURE__ */ jsx(ModelSelectorName, { children: selectedModel?.name })] }) }), /* @__PURE__ */ jsxs(ModelSelectorContent, { children: [/* @__PURE__ */ jsx(ModelSelectorInput, { placeholder: "Search models..." }), /* @__PURE__ */ jsxs(ModelSelectorList, { children: [/* @__PURE__ */ jsx(ModelSelectorEmpty, { children: "No models found." }), modelGroups?.map((chef) => /* @__PURE__ */ jsx(ModelSelectorGroup, {
197
- heading: chef,
198
- children: allowedModels.filter((m) => m.chef === chef).map((m) => /* @__PURE__ */ jsxs(ModelSelectorItem, {
199
- onSelect: () => {
200
- setModel(m.name);
201
- onModelChange?.(m);
202
- setModelSelectorOpen(false);
203
- },
204
- value: m.name,
205
- children: [
206
- /* @__PURE__ */ jsx(ModelSelectorLogo, { provider: m.chefSlug }),
207
- /* @__PURE__ */ jsx(ModelSelectorName, { children: m.name }),
208
- /* @__PURE__ */ jsx(ModelSelectorLogoGroup, { children: m.providers.map((provider) => /* @__PURE__ */ jsx(ModelSelectorLogo, { provider }, provider)) }),
209
- selectedModel?.name === m.name ? /* @__PURE__ */ jsx(CheckIcon, { className: "ml-auto size-4" }) : /* @__PURE__ */ jsx("div", { className: "ml-auto size-4" })
210
- ]
211
- }, m.name))
212
- }, chef))] })] })]
213
- })] })]
214
- });
215
- }
216
- //#endregion
217
- //#region src/features/chat/queries/use-get-conversation-query.ts
218
- async function getConversation({ client, chatId, actorId, conversationId }) {
219
- if (!conversationId) {
220
- const { data: newConversation, error } = await client.chats.conversations.create({
221
- path: { chatId },
222
- body: { actorId }
223
- });
224
- if (error) throw new Error("error" in error ? error.error : "Failed to create conversation");
225
- useChatStore.setState({
226
- ...useChatStore.getState(),
227
- selectedConversationId: newConversation._id
228
- });
229
- return newConversation;
230
- }
231
- const { data, error } = await client.chats.conversations.get({ path: {
232
- chatId,
233
- conversationId
234
- } });
235
- if (error) throw new Error("error" in error ? error.error : "Failed to fetch conversation");
236
- return data;
237
- }
238
- function getConversationQueryConfig({ chatId, conversationId, client, actorId }) {
239
- return {
240
- queryKey: chatQueryKeys.conversation(chatId, conversationId),
241
- queryFn: () => getConversation({
242
- client,
243
- chatId,
244
- conversationId,
245
- actorId
246
- })
247
- };
248
- }
249
- function useGetConversationQuery({ chatId, conversationId }) {
250
- const client = useApiClient();
251
- const { context } = useElementConfig();
252
- return useQuery({
253
- ...getConversationQueryConfig({
254
- chatId,
255
- conversationId,
256
- client,
257
- actorId: context?.actor?.id ?? ""
258
- }),
259
- enabled: !!chatId,
260
- staleTime: 200
261
- });
262
- }
263
- //#endregion
264
- //#region src/features/chat/chat-main/use-initial-messages.tsx
265
- function useInitialMessages() {
266
- const { selectedConversationId } = useChatStore();
267
- const { chatId } = useElementComponent();
268
- const { data } = useGetChatQuery({ chatId });
269
- const { data: conversation } = useGetConversationQuery({
270
- chatId,
271
- conversationId: selectedConversationId
272
- });
273
- const conversationMessages = useMemo(() => {
274
- if (!selectedConversationId) return void 0;
275
- return conversation?.messages?.map((msg) => {
276
- return {
277
- id: msg.id,
278
- role: msg.role,
279
- parts: msg.parts.map((p) => ({
280
- type: "text",
281
- text: p.text ?? ""
282
- })),
283
- metadata: msg
284
- };
285
- });
286
- }, [conversation, selectedConversationId]);
287
- return useMemo(() => {
288
- return [...getInitialMessagesFromStrings(data?.chatBaseSettings?.initialChatMessages ?? []), ...conversationMessages ?? []];
289
- }, [data?.chatBaseSettings?.initialChatMessages, conversationMessages]);
290
- }
291
- //#endregion
292
- //#region src/features/chat/chat-main/use-chat.tsx
293
- function useChat$1() {
294
- const client = useApiClient();
295
- const { config, component } = useElement();
296
- const { selectedConversationId, conversationType } = useChatStore();
297
- const initialMessages = useInitialMessages();
298
- const useChatResult = useChat({
299
- messages: initialMessages,
300
- transport: new DefaultChatTransport({
301
- prepareSendMessagesRequest: ({ body, headers, credentials, id, messages, trigger, messageId }) => {
302
- return {
303
- api: client.getUrl("chats.conversations.completion", {
304
- chatId: component.chatId,
305
- conversationId: body?.conversationId || "new"
306
- }),
307
- body: {
308
- ...body,
309
- id,
310
- messages,
311
- trigger,
312
- messageId
313
- },
314
- headers,
315
- credentials
316
- };
317
- },
318
- headers: { ...config.api?.headers }
319
- })
320
- });
321
- useEffect(() => {
322
- if (conversationType === "history" || !selectedConversationId) {
323
- useChatResult.stop();
324
- useChatResult.setMessages(initialMessages);
325
- }
326
- }, [
327
- conversationType,
328
- selectedConversationId,
329
- initialMessages
330
- ]);
331
- return useChatResult;
332
- }
333
- //#endregion
334
- //#region src/features/chat/chat-main/chat-main.tsx
335
- function ChatMain() {
336
- const queryClient = useQueryClient();
337
- const client = useApiClient();
338
- const { chatId } = useElementComponent();
339
- const { context } = useElementConfig();
340
- const { selectedConversationId } = useChatStore();
341
- const { data: conversation } = useGetConversationQuery({
342
- chatId,
343
- conversationId: selectedConversationId
344
- });
345
- const { messages, sendMessage, status } = useChat$1();
346
- const promptInputRef = useRef(null);
347
- useEffect(() => {
348
- promptInputRef.current?.focus();
349
- }, [selectedConversationId]);
350
- const handleSubmit = async (message) => {
351
- let conversationId = conversation?._id;
352
- if (!conversation) conversationId = (await queryClient.fetchQuery({ ...getConversationQueryConfig({
353
- chatId,
354
- conversationId: selectedConversationId,
355
- client,
356
- actorId: context?.actor?.id ?? ""
357
- }) }))._id;
358
- sendMessage({ text: message.text }, { body: { conversationId } });
359
- };
360
- const lastMessage = messages[messages.length - 1];
361
- const isWaitingForContent = status === "submitted" || status === "streaming" && lastMessage?.role === "assistant" && !lastMessage.parts.some((part) => part.type === "text" && part.text.length > 0);
362
- return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(Conversation, { children: [/* @__PURE__ */ jsxs(ConversationContent, { children: [/* @__PURE__ */ jsx(ChatMessage, {
363
- messages,
364
- status
365
- }), isWaitingForContent && /* @__PURE__ */ jsx(DotsLoader, {})] }), /* @__PURE__ */ jsx(ConversationScrollButton, {})] }), /* @__PURE__ */ jsx("div", {
366
- className: "m-4 my-2",
367
- children: /* @__PURE__ */ jsx(ChatPromptInput, {
368
- ref: promptInputRef,
369
- chatId,
370
- onSubmit: handleSubmit,
371
- status
372
- })
373
- })] });
374
- }
375
- ChatMain.displayName = "ChatMain";
376
- //#endregion
377
- //#region src/features/chat/chat-card.tsx
378
- function ChatCard() {
379
- const { t } = useTranslation();
380
- const { chatId } = useElementComponent();
381
- const { tab, selectedConversationId, conversationType } = useChatStore();
382
- useListConversationsQuery({ chatId });
383
- const { isLoading, data: chat } = useGetChatQuery({ chatId });
384
- const { isLoading: isConversationLoading } = useGetConversationQuery({
385
- chatId,
386
- conversationId: selectedConversationId
387
- });
388
- const canCreateMessage = chat?.chatModelSettings?.allowedModels && chat?.chatModelSettings?.allowedModels.length > 0;
389
- if (!canCreateMessage && chat?.chatBaseSettings?.hideChatWhenInsufficientCredits) return null;
390
- return /* @__PURE__ */ jsxs(Card, {
391
- className: "min-w-[320px] h-[640px] w-[400px] flex flex-col relative p-0 rounded-lg gap-0",
392
- children: [
393
- isLoading && /* @__PURE__ */ jsx("div", {
394
- className: "absolute inset-0 flex items-center justify-center z-10 bg-card rounded-lg",
395
- children: /* @__PURE__ */ jsx(DotsLoader, {})
396
- }),
397
- /* @__PURE__ */ jsx(ChatHeader, { chatId }),
398
- conversationType === "history" && isConversationLoading && /* @__PURE__ */ jsx("div", {
399
- className: "flex-1 flex items-center justify-center z-10 bg-card rounded-lg",
400
- children: /* @__PURE__ */ jsx(DotsLoader, {})
401
- }),
402
- !isLoading && (conversationType === "new" || !isConversationLoading) && /* @__PURE__ */ jsxs("div", {
403
- className: tab !== "chat" ? "hidden" : "flex flex-col flex-1 min-h-0",
404
- children: [conversationType === "history" && isConversationLoading && /* @__PURE__ */ jsx("div", {
405
- className: "absolute inset-0 flex items-center justify-center z-10 bg-card rounded-lg",
406
- children: /* @__PURE__ */ jsx(DotsLoader, {})
407
- }), canCreateMessage ? /* @__PURE__ */ jsx(ChatMain, {}) : /* @__PURE__ */ jsx("div", {
408
- className: "m-4 h-full flex items-center justify-center",
409
- children: /* @__PURE__ */ jsx(Text, {
410
- variant: "paragraph1",
411
- color: "muted",
412
- className: "text-center font-light italic",
413
- children: t("chat-card.insufficient-credits-error")
414
- })
415
- })]
416
- }),
417
- !isLoading && tab === "history" && /* @__PURE__ */ jsx(ChatHistory, {})
418
- ]
419
- });
420
- }
421
- //#endregion
422
- //#region src/features/chat/chat-element.tsx
423
- const { ElementProvider, useElement, useElementConfig, useElementComponent, useElementCallbacks } = createElementContext({ name: "ChatSDK.Chat" });
424
- function ChatElement(props) {
425
- const { config, callbacks, ...componentProps } = useMergeElementConfig({
426
- props,
427
- name: "ChatSDK.Chat"
428
- });
429
- if (!componentProps.chatId) return null;
430
- return /* @__PURE__ */ jsx(ElementProvider, {
431
- config,
432
- component: componentProps,
433
- callbacks,
434
- children: /* @__PURE__ */ jsx(ChatCard, {})
435
- });
436
- }
437
- ChatElement.displayName = "ChatSDK.ChatElement";
438
- //#endregion
439
- export { useGetChatQuery as _, useElementComponent as a, ChatMain as c, getConversationQueryConfig as d, useGetConversationQuery as f, ChatHeader as g, useListConversationsQuery as h, useElementCallbacks as i, useChat$1 as l, ChatHistory as m, ElementProvider as n, useElementConfig as o, ChatPromptInput as p, useElement as r, ChatCard as s, ChatElement as t, useInitialMessages as u, useApiClient as v };
440
-
441
- //# sourceMappingURL=chat-element-CCsDDFif.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-element-CCsDDFif.js","names":["useChat","useAiChat","useChat"],"sources":["../src/features/data-fetching/use-api-client.ts","../src/features/chat/queries/use-get-chat-query.ts","../src/features/chat/chat-header/chat-header.tsx","../src/features/chat/queries/use-list-conversations-query.ts","../src/features/chat/chat-history/chat-history.tsx","../src/features/chat/chat-prompt-input.tsx","../src/features/chat/queries/use-get-conversation-query.ts","../src/features/chat/chat-main/use-initial-messages.tsx","../src/features/chat/chat-main/use-chat.tsx","../src/features/chat/chat-main/chat-main.tsx","../src/features/chat/chat-card.tsx","../src/features/chat/chat-element.tsx"],"sourcesContent":["import { getClient } from \"@chatsdk-dev/api-client\";\nimport { useElementConfig } from \"../chat/chat-element\";\n\nexport function useApiClient() {\n const { api } = useElementConfig();\n return getClient(api ?? {});\n}\n","import { useQuery } from \"@tanstack/react-query\";\n\nimport { useApiClient } from \"../../data-fetching/use-api-client\";\nimport { chatQueryKeys } from \"./query-keys\";\n\ninterface UseGetChatQueryProps {\n chatId?: string;\n}\n\nexport function useGetChatQuery({ chatId }: UseGetChatQueryProps) {\n const client = useApiClient();\n\n return useQuery({\n queryKey: chatQueryKeys.get(chatId),\n queryFn: async () => {\n const { data, error } = await client.chats.get({\n path: { chatId: chatId! },\n });\n\n if (error) {\n throw new Error(\n \"error\" in error ? error.error : \"Failed to fetch chat\",\n );\n }\n\n return data;\n },\n enabled: !!chatId,\n });\n}\n","import { ArrowLeft } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { Button } from \"@chatsdk-dev/ui/atoms/button\";\nimport { CardHeader, CardTitle } from \"@chatsdk-dev/ui/atoms/card\";\nimport { Text } from \"@chatsdk-dev/ui/atoms/typography/text\";\n\nimport { useGetChatQuery } from \"../queries/use-get-chat-query\";\nimport { useChatStore } from \"../store\";\nimport { ChatMenu } from \"./chat-menu\";\n\ninterface ChatTitleProps {\n chatId?: string;\n}\n\nexport function ChatHeader({ chatId }: ChatTitleProps) {\n const { t } = useTranslation();\n const { tab, setTab } = useChatStore();\n const { data } = useGetChatQuery({ chatId });\n // TODO: fix initial loading visuals here (uncached image)\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, setImgLoaded] = useState(false);\n\n const name = data?.chatAppearanceSettings?.displayName;\n const iconUrl = data?.chatAppearanceSettings?.icon?.url;\n\n return (\n <CardHeader className=\"flex justify-between items-center h-14 bg-slate-900 dark:bg-zinc-400 rounded-t-lg px-4!\">\n <CardTitle>\n {tab === \"chat\" && (\n <div className=\"flex items-center gap-2\">\n {iconUrl && (\n <img\n src={iconUrl}\n alt=\"Chat Icon\"\n className=\"inline-block w-4 h-4\"\n onLoad={() => setImgLoaded(true)}\n />\n )}\n <Text\n variant=\"h1\"\n className=\"text-sm text-background flex items-center gap-2\"\n >\n {name}\n </Text>\n </div>\n )}\n {tab === \"history\" && (\n <div className=\"flex items-center gap-2\">\n <Button\n onClick={() => setTab(\"chat\")}\n variant=\"transparent\"\n className=\"p-0!\"\n >\n <ArrowLeft className=\"size-4\" />\n </Button>\n <Text\n variant=\"h1\"\n className=\"text-sm text-background flex items-center gap-2\"\n >\n {t(\"header.history-tab-label\")}\n </Text>\n </div>\n )}\n </CardTitle>\n {tab === \"chat\" && <ChatMenu />}\n </CardHeader>\n );\n}\n","import { useQuery } from \"@tanstack/react-query\";\n\nimport { useApiClient } from \"../../data-fetching/use-api-client\";\nimport { useElementConfig } from \"../chat-element\";\nimport { chatQueryKeys } from \"./query-keys\";\n\ninterface UseListConversationsQueryProps {\n chatId: string;\n}\n\nexport function useListConversationsQuery({\n chatId,\n}: UseListConversationsQueryProps) {\n const client = useApiClient();\n const { context } = useElementConfig();\n\n return useQuery({\n queryKey: chatQueryKeys.listConversations(chatId),\n queryFn: async () => {\n const { data, error } = await client.chats.conversations.list({\n path: { chatId },\n query: { actorId: context?.actor?.id ?? \"\" },\n });\n\n if (error) {\n throw new Error(\n \"error\" in error ? error.error : \"Failed to fetch conversations\",\n );\n }\n\n return data.conversations.reverse();\n },\n enabled: !!chatId,\n });\n}\n","import { useQueryClient } from \"@tanstack/react-query\";\nimport { Plus } from \"lucide-react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { Button } from \"@chatsdk-dev/ui/atoms/button\";\nimport { DotsLoader } from \"@chatsdk-dev/ui/atoms/dots-loader\";\nimport { Text } from \"@chatsdk-dev/ui/atoms/typography/text\";\n\nimport { renderRelativeTime } from \"../../../common/utils\";\nimport { useElementComponent } from \"../chat-element\";\nimport { chatQueryKeys } from \"../queries/query-keys\";\nimport { useListConversationsQuery } from \"../queries/use-list-conversations-query\";\nimport { useChatStore } from \"../store\";\nimport { ChatHistoryEmpty } from \"./chat-history-empty\";\n\nexport function ChatHistory() {\n const { t, i18n } = useTranslation(\"chat\", { keyPrefix: \"history\" });\n const queryClient = useQueryClient();\n const { chatId } = useElementComponent();\n const { data, isLoading } = useListConversationsQuery({ chatId });\n const { setSelectedConversationId, setTab, setConversationType } =\n useChatStore();\n\n if (isLoading) {\n return (\n <div className=\"w-full h-full flex items-center justify-center\">\n <DotsLoader />\n </div>\n );\n }\n\n return (\n <div className=\"flex-1 min-h-0 flex flex-col gap-1 overflow-y-auto gap-2 p-2\">\n {data?.length === 0 ? (\n <ChatHistoryEmpty />\n ) : (\n data?.map((conversation, index) => (\n <Button\n key={conversation._id}\n variant=\"ghost\"\n className=\"flex flex-col items-start justify-center gap-2 px-3 py-2 h-auto text-left\"\n onClick={() => {\n // invalidate the conversation query to make sure last conversation messages are loaded\n queryClient.invalidateQueries({\n queryKey: chatQueryKeys.conversation(chatId, conversation._id),\n });\n setSelectedConversationId(conversation._id);\n setTab(\"chat\");\n setConversationType(\"history\");\n }}\n >\n <div className=\"self-stretch flex justify-between gap-1\">\n <Text className=\"truncate text-sm\">\n {data.length - index}:{\" \"}\n {conversation.title ?? t(\"unitled-conversation\")}\n </Text>\n <Text variant=\"tiny\" color=\"muted\">\n {renderRelativeTime({\n date: conversation._creationTime,\n locale: i18n.language,\n })}\n </Text>\n </div>\n <Text\n className=\"flex-1 min-w-0 max-w-full truncate\"\n variant=\"paragraph2\"\n color=\"muted\"\n >\n {conversation.summary}\n </Text>\n </Button>\n ))\n )}\n <Button\n className=\"absolute bottom-6 left-1/2 -translate-x-1/2\"\n onClick={() => {\n setConversationType(\"new\");\n setSelectedConversationId();\n setTab(\"chat\");\n }}\n >\n <Plus className=\"size-4\" />\n {t(\"new-conversation\")}\n </Button>\n </div>\n );\n}\n","\"use client\";\n\nimport type { ChatStatus } from \"ai\";\nimport { CheckIcon, GlobeIcon } from \"lucide-react\";\nimport { useState } from \"react\";\n\nimport {\n PromptInput,\n PromptInputButton,\n PromptInputMessage,\n PromptInputSubmit,\n PromptInputTextarea,\n PromptInputTools,\n} from \"@chatsdk-dev/ui/molecules/ai/prompt-input\";\n\nimport type { ChatModelSettings } from \"@chatsdk-dev/api-client\";\nimport {\n ModelSelector,\n ModelSelectorContent,\n ModelSelectorEmpty,\n ModelSelectorGroup,\n ModelSelectorInput,\n ModelSelectorItem,\n ModelSelectorList,\n ModelSelectorLogo,\n ModelSelectorLogoGroup,\n ModelSelectorName,\n ModelSelectorTrigger,\n} from \"@chatsdk-dev/ui/molecules/ai/model-selector\";\n\nimport { useGetChatQuery } from \"./queries/use-get-chat-query\";\n\ninterface ChatPromptInputProps {\n chatId?: string;\n onSubmit: (\n message: PromptInputMessage,\n event: React.SubmitEvent<HTMLFormElement>,\n ) => void;\n onModelChange?: (model: ChatModelSettings[\"defaultModel\"]) => void;\n onWebSearchChange?: (webSearch: boolean) => void;\n status: ChatStatus;\n ref: React.RefObject<HTMLTextAreaElement | null>;\n}\n\nexport function ChatPromptInput({\n chatId,\n onSubmit,\n onModelChange,\n status,\n ref,\n}: ChatPromptInputProps) {\n const { data } = useGetChatQuery({ chatId });\n const defaultModel = data?.chatModelSettings?.defaultModel;\n const allowedModels = data?.chatModelSettings?.allowedModels;\n\n const [input, setInput] = useState(\"\");\n const [model, setModel] = useState<string | undefined>(defaultModel?.name);\n const [modelSelectorOpen, setModelSelectorOpen] = useState(false);\n const [webSearch, setWebSearch] = useState(false);\n\n const selectedModel = allowedModels?.find((m) => m.name === model);\n const modelGroups = allowedModels?.map((m) => m.chef);\n\n const hasMultipleModels = allowedModels && allowedModels.length > 1;\n const hasActions = hasMultipleModels || true; // true because Search is always shown\n\n return (\n <div className=\"flex flex-col gap-1\">\n <PromptInput\n onSubmit={(message, event) => {\n onSubmit(message, event as React.SubmitEvent<HTMLFormElement>);\n setInput(\"\");\n }}\n >\n <PromptInputTextarea\n ref={ref}\n placeholder={data?.chatBaseSettings?.inputPlaceholder}\n onChange={(e) => setInput(e.target.value)}\n value={input}\n />\n <PromptInputSubmit\n className=\"m-1.5 self-end\"\n disabled={!input}\n status={status}\n />\n </PromptInput>\n\n {/* Actions row below the border */}\n {hasActions && (\n <PromptInputTools>\n <PromptInputButton\n variant={webSearch ? \"primary\" : \"ghost\"}\n onClick={() => setWebSearch(!webSearch)}\n >\n <GlobeIcon size={16} />\n <span>Search</span>\n </PromptInputButton>\n {hasMultipleModels && (\n <ModelSelector\n onOpenChange={setModelSelectorOpen}\n open={modelSelectorOpen}\n >\n <ModelSelectorTrigger>\n <PromptInputButton>\n {selectedModel?.chefSlug && (\n <ModelSelectorLogo provider={selectedModel.chefSlug} />\n )}\n <ModelSelectorName>{selectedModel?.name}</ModelSelectorName>\n </PromptInputButton>\n </ModelSelectorTrigger>\n <ModelSelectorContent>\n <ModelSelectorInput placeholder=\"Search models...\" />\n <ModelSelectorList>\n <ModelSelectorEmpty>No models found.</ModelSelectorEmpty>\n {modelGroups?.map((chef) => (\n <ModelSelectorGroup key={chef} heading={chef}>\n {allowedModels\n .filter((m) => m.chef === chef)\n .map((m) => (\n <ModelSelectorItem\n key={m.name}\n onSelect={() => {\n setModel(m.name);\n onModelChange?.(m);\n setModelSelectorOpen(false);\n }}\n value={m.name}\n >\n <ModelSelectorLogo provider={m.chefSlug} />\n <ModelSelectorName>{m.name}</ModelSelectorName>\n <ModelSelectorLogoGroup>\n {m.providers.map((provider) => (\n <ModelSelectorLogo\n key={provider}\n provider={provider}\n />\n ))}\n </ModelSelectorLogoGroup>\n {selectedModel?.name === m.name ? (\n <CheckIcon className=\"ml-auto size-4\" />\n ) : (\n <div className=\"ml-auto size-4\" />\n )}\n </ModelSelectorItem>\n ))}\n </ModelSelectorGroup>\n ))}\n </ModelSelectorList>\n </ModelSelectorContent>\n </ModelSelector>\n )}\n </PromptInputTools>\n )}\n </div>\n );\n}\n","import { useQuery } from \"@tanstack/react-query\";\n\nimport { ChatSDK } from \"@chatsdk-dev/api-client\";\n\nimport { useApiClient } from \"../../data-fetching/use-api-client\";\nimport { useElementConfig } from \"../chat-element\";\nimport { useChatStore } from \"../store\";\nimport { chatQueryKeys } from \"./query-keys\";\n\ninterface GetConversationParams {\n client: ChatSDK;\n chatId: string;\n actorId: string;\n conversationId?: string;\n}\n\nasync function getConversation({\n client,\n chatId,\n actorId,\n conversationId,\n}: GetConversationParams) {\n // create conversation if no conversation id is provided (conversation doesn't exist yet)\n if (!conversationId) {\n const { data: newConversation, error } =\n await client.chats.conversations.create({\n path: { chatId: chatId! },\n body: { actorId },\n });\n if (error) {\n throw new Error(\n \"error\" in error ? error.error : \"Failed to create conversation\",\n );\n }\n useChatStore.setState({\n ...useChatStore.getState(),\n selectedConversationId: newConversation._id,\n });\n return newConversation;\n }\n\n const { data, error } = await client.chats.conversations.get({\n path: { chatId, conversationId },\n });\n\n if (error) {\n throw new Error(\n \"error\" in error ? error.error : \"Failed to fetch conversation\",\n );\n }\n\n return data;\n}\n\ninterface GetConversationQueryConfigParams {\n chatId: string;\n conversationId?: string;\n actorId: string;\n client: ChatSDK;\n}\n\nexport function getConversationQueryConfig({\n chatId,\n conversationId,\n client,\n actorId,\n}: GetConversationQueryConfigParams) {\n return {\n queryKey: chatQueryKeys.conversation(chatId, conversationId),\n queryFn: () => getConversation({ client, chatId, conversationId, actorId }),\n };\n}\n\ninterface UseGetConversationQueryProps {\n chatId?: string;\n conversationId?: string | null;\n}\n\nexport function useGetConversationQuery({\n chatId,\n conversationId,\n}: UseGetConversationQueryProps) {\n const client = useApiClient();\n const { context } = useElementConfig();\n\n return useQuery({\n ...getConversationQueryConfig({\n chatId: chatId!,\n conversationId: conversationId!,\n client,\n actorId: context?.actor?.id ?? \"\",\n }),\n enabled: !!chatId,\n staleTime: 200,\n });\n}\n","import { useMemo } from \"react\";\n\nimport { useElementComponent } from \"../chat-element\";\nimport { useGetChatQuery } from \"../queries/use-get-chat-query\";\nimport { useGetConversationQuery } from \"../queries/use-get-conversation-query\";\nimport { useChatStore } from \"../store\";\nimport { getInitialMessagesFromStrings } from \"../utils\";\n\nexport function useInitialMessages() {\n const { selectedConversationId } = useChatStore();\n const { chatId } = useElementComponent();\n const { data } = useGetChatQuery({ chatId });\n const { data: conversation } = useGetConversationQuery({\n chatId,\n conversationId: selectedConversationId,\n });\n\n const conversationMessages = useMemo(() => {\n if (!selectedConversationId) return undefined;\n\n return conversation?.messages?.map((msg) => {\n return {\n id: msg.id,\n role: msg.role as \"user\" | \"assistant\" | \"system\",\n parts: msg.parts.map((p) => ({\n type: \"text\" as const,\n text: p.text ?? \"\",\n })),\n metadata: msg,\n };\n });\n }, [conversation, selectedConversationId]);\n\n const initialMessages = useMemo(() => {\n const initialChatMessages = getInitialMessagesFromStrings(\n data?.chatBaseSettings?.initialChatMessages ?? [],\n );\n\n return [...initialChatMessages, ...(conversationMessages ?? [])];\n }, [data?.chatBaseSettings?.initialChatMessages, conversationMessages]);\n\n return initialMessages;\n}\n","\"use client\";\n\nimport { useChat as useAiChat } from \"@ai-sdk/react\";\nimport { DefaultChatTransport } from \"ai\";\nimport { useEffect } from \"react\";\n\nimport { useApiClient } from \"../../data-fetching/use-api-client\";\nimport { useElement } from \"../chat-element\";\nimport { useChatStore } from \"../store\";\nimport { useInitialMessages } from \"./use-initial-messages\";\n\nexport function useChat() {\n const client = useApiClient();\n const { config, component } = useElement();\n const { selectedConversationId, conversationType } = useChatStore();\n\n const initialMessages = useInitialMessages();\n\n const useChatResult = useAiChat({\n messages: initialMessages,\n\n transport: new DefaultChatTransport({\n prepareSendMessagesRequest: ({\n body,\n headers,\n credentials,\n id,\n messages,\n trigger,\n messageId,\n }) => {\n return {\n api: client.getUrl(\"chats.conversations.completion\", {\n chatId: component.chatId,\n conversationId: body?.conversationId || \"new\",\n }),\n body: {\n ...body,\n id,\n messages,\n trigger,\n messageId,\n },\n headers,\n credentials,\n };\n },\n headers: {\n ...config.api?.headers,\n },\n }),\n });\n\n useEffect(() => {\n if (conversationType === \"history\" || !selectedConversationId) {\n useChatResult.stop();\n useChatResult.setMessages(initialMessages);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [conversationType, selectedConversationId, initialMessages]);\n\n return useChatResult;\n}\n","\"use client\";\n\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { Fragment, useEffect, useRef } from \"react\";\n\nimport { DotsLoader } from \"@chatsdk-dev/ui/atoms/dots-loader\";\nimport {\n Conversation,\n ConversationContent,\n ConversationScrollButton,\n} from \"@chatsdk-dev/ui/molecules/ai/conversation\";\nimport type { PromptInputMessage } from \"@chatsdk-dev/ui/molecules/ai/prompt-input\";\nimport { ChatMessage } from \"@chatsdk-dev/ui/molecules/chat-message\";\n\nimport { useApiClient } from \"../../data-fetching/use-api-client\";\nimport { useElementComponent, useElementConfig } from \"../chat-element\";\nimport { ChatPromptInput } from \"../chat-prompt-input\";\nimport {\n getConversationQueryConfig,\n useGetConversationQuery,\n} from \"../queries/use-get-conversation-query\";\nimport { useChatStore } from \"../store\";\nimport { useChat } from \"./use-chat\";\n\nexport function ChatMain() {\n const queryClient = useQueryClient();\n const client = useApiClient();\n\n const { chatId } = useElementComponent();\n const { context } = useElementConfig();\n const { selectedConversationId } = useChatStore();\n const { data: conversation } = useGetConversationQuery({\n chatId,\n conversationId: selectedConversationId,\n });\n const { messages, sendMessage, status } = useChat();\n\n const promptInputRef = useRef<HTMLTextAreaElement>(null);\n\n // Focus when user starts a new conversation within the same chat\n useEffect(() => {\n promptInputRef.current?.focus();\n }, [selectedConversationId]);\n\n const handleSubmit = async (message: PromptInputMessage) => {\n let conversationId = conversation?._id;\n if (!conversation) {\n const newConversation = await queryClient.fetchQuery({\n ...getConversationQueryConfig({\n chatId,\n conversationId: selectedConversationId,\n client,\n actorId: context?.actor?.id ?? \"\",\n }),\n });\n conversationId = newConversation._id;\n }\n sendMessage({ text: message.text }, { body: { conversationId } });\n };\n\n // loading state until the last assistant message has some content\n const lastMessage = messages[messages.length - 1];\n const isWaitingForContent =\n status === \"submitted\" ||\n (status === \"streaming\" &&\n lastMessage?.role === \"assistant\" &&\n !lastMessage.parts.some(\n (part) => part.type === \"text\" && part.text.length > 0,\n ));\n\n return (\n <Fragment>\n <Conversation>\n <ConversationContent>\n <ChatMessage messages={messages} status={status} />\n {isWaitingForContent && <DotsLoader />}\n </ConversationContent>\n <ConversationScrollButton />\n </Conversation>\n <div className=\"m-4 my-2\">\n <ChatPromptInput\n ref={promptInputRef}\n chatId={chatId}\n onSubmit={handleSubmit}\n status={status}\n />\n </div>\n </Fragment>\n );\n}\n\nChatMain.displayName = \"ChatMain\";\n","import { useTranslation } from \"react-i18next\";\n\nimport { Card } from \"@chatsdk-dev/ui/atoms/card\";\nimport { DotsLoader } from \"@chatsdk-dev/ui/atoms/dots-loader\";\nimport { Text } from \"@chatsdk-dev/ui/atoms/typography/text\";\n\nimport { useElementComponent } from \"./chat-element\";\nimport { ChatHeader } from \"./chat-header/chat-header\";\nimport { ChatHistory } from \"./chat-history/chat-history\";\nimport { ChatMain } from \"./chat-main/chat-main\";\nimport { useGetChatQuery } from \"./queries/use-get-chat-query\";\nimport { useGetConversationQuery } from \"./queries/use-get-conversation-query\";\nimport { useListConversationsQuery } from \"./queries/use-list-conversations-query\";\nimport { useChatStore } from \"./store\";\n\nexport function ChatCard() {\n const { t } = useTranslation();\n const { chatId } = useElementComponent();\n const { tab, selectedConversationId, conversationType } = useChatStore();\n\n useListConversationsQuery({ chatId });\n const { isLoading, data: chat } = useGetChatQuery({ chatId });\n const { isLoading: isConversationLoading } = useGetConversationQuery({\n chatId,\n conversationId: selectedConversationId,\n });\n\n const canCreateMessage =\n chat?.chatModelSettings?.allowedModels &&\n chat?.chatModelSettings?.allowedModels.length > 0;\n\n if (\n !canCreateMessage &&\n chat?.chatBaseSettings?.hideChatWhenInsufficientCredits\n ) {\n return null;\n }\n\n return (\n <Card className=\"min-w-[320px] h-[640px] w-[400px] flex flex-col relative p-0 rounded-lg gap-0\">\n {isLoading && (\n <div className=\"absolute inset-0 flex items-center justify-center z-10 bg-card rounded-lg\">\n <DotsLoader />\n </div>\n )}\n\n <ChatHeader chatId={chatId} />\n {conversationType === \"history\" && isConversationLoading && (\n <div className=\"flex-1 flex items-center justify-center z-10 bg-card rounded-lg\">\n <DotsLoader />\n </div>\n )}\n {!isLoading && (conversationType === \"new\" || !isConversationLoading) && (\n <div\n className={tab !== \"chat\" ? \"hidden\" : \"flex flex-col flex-1 min-h-0\"}\n >\n {conversationType === \"history\" && isConversationLoading && (\n <div className=\"absolute inset-0 flex items-center justify-center z-10 bg-card rounded-lg\">\n <DotsLoader />\n </div>\n )}\n {canCreateMessage ? (\n <ChatMain />\n ) : (\n <div className=\"m-4 h-full flex items-center justify-center\">\n <Text\n variant=\"paragraph1\"\n color=\"muted\"\n className=\"text-center font-light italic\"\n >\n {t(\"chat-card.insufficient-credits-error\")}\n </Text>\n </div>\n )}\n </div>\n )}\n {!isLoading && tab === \"history\" && <ChatHistory />}\n </Card>\n );\n}\n","import { createElementContext } from \"../element/element-provider\";\nimport type { ElementConfig } from \"../element/types/config\";\nimport { useMergeElementConfig } from \"../element/use-element-config\";\nimport { ChatCard } from \"./chat-card\";\n\ntype ChatProps = { chatId: string };\ntype ChatData = { chatId: string };\ntype ChatElementProps = ElementConfig<ChatProps, ChatData>;\n\nexport const {\n ElementProvider,\n useElement,\n useElementConfig,\n useElementComponent,\n useElementCallbacks,\n} = createElementContext<ChatProps, ChatData>({ name: \"ChatSDK.Chat\" });\n\nexport function ChatElement(props: ChatElementProps) {\n const { config, callbacks, ...componentProps } = useMergeElementConfig({\n props,\n name: \"ChatSDK.Chat\",\n });\n\n if (!componentProps.chatId) {\n // TODO: log here\n return null;\n }\n\n return (\n <ElementProvider\n config={config}\n component={componentProps}\n callbacks={callbacks}\n >\n <ChatCard />\n </ElementProvider>\n );\n}\n\nChatElement.displayName = \"ChatSDK.ChatElement\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAGA,SAAgB,eAAe;CAC7B,MAAM,EAAE,QAAQ,kBAAkB;AAClC,QAAO,UAAU,OAAO,EAAE,CAAC;;;;ACI7B,SAAgB,gBAAgB,EAAE,UAAgC;CAChE,MAAM,SAAS,cAAc;AAE7B,QAAO,SAAS;EACd,UAAU,cAAc,IAAI,OAAO;EACnC,SAAS,YAAY;GACnB,MAAM,EAAE,MAAM,UAAU,MAAM,OAAO,MAAM,IAAI,EAC7C,MAAM,EAAU,QAAS,EAC1B,CAAC;AAEF,OAAI,MACF,OAAM,IAAI,MACR,WAAW,QAAQ,MAAM,QAAQ,uBAClC;AAGH,UAAO;;EAET,SAAS,CAAC,CAAC;EACZ,CAAC;;;;ACZJ,SAAgB,WAAW,EAAE,UAA0B;CACrD,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,EAAE,KAAK,WAAW,cAAc;CACtC,MAAM,EAAE,SAAS,gBAAgB,EAAE,QAAQ,CAAC;CAG5C,MAAM,CAAC,GAAG,gBAAgB,SAAS,MAAM;CAEzC,MAAM,OAAO,MAAM,wBAAwB;CAC3C,MAAM,UAAU,MAAM,wBAAwB,MAAM;AAEpD,QACE,qBAAC,YAAD;EAAY,WAAU;YAAtB,CACE,qBAAC,WAAD,EAAA,UAAA,CACG,QAAQ,UACP,qBAAC,OAAD;GAAK,WAAU;aAAf,CACG,WACC,oBAAC,OAAD;IACE,KAAK;IACL,KAAI;IACJ,WAAU;IACV,cAAc,aAAa,KAAK;IAChC,CAAA,EAEJ,oBAAC,MAAD;IACE,SAAQ;IACR,WAAU;cAET;IACI,CAAA,CACH;MAEP,QAAQ,aACP,qBAAC,OAAD;GAAK,WAAU;aAAf,CACE,oBAAC,QAAD;IACE,eAAe,OAAO,OAAO;IAC7B,SAAQ;IACR,WAAU;cAEV,oBAAC,WAAD,EAAW,WAAU,UAAW,CAAA;IACzB,CAAA,EACT,oBAAC,MAAD;IACE,SAAQ;IACR,WAAU;cAET,EAAE,2BAA2B;IACzB,CAAA,CACH;KAEE,EAAA,CAAA,EACX,QAAQ,UAAU,oBAAC,UAAD,EAAY,CAAA,CACpB;;;;;ACzDjB,SAAgB,0BAA0B,EACxC,UACiC;CACjC,MAAM,SAAS,cAAc;CAC7B,MAAM,EAAE,YAAY,kBAAkB;AAEtC,QAAO,SAAS;EACd,UAAU,cAAc,kBAAkB,OAAO;EACjD,SAAS,YAAY;GACnB,MAAM,EAAE,MAAM,UAAU,MAAM,OAAO,MAAM,cAAc,KAAK;IAC5D,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS,SAAS,OAAO,MAAM,IAAI;IAC7C,CAAC;AAEF,OAAI,MACF,OAAM,IAAI,MACR,WAAW,QAAQ,MAAM,QAAQ,gCAClC;AAGH,UAAO,KAAK,cAAc,SAAS;;EAErC,SAAS,CAAC,CAAC;EACZ,CAAC;;;;AClBJ,SAAgB,cAAc;CAC5B,MAAM,EAAE,GAAG,SAAS,eAAe,QAAQ,EAAE,WAAW,WAAW,CAAC;CACpE,MAAM,cAAc,gBAAgB;CACpC,MAAM,EAAE,WAAW,qBAAqB;CACxC,MAAM,EAAE,MAAM,cAAc,0BAA0B,EAAE,QAAQ,CAAC;CACjE,MAAM,EAAE,2BAA2B,QAAQ,wBACzC,cAAc;AAEhB,KAAI,UACF,QACE,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,YAAD,EAAc,CAAA;EACV,CAAA;AAIV,QACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACG,MAAM,WAAW,IAChB,oBAAC,kBAAD,EAAoB,CAAA,GAEpB,MAAM,KAAK,cAAc,UACvB,qBAAC,QAAD;GAEE,SAAQ;GACR,WAAU;GACV,eAAe;AAEb,gBAAY,kBAAkB,EAC5B,UAAU,cAAc,aAAa,QAAQ,aAAa,IAAI,EAC/D,CAAC;AACF,8BAA0B,aAAa,IAAI;AAC3C,WAAO,OAAO;AACd,wBAAoB,UAAU;;aAXlC,CAcE,qBAAC,OAAD;IAAK,WAAU;cAAf,CACE,qBAAC,MAAD;KAAM,WAAU;eAAhB;MACG,KAAK,SAAS;MAAM;MAAE;MACtB,aAAa,SAAS,EAAE,uBAAuB;MAC3C;QACP,oBAAC,MAAD;KAAM,SAAQ;KAAO,OAAM;eACxB,mBAAmB;MAClB,MAAM,aAAa;MACnB,QAAQ,KAAK;MACd,CAAC;KACG,CAAA,CACH;OACN,oBAAC,MAAD;IACE,WAAU;IACV,SAAQ;IACR,OAAM;cAEL,aAAa;IACT,CAAA,CACA;KAhCF,aAAa,IAgCX,CACT,EAEJ,qBAAC,QAAD;GACE,WAAU;GACV,eAAe;AACb,wBAAoB,MAAM;AAC1B,+BAA2B;AAC3B,WAAO,OAAO;;aALlB,CAQE,oBAAC,MAAD,EAAM,WAAU,UAAW,CAAA,EAC1B,EAAE,mBAAmB,CACf;KACL;;;;;ACxCV,SAAgB,gBAAgB,EAC9B,QACA,UACA,eACA,QACA,OACuB;CACvB,MAAM,EAAE,SAAS,gBAAgB,EAAE,QAAQ,CAAC;CAC5C,MAAM,eAAe,MAAM,mBAAmB;CAC9C,MAAM,gBAAgB,MAAM,mBAAmB;CAE/C,MAAM,CAAC,OAAO,YAAY,SAAS,GAAG;CACtC,MAAM,CAAC,OAAO,YAAY,SAA6B,cAAc,KAAK;CAC1E,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,MAAM;CACjE,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;CAEjD,MAAM,gBAAgB,eAAe,MAAM,MAAM,EAAE,SAAS,MAAM;CAClE,MAAM,cAAc,eAAe,KAAK,MAAM,EAAE,KAAK;CAErD,MAAM,oBAAoB,iBAAiB,cAAc,SAAS;CAClE,MAAM,aAAa,qBAAqB;AAExC,QACE,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,qBAAC,aAAD;GACE,WAAW,SAAS,UAAU;AAC5B,aAAS,SAAS,MAA4C;AAC9D,aAAS,GAAG;;aAHhB,CAME,oBAAC,qBAAD;IACO;IACL,aAAa,MAAM,kBAAkB;IACrC,WAAW,MAAM,SAAS,EAAE,OAAO,MAAM;IACzC,OAAO;IACP,CAAA,EACF,oBAAC,mBAAD;IACE,WAAU;IACV,UAAU,CAAC;IACH;IACR,CAAA,CACU;MAGb,cACC,qBAAC,kBAAD,EAAA,UAAA,CACE,qBAAC,mBAAD;GACE,SAAS,YAAY,YAAY;GACjC,eAAe,aAAa,CAAC,UAAU;aAFzC,CAIE,oBAAC,WAAD,EAAW,MAAM,IAAM,CAAA,EACvB,oBAAC,QAAD,EAAA,UAAM,UAAa,CAAA,CACD;MACnB,qBACC,qBAAC,eAAD;GACE,cAAc;GACd,MAAM;aAFR,CAIE,oBAAC,sBAAD,EAAA,UACE,qBAAC,mBAAD,EAAA,UAAA,CACG,eAAe,YACd,oBAAC,mBAAD,EAAmB,UAAU,cAAc,UAAY,CAAA,EAEzD,oBAAC,mBAAD,EAAA,UAAoB,eAAe,MAAyB,CAAA,CAC1C,EAAA,CAAA,EACC,CAAA,EACvB,qBAAC,sBAAD,EAAA,UAAA,CACE,oBAAC,oBAAD,EAAoB,aAAY,oBAAqB,CAAA,EACrD,qBAAC,mBAAD,EAAA,UAAA,CACE,oBAAC,oBAAD,EAAA,UAAoB,oBAAqC,CAAA,EACxD,aAAa,KAAK,SACjB,oBAAC,oBAAD;IAA+B,SAAS;cACrC,cACE,QAAQ,MAAM,EAAE,SAAS,KAAK,CAC9B,KAAK,MACJ,qBAAC,mBAAD;KAEE,gBAAgB;AACd,eAAS,EAAE,KAAK;AAChB,sBAAgB,EAAE;AAClB,2BAAqB,MAAM;;KAE7B,OAAO,EAAE;eAPX;MASE,oBAAC,mBAAD,EAAmB,UAAU,EAAE,UAAY,CAAA;MAC3C,oBAAC,mBAAD,EAAA,UAAoB,EAAE,MAAyB,CAAA;MAC/C,oBAAC,wBAAD,EAAA,UACG,EAAE,UAAU,KAAK,aAChB,oBAAC,mBAAD,EAEY,UACV,EAFK,SAEL,CACF,EACqB,CAAA;MACxB,eAAe,SAAS,EAAE,OACzB,oBAAC,WAAD,EAAW,WAAU,kBAAmB,CAAA,GAExC,oBAAC,OAAD,EAAK,WAAU,kBAAmB,CAAA;MAElB;OAvBb,EAAE,KAuBW,CACpB;IACe,EA9BI,KA8BJ,CACrB,CACgB,EAAA,CAAA,CACC,EAAA,CAAA,CACT;KAED,EAAA,CAAA,CAEjB;;;;;ACzIV,eAAe,gBAAgB,EAC7B,QACA,QACA,SACA,kBACwB;AAExB,KAAI,CAAC,gBAAgB;EACnB,MAAM,EAAE,MAAM,iBAAiB,UAC7B,MAAM,OAAO,MAAM,cAAc,OAAO;GACtC,MAAM,EAAU,QAAS;GACzB,MAAM,EAAE,SAAS;GAClB,CAAC;AACJ,MAAI,MACF,OAAM,IAAI,MACR,WAAW,QAAQ,MAAM,QAAQ,gCAClC;AAEH,eAAa,SAAS;GACpB,GAAG,aAAa,UAAU;GAC1B,wBAAwB,gBAAgB;GACzC,CAAC;AACF,SAAO;;CAGT,MAAM,EAAE,MAAM,UAAU,MAAM,OAAO,MAAM,cAAc,IAAI,EAC3D,MAAM;EAAE;EAAQ;EAAgB,EACjC,CAAC;AAEF,KAAI,MACF,OAAM,IAAI,MACR,WAAW,QAAQ,MAAM,QAAQ,+BAClC;AAGH,QAAO;;AAUT,SAAgB,2BAA2B,EACzC,QACA,gBACA,QACA,WACmC;AACnC,QAAO;EACL,UAAU,cAAc,aAAa,QAAQ,eAAe;EAC5D,eAAe,gBAAgB;GAAE;GAAQ;GAAQ;GAAgB;GAAS,CAAC;EAC5E;;AAQH,SAAgB,wBAAwB,EACtC,QACA,kBAC+B;CAC/B,MAAM,SAAS,cAAc;CAC7B,MAAM,EAAE,YAAY,kBAAkB;AAEtC,QAAO,SAAS;EACd,GAAG,2BAA2B;GACpB;GACQ;GAChB;GACA,SAAS,SAAS,OAAO,MAAM;GAChC,CAAC;EACF,SAAS,CAAC,CAAC;EACX,WAAW;EACZ,CAAC;;;;ACtFJ,SAAgB,qBAAqB;CACnC,MAAM,EAAE,2BAA2B,cAAc;CACjD,MAAM,EAAE,WAAW,qBAAqB;CACxC,MAAM,EAAE,SAAS,gBAAgB,EAAE,QAAQ,CAAC;CAC5C,MAAM,EAAE,MAAM,iBAAiB,wBAAwB;EACrD;EACA,gBAAgB;EACjB,CAAC;CAEF,MAAM,uBAAuB,cAAc;AACzC,MAAI,CAAC,uBAAwB,QAAO,KAAA;AAEpC,SAAO,cAAc,UAAU,KAAK,QAAQ;AAC1C,UAAO;IACL,IAAI,IAAI;IACR,MAAM,IAAI;IACV,OAAO,IAAI,MAAM,KAAK,OAAO;KAC3B,MAAM;KACN,MAAM,EAAE,QAAQ;KACjB,EAAE;IACH,UAAU;IACX;IACD;IACD,CAAC,cAAc,uBAAuB,CAAC;AAU1C,QARwB,cAAc;AAKpC,SAAO,CAAC,GAJoB,8BAC1B,MAAM,kBAAkB,uBAAuB,EAAE,CAClD,EAE+B,GAAI,wBAAwB,EAAE,CAAE;IAC/D,CAAC,MAAM,kBAAkB,qBAAqB,qBAAqB,CAAC;;;;AC5BzE,SAAgBA,YAAU;CACxB,MAAM,SAAS,cAAc;CAC7B,MAAM,EAAE,QAAQ,cAAc,YAAY;CAC1C,MAAM,EAAE,wBAAwB,qBAAqB,cAAc;CAEnE,MAAM,kBAAkB,oBAAoB;CAE5C,MAAM,gBAAgBC,QAAU;EAC9B,UAAU;EAEV,WAAW,IAAI,qBAAqB;GAClC,6BAA6B,EAC3B,MACA,SACA,aACA,IACA,UACA,SACA,gBACI;AACJ,WAAO;KACL,KAAK,OAAO,OAAO,kCAAkC;MACnD,QAAQ,UAAU;MAClB,gBAAgB,MAAM,kBAAkB;MACzC,CAAC;KACF,MAAM;MACJ,GAAG;MACH;MACA;MACA;MACA;MACD;KACD;KACA;KACD;;GAEH,SAAS,EACP,GAAG,OAAO,KAAK,SAChB;GACF,CAAC;EACH,CAAC;AAEF,iBAAgB;AACd,MAAI,qBAAqB,aAAa,CAAC,wBAAwB;AAC7D,iBAAc,MAAM;AACpB,iBAAc,YAAY,gBAAgB;;IAG3C;EAAC;EAAkB;EAAwB;EAAgB,CAAC;AAE/D,QAAO;;;;ACrCT,SAAgB,WAAW;CACzB,MAAM,cAAc,gBAAgB;CACpC,MAAM,SAAS,cAAc;CAE7B,MAAM,EAAE,WAAW,qBAAqB;CACxC,MAAM,EAAE,YAAY,kBAAkB;CACtC,MAAM,EAAE,2BAA2B,cAAc;CACjD,MAAM,EAAE,MAAM,iBAAiB,wBAAwB;EACrD;EACA,gBAAgB;EACjB,CAAC;CACF,MAAM,EAAE,UAAU,aAAa,WAAWC,WAAS;CAEnD,MAAM,iBAAiB,OAA4B,KAAK;AAGxD,iBAAgB;AACd,iBAAe,SAAS,OAAO;IAC9B,CAAC,uBAAuB,CAAC;CAE5B,MAAM,eAAe,OAAO,YAAgC;EAC1D,IAAI,iBAAiB,cAAc;AACnC,MAAI,CAAC,aASH,mBARwB,MAAM,YAAY,WAAW,EACnD,GAAG,2BAA2B;GAC5B;GACA,gBAAgB;GAChB;GACA,SAAS,SAAS,OAAO,MAAM;GAChC,CAAC,EACH,CAAC,EAC+B;AAEnC,cAAY,EAAE,MAAM,QAAQ,MAAM,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;;CAInE,MAAM,cAAc,SAAS,SAAS,SAAS;CAC/C,MAAM,sBACJ,WAAW,eACV,WAAW,eACV,aAAa,SAAS,eACtB,CAAC,YAAY,MAAM,MAChB,SAAS,KAAK,SAAS,UAAU,KAAK,KAAK,SAAS,EACtD;AAEL,QACE,qBAAC,UAAD,EAAA,UAAA,CACE,qBAAC,cAAD,EAAA,UAAA,CACE,qBAAC,qBAAD,EAAA,UAAA,CACE,oBAAC,aAAD;EAAuB;EAAkB;EAAU,CAAA,EAClD,uBAAuB,oBAAC,YAAD,EAAc,CAAA,CAClB,EAAA,CAAA,EACtB,oBAAC,0BAAD,EAA4B,CAAA,CACf,EAAA,CAAA,EACf,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,iBAAD;GACE,KAAK;GACG;GACR,UAAU;GACF;GACR,CAAA;EACE,CAAA,CACG,EAAA,CAAA;;AAIf,SAAS,cAAc;;;AC5EvB,SAAgB,WAAW;CACzB,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,EAAE,WAAW,qBAAqB;CACxC,MAAM,EAAE,KAAK,wBAAwB,qBAAqB,cAAc;AAExE,2BAA0B,EAAE,QAAQ,CAAC;CACrC,MAAM,EAAE,WAAW,MAAM,SAAS,gBAAgB,EAAE,QAAQ,CAAC;CAC7D,MAAM,EAAE,WAAW,0BAA0B,wBAAwB;EACnE;EACA,gBAAgB;EACjB,CAAC;CAEF,MAAM,mBACJ,MAAM,mBAAmB,iBACzB,MAAM,mBAAmB,cAAc,SAAS;AAElD,KACE,CAAC,oBACD,MAAM,kBAAkB,gCAExB,QAAO;AAGT,QACE,qBAAC,MAAD;EAAM,WAAU;YAAhB;GACG,aACC,oBAAC,OAAD;IAAK,WAAU;cACb,oBAAC,YAAD,EAAc,CAAA;IACV,CAAA;GAGR,oBAAC,YAAD,EAAoB,QAAU,CAAA;GAC7B,qBAAqB,aAAa,yBACjC,oBAAC,OAAD;IAAK,WAAU;cACb,oBAAC,YAAD,EAAc,CAAA;IACV,CAAA;GAEP,CAAC,cAAc,qBAAqB,SAAS,CAAC,0BAC7C,qBAAC,OAAD;IACE,WAAW,QAAQ,SAAS,WAAW;cADzC,CAGG,qBAAqB,aAAa,yBACjC,oBAAC,OAAD;KAAK,WAAU;eACb,oBAAC,YAAD,EAAc,CAAA;KACV,CAAA,EAEP,mBACC,oBAAC,UAAD,EAAY,CAAA,GAEZ,oBAAC,OAAD;KAAK,WAAU;eACb,oBAAC,MAAD;MACE,SAAQ;MACR,OAAM;MACN,WAAU;gBAET,EAAE,uCAAuC;MACrC,CAAA;KACH,CAAA,CAEJ;;GAEP,CAAC,aAAa,QAAQ,aAAa,oBAAC,aAAD,EAAe,CAAA;GAC9C;;;;;ACpEX,MAAa,EACX,iBACA,YACA,kBACA,qBACA,wBACE,qBAA0C,EAAE,MAAM,gBAAgB,CAAC;AAEvE,SAAgB,YAAY,OAAyB;CACnD,MAAM,EAAE,QAAQ,WAAW,GAAG,mBAAmB,sBAAsB;EACrE;EACA,MAAM;EACP,CAAC;AAEF,KAAI,CAAC,eAAe,OAElB,QAAO;AAGT,QACE,oBAAC,iBAAD;EACU;EACR,WAAW;EACA;YAEX,oBAAC,UAAD,EAAY,CAAA;EACI,CAAA;;AAItB,YAAY,cAAc"}
@@ -1,53 +0,0 @@
1
- import { t as Callbacks } from "./callbacks-PIvHXeEI.js";
2
- import { r as RootConfig, t as ElementConfig } from "./config-CqihvSgz.js";
3
- import { n as ElementProviderProps, t as ElementContextType } from "./element-provider-C_nBsftD.js";
4
- import * as react_jsx_runtime0 from "react/jsx-runtime";
5
- import { UIMessage } from "ai";
6
-
7
- //#region ../ui/src/molecules/chat-message.d.ts
8
- interface ChatMessageProps {
9
- messages: UIMessage[];
10
- withAvatar?: boolean;
11
- /** From `useChat().status` — controls reasoning streaming UI */
12
- status?: string;
13
- }
14
- declare function ChatMessage({
15
- messages,
16
- withAvatar,
17
- status
18
- }: ChatMessageProps): (react_jsx_runtime0.JSX.Element | null)[];
19
- //#endregion
20
- //#region src/index.d.ts
21
- type ChatSDKWindowApi = {
22
- setConfig: (config: Partial<RootConfig>, merge?: boolean) => void;
23
- };
24
- declare global {
25
- interface Window {
26
- chatsdk?: ChatSDKWindowApi;
27
- }
28
- }
29
- //#endregion
30
- //#region src/features/chat/chat-element.d.ts
31
- type ChatProps = {
32
- chatId: string;
33
- };
34
- type ChatData = {
35
- chatId: string;
36
- };
37
- type ChatElementProps = ElementConfig<ChatProps, ChatData>;
38
- declare const ElementProvider: {
39
- ({
40
- config,
41
- component,
42
- callbacks,
43
- children
44
- }: ElementProviderProps<ChatProps, ChatData>): react_jsx_runtime0.JSX.Element;
45
- displayName: string;
46
- }, useElement: () => ElementContextType<ChatProps, ChatData>, useElementConfig: () => RootConfig, useElementComponent: () => ChatProps, useElementCallbacks: () => Callbacks<ChatData>;
47
- declare function ChatElement(props: ChatElementProps): react_jsx_runtime0.JSX.Element | null;
48
- declare namespace ChatElement {
49
- var displayName: string;
50
- }
51
- //#endregion
52
- export { useElementComponent as a, ChatMessage as c, useElementCallbacks as i, ElementProvider as n, useElementConfig as o, useElement as r, ChatSDKWindowApi as s, ChatElement as t };
53
- //# sourceMappingURL=chat-element-CSpa62Te.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-element-CSpa62Te.d.ts","names":[],"sources":["../../ui/src/molecules/chat-message.tsx","../src/index.ts","../src/features/chat/chat-element.tsx"],"mappings":";;;;;;;UAsBU,gBAAA;EACR,QAAA,EAAU,SAAA;EACV,UAAA;;EAEA,MAAA;AAAA;AAAA,iBAGc,WAAA,CAAA;EACd,QAAA;EACA,UAAA;EACA;AAAA,GACC,gBAAA,IAAgB,kBAAA,CAAA,GAAA,CAAA,OAAA;;;KCzBP,gBAAA;EACV,SAAA,GAAY,MAAA,EAAQ,OAAA,CAAQ,UAAA,GAAa,KAAA;AAAA;AAAA,QAGnC,MAAA;EAAA,UACI,MAAA;IACR,OAAA,GAAU,gBAAA;EAAA;AAAA;;;KCTT,SAAA;EAAc,MAAA;AAAA;AAAA,KACd,QAAA;EAAa,MAAA;AAAA;AAAA,KACb,gBAAA,GAAmB,aAAA,CAAc,SAAA,EAAW,QAAA;AAAA,cAG/C,eAAA;IAAA;;;;;;;uBACU,kBAAA,CAAA,SAAA,EAAA,QAAA,GAAA,gBAAA,QAAA,UAAA,EAAA,mBAAA,QAES,SAAA,EAAA,mBAAA,QACA,SAAA,CAAA,QAAA;AAAA,iBAGL,WAAA,CAAY,KAAA,EAAO,gBAAA,GAAgB,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,kBAAnC,WAAA;EAAA,IAAW,WAAA;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"chatsdk-provider-BhlChLFd.d.ts","names":[],"sources":["../src/features/element/chatsdk-provider.tsx"],"mappings":";;;;UAKU,oBAAA;EACR,MAAA,GAAS,UAAA;EACT,QAAA,EAAU,KAAA,CAAM,SAAA;AAAA;AAAA,iBAGF,eAAA,CAAA;EACd,MAAA;EACA;AAAA,GACC,oBAAA,GAAoB,KAAA,CAAA,SAAA"}
@@ -1,14 +0,0 @@
1
- //#region src/common/utils.d.ts
2
- interface FormatRelativeTimeParams {
3
- date: number | Date;
4
- now?: Date;
5
- locale?: string;
6
- }
7
- declare function renderRelativeTime({
8
- date,
9
- now,
10
- locale
11
- }: FormatRelativeTimeParams): string;
12
- //#endregion
13
- export { renderRelativeTime };
14
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","names":[],"sources":["../../src/common/utils.ts"],"mappings":";UAAU,wBAAA;EACR,IAAA,WAAe,IAAA;EACf,GAAA,GAAM,IAAA;EACN,MAAA;AAAA;AAAA,iBAGc,kBAAA,CAAA;EACd,IAAA;EACA,GAAA;EACA;AAAA,GACC,wBAAA"}
@@ -1,26 +0,0 @@
1
- //#region src/common/utils.ts
2
- function renderRelativeTime({ date, now, locale }) {
3
- const _date = date instanceof Date ? date : new Date(date);
4
- const _now = now ?? /* @__PURE__ */ new Date();
5
- const diffMs = _date.getTime() - _now.getTime();
6
- const diffSec = Math.round(diffMs / 1e3);
7
- const diffMin = Math.round(diffSec / 60);
8
- const diffHr = Math.round(diffMin / 60);
9
- const diffDay = Math.round(diffHr / 24);
10
- const diffWeek = Math.round(diffDay / 7);
11
- const diffMonth = Math.round(diffDay / 30);
12
- const diffYear = Math.round(diffDay / 365);
13
- const _locale = locale ?? "en";
14
- const rtf = new Intl.RelativeTimeFormat(_locale, { numeric: "auto" });
15
- if (Math.abs(diffSec) < 60) return rtf.format(diffSec, "second");
16
- if (Math.abs(diffMin) < 60) return rtf.format(diffMin, "minute");
17
- if (Math.abs(diffHr) < 24) return rtf.format(diffHr, "hour");
18
- if (Math.abs(diffDay) < 7) return rtf.format(diffDay, "day");
19
- if (Math.abs(diffWeek) < 4) return rtf.format(diffWeek, "week");
20
- if (Math.abs(diffMonth) < 12) return rtf.format(diffMonth, "month");
21
- return rtf.format(diffYear, "year");
22
- }
23
- //#endregion
24
- export { renderRelativeTime };
25
-
26
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","names":[],"sources":["../../src/common/utils.ts"],"sourcesContent":["interface FormatRelativeTimeParams {\n date: number | Date;\n now?: Date;\n locale?: string;\n}\n\nexport function renderRelativeTime({\n date,\n now,\n locale,\n}: FormatRelativeTimeParams): string {\n const _date = date instanceof Date ? date : new Date(date);\n const _now = now ?? new Date();\n\n const diffMs = _date.getTime() - _now.getTime();\n const diffSec = Math.round(diffMs / 1000);\n const diffMin = Math.round(diffSec / 60);\n const diffHr = Math.round(diffMin / 60);\n const diffDay = Math.round(diffHr / 24);\n const diffWeek = Math.round(diffDay / 7);\n const diffMonth = Math.round(diffDay / 30);\n const diffYear = Math.round(diffDay / 365);\n\n const _locale = locale ?? \"en\";\n const rtf = new Intl.RelativeTimeFormat(_locale, { numeric: \"auto\" });\n\n if (Math.abs(diffSec) < 60) return rtf.format(diffSec, \"second\");\n if (Math.abs(diffMin) < 60) return rtf.format(diffMin, \"minute\");\n if (Math.abs(diffHr) < 24) return rtf.format(diffHr, \"hour\");\n if (Math.abs(diffDay) < 7) return rtf.format(diffDay, \"day\");\n if (Math.abs(diffWeek) < 4) return rtf.format(diffWeek, \"week\");\n if (Math.abs(diffMonth) < 12) return rtf.format(diffMonth, \"month\");\n return rtf.format(diffYear, \"year\");\n}\n"],"mappings":";AAMA,SAAgB,mBAAmB,EACjC,MACA,KACA,UACmC;CACnC,MAAM,QAAQ,gBAAgB,OAAO,OAAO,IAAI,KAAK,KAAK;CAC1D,MAAM,OAAO,uBAAO,IAAI,MAAM;CAE9B,MAAM,SAAS,MAAM,SAAS,GAAG,KAAK,SAAS;CAC/C,MAAM,UAAU,KAAK,MAAM,SAAS,IAAK;CACzC,MAAM,UAAU,KAAK,MAAM,UAAU,GAAG;CACxC,MAAM,SAAS,KAAK,MAAM,UAAU,GAAG;CACvC,MAAM,UAAU,KAAK,MAAM,SAAS,GAAG;CACvC,MAAM,WAAW,KAAK,MAAM,UAAU,EAAE;CACxC,MAAM,YAAY,KAAK,MAAM,UAAU,GAAG;CAC1C,MAAM,WAAW,KAAK,MAAM,UAAU,IAAI;CAE1C,MAAM,UAAU,UAAU;CAC1B,MAAM,MAAM,IAAI,KAAK,mBAAmB,SAAS,EAAE,SAAS,QAAQ,CAAC;AAErE,KAAI,KAAK,IAAI,QAAQ,GAAG,GAAI,QAAO,IAAI,OAAO,SAAS,SAAS;AAChE,KAAI,KAAK,IAAI,QAAQ,GAAG,GAAI,QAAO,IAAI,OAAO,SAAS,SAAS;AAChE,KAAI,KAAK,IAAI,OAAO,GAAG,GAAI,QAAO,IAAI,OAAO,QAAQ,OAAO;AAC5D,KAAI,KAAK,IAAI,QAAQ,GAAG,EAAG,QAAO,IAAI,OAAO,SAAS,MAAM;AAC5D,KAAI,KAAK,IAAI,SAAS,GAAG,EAAG,QAAO,IAAI,OAAO,UAAU,OAAO;AAC/D,KAAI,KAAK,IAAI,UAAU,GAAG,GAAI,QAAO,IAAI,OAAO,WAAW,QAAQ;AACnE,QAAO,IAAI,OAAO,UAAU,OAAO"}