@autobe/ui 0.20.0 → 0.22.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 (251) hide show
  1. package/lib/{AutoBeAssistantMessageMovie.d.ts → components/AutoBeAssistantMessageMovie.d.ts} +1 -1
  2. package/lib/{AutoBeAssistantMessageMovie.js → components/AutoBeAssistantMessageMovie.js} +3 -1
  3. package/lib/components/AutoBeAssistantMessageMovie.js.map +1 -0
  4. package/lib/components/AutoBeChatMain.d.ts +12 -0
  5. package/lib/components/AutoBeChatMain.js +88 -0
  6. package/lib/components/AutoBeChatMain.js.map +1 -0
  7. package/lib/components/AutoBeStatusModal.d.ts +6 -0
  8. package/lib/components/AutoBeStatusModal.js +269 -0
  9. package/lib/components/AutoBeStatusModal.js.map +1 -0
  10. package/lib/{AutoBeUserMessageMovie.d.ts → components/AutoBeUserMessageMovie.d.ts} +1 -1
  11. package/lib/{AutoBeUserMessageMovie.js → components/AutoBeUserMessageMovie.js} +3 -1
  12. package/lib/components/AutoBeUserMessageMovie.js.map +1 -0
  13. package/lib/{common → components/common}/ChatBubble.js +1 -1
  14. package/lib/components/common/ChatBubble.js.map +1 -0
  15. package/lib/components/common/Collapsible.d.ts +15 -0
  16. package/lib/components/common/Collapsible.js +45 -0
  17. package/lib/components/common/Collapsible.js.map +1 -0
  18. package/lib/components/common/index.d.ts +2 -0
  19. package/lib/components/common/index.js +19 -0
  20. package/lib/components/common/index.js.map +1 -0
  21. package/lib/components/common/openai/OpenAIContent.js.map +1 -0
  22. package/lib/components/common/openai/OpenAIUserAudioContent.js.map +1 -0
  23. package/lib/components/common/openai/OpenAIUserFileContent.js.map +1 -0
  24. package/lib/components/common/openai/OpenAIUserImageContent.js.map +1 -0
  25. package/lib/{common → components/common}/openai/OpenAIUserTextContent.js +0 -1
  26. package/lib/components/common/openai/OpenAIUserTextContent.js.map +1 -0
  27. package/lib/components/common/openai/index.js.map +1 -0
  28. package/lib/components/events/AutoBeCompleteEventMovie.js.map +1 -0
  29. package/lib/components/events/AutoBeCorrectEventMovie.d.ts +9 -0
  30. package/lib/components/events/AutoBeCorrectEventMovie.js +146 -0
  31. package/lib/components/events/AutoBeCorrectEventMovie.js.map +1 -0
  32. package/lib/components/events/AutoBeEventMovie.d.ts +7 -0
  33. package/lib/components/events/AutoBeEventMovie.js +93 -0
  34. package/lib/components/events/AutoBeEventMovie.js.map +1 -0
  35. package/lib/components/events/AutoBeProgressEventMovie.js.map +1 -0
  36. package/lib/components/events/AutoBeScenarioEventMovie.js.map +1 -0
  37. package/lib/components/events/AutoBeStartEventMovie.js.map +1 -0
  38. package/lib/{events → components/events}/AutoBeValidateEventMovie.js +2 -2
  39. package/lib/components/events/AutoBeValidateEventMovie.js.map +1 -0
  40. package/lib/{events → components/events}/common/CollapsibleEventGroup.js +1 -5
  41. package/lib/components/events/common/CollapsibleEventGroup.js.map +1 -0
  42. package/lib/components/events/common/EventCard.js.map +1 -0
  43. package/lib/components/events/common/EventContent.js.map +1 -0
  44. package/lib/{events → components/events}/common/EventHeader.js +1 -1
  45. package/lib/components/events/common/EventHeader.js.map +1 -0
  46. package/lib/components/events/common/EventIcon.js.map +1 -0
  47. package/lib/{events → components/events}/common/ProgressBar.js +3 -2
  48. package/lib/components/events/common/ProgressBar.js.map +1 -0
  49. package/lib/components/events/common/index.js.map +1 -0
  50. package/lib/components/events/groups/CorrectEventGroup.d.ts +12 -0
  51. package/lib/components/events/groups/CorrectEventGroup.js +83 -0
  52. package/lib/components/events/groups/CorrectEventGroup.js.map +1 -0
  53. package/lib/{events → components/events}/groups/ValidateEventGroup.js +3 -3
  54. package/lib/components/events/groups/ValidateEventGroup.js.map +1 -0
  55. package/lib/{events → components/events}/groups/index.d.ts +1 -0
  56. package/lib/components/events/groups/index.js +8 -0
  57. package/lib/components/events/groups/index.js.map +1 -0
  58. package/lib/{events → components/events}/index.d.ts +3 -1
  59. package/lib/{events → components/events}/index.js +7 -3
  60. package/lib/components/events/index.js.map +1 -0
  61. package/lib/components/events/utils/eventGrouper.js.map +1 -0
  62. package/lib/components/events/utils/index.js.map +1 -0
  63. package/lib/components/index.d.ts +7 -0
  64. package/lib/components/index.js +24 -0
  65. package/lib/components/index.js.map +1 -0
  66. package/lib/components/upload/AutoBeChatUploadBox.d.ts +31 -0
  67. package/lib/components/upload/AutoBeChatUploadBox.js +222 -0
  68. package/lib/components/upload/AutoBeChatUploadBox.js.map +1 -0
  69. package/lib/components/upload/AutoBeChatUploadSendButton.js.map +1 -0
  70. package/lib/components/upload/AutoBeFileUploadBox.d.ts +8 -0
  71. package/lib/components/upload/AutoBeFileUploadBox.js.map +1 -0
  72. package/lib/components/upload/AutoBeUploadConfig.d.ts +9 -0
  73. package/lib/components/upload/AutoBeUploadConfig.js +3 -0
  74. package/lib/components/upload/AutoBeUploadConfig.js.map +1 -0
  75. package/lib/{AutoBeVoiceRecoderButton.js → components/upload/AutoBeVoiceRecoderButton.js} +2 -2
  76. package/lib/components/upload/AutoBeVoiceRecoderButton.js.map +1 -0
  77. package/lib/components/upload/index.d.ts +5 -0
  78. package/lib/components/upload/index.js +22 -0
  79. package/lib/components/upload/index.js.map +1 -0
  80. package/lib/constant/color.d.ts +22 -0
  81. package/lib/constant/color.js +29 -0
  82. package/lib/constant/color.js.map +1 -0
  83. package/lib/context/AutoBeAgentContext.d.ts +20 -0
  84. package/lib/context/AutoBeAgentContext.js +50 -0
  85. package/lib/context/AutoBeAgentContext.js.map +1 -0
  86. package/lib/hooks/index.d.ts +3 -0
  87. package/lib/hooks/index.js +20 -0
  88. package/lib/hooks/index.js.map +1 -0
  89. package/lib/hooks/useEscapeKey.d.ts +7 -0
  90. package/lib/hooks/useEscapeKey.js +27 -0
  91. package/lib/hooks/useEscapeKey.js.map +1 -0
  92. package/lib/hooks/useIsomorphicLayoutEffect.d.ts +6 -0
  93. package/lib/hooks/useIsomorphicLayoutEffect.js +10 -0
  94. package/lib/hooks/useIsomorphicLayoutEffect.js.map +1 -0
  95. package/lib/hooks/useMediaQuery.d.ts +16 -0
  96. package/lib/hooks/useMediaQuery.js +57 -0
  97. package/lib/hooks/useMediaQuery.js.map +1 -0
  98. package/lib/icons/Receipt.d.ts +12 -0
  99. package/lib/icons/Receipt.js +9 -0
  100. package/lib/icons/Receipt.js.map +1 -0
  101. package/lib/index.d.ts +4 -8
  102. package/lib/index.js +4 -17
  103. package/lib/index.js.map +1 -1
  104. package/lib/structure/AutoBeListener.d.ts +17 -0
  105. package/lib/structure/AutoBeListener.js +250 -0
  106. package/lib/structure/AutoBeListener.js.map +1 -0
  107. package/lib/structure/AutoBeListenerState.d.ts +14 -0
  108. package/lib/structure/AutoBeListenerState.js +39 -0
  109. package/lib/structure/AutoBeListenerState.js.map +1 -0
  110. package/lib/structure/IAutoBeEventGroup.d.ts +5 -0
  111. package/lib/structure/IAutoBeEventGroup.js +3 -0
  112. package/lib/structure/IAutoBeEventGroup.js.map +1 -0
  113. package/lib/structure/index.d.ts +3 -0
  114. package/lib/structure/index.js +20 -0
  115. package/lib/structure/index.js.map +1 -0
  116. package/lib/utils/index.d.ts +1 -0
  117. package/lib/utils/index.js +1 -0
  118. package/lib/utils/index.js.map +1 -1
  119. package/lib/utils/number.d.ts +1 -0
  120. package/lib/utils/number.js +20 -0
  121. package/lib/utils/number.js.map +1 -0
  122. package/package.json +7 -11
  123. package/src/{AutoBeAssistantMessageMovie.tsx → components/AutoBeAssistantMessageMovie.tsx} +1 -1
  124. package/src/components/AutoBeChatMain.tsx +178 -0
  125. package/src/components/AutoBeStatusModal.tsx +483 -0
  126. package/src/{AutoBeUserMessageMovie.tsx → components/AutoBeUserMessageMovie.tsx} +3 -1
  127. package/src/{common → components/common}/ChatBubble.tsx +1 -1
  128. package/src/components/common/Collapsible.tsx +95 -0
  129. package/src/components/common/index.ts +2 -0
  130. package/src/{common → components/common}/openai/OpenAIUserTextContent.tsx +0 -1
  131. package/src/components/events/AutoBeCorrectEventMovie.tsx +368 -0
  132. package/src/components/events/AutoBeEventMovie.tsx +130 -0
  133. package/src/{events → components/events}/AutoBeValidateEventMovie.tsx +2 -2
  134. package/src/components/events/README.md +300 -0
  135. package/src/{events → components/events}/common/CollapsibleEventGroup.tsx +1 -10
  136. package/src/{events → components/events}/common/EventHeader.tsx +1 -1
  137. package/src/{events → components/events}/common/ProgressBar.tsx +3 -2
  138. package/src/components/events/groups/CorrectEventGroup.tsx +183 -0
  139. package/src/{events → components/events}/groups/ValidateEventGroup.tsx +3 -3
  140. package/src/{events → components/events}/groups/index.ts +4 -0
  141. package/src/{events → components/events}/index.ts +3 -4
  142. package/src/components/index.ts +7 -0
  143. package/src/components/upload/AutoBeChatUploadBox.tsx +374 -0
  144. package/src/{AutoBeFileUploadBox.tsx → components/upload/AutoBeFileUploadBox.tsx} +7 -8
  145. package/src/components/upload/AutoBeUploadConfig.ts +5 -0
  146. package/src/{AutoBeVoiceRecoderButton.tsx → components/upload/AutoBeVoiceRecoderButton.tsx} +2 -2
  147. package/src/components/upload/index.ts +5 -0
  148. package/src/constant/color.ts +28 -0
  149. package/src/context/AutoBeAgentContext.tsx +79 -0
  150. package/src/hooks/index.ts +3 -0
  151. package/src/hooks/useEscapeKey.ts +24 -0
  152. package/src/hooks/useIsomorphicLayoutEffect.ts +8 -0
  153. package/src/hooks/useMediaQuery.ts +73 -0
  154. package/src/icons/Receipt.tsx +74 -0
  155. package/src/index.ts +4 -14
  156. package/src/structure/AutoBeListener.ts +263 -0
  157. package/src/structure/AutoBeListenerState.ts +53 -0
  158. package/src/structure/IAutoBeEventGroup.ts +6 -0
  159. package/src/structure/index.ts +3 -0
  160. package/src/utils/index.ts +1 -0
  161. package/src/utils/number.ts +17 -0
  162. package/tsconfig.json +2 -1
  163. package/lib/AutoBeAssistantMessageMovie.js.map +0 -1
  164. package/lib/AutoBeChatUploadSendButton.js.map +0 -1
  165. package/lib/AutoBeFileUploadBox.d.ts +0 -10
  166. package/lib/AutoBeFileUploadBox.js.map +0 -1
  167. package/lib/AutoBeUserMessageMovie.js.map +0 -1
  168. package/lib/AutoBeVoiceRecoderButton.js.map +0 -1
  169. package/lib/common/ChatBubble.js.map +0 -1
  170. package/lib/common/openai/OpenAIContent.js.map +0 -1
  171. package/lib/common/openai/OpenAIUserAudioContent.js.map +0 -1
  172. package/lib/common/openai/OpenAIUserFileContent.js.map +0 -1
  173. package/lib/common/openai/OpenAIUserImageContent.js.map +0 -1
  174. package/lib/common/openai/OpenAIUserTextContent.js.map +0 -1
  175. package/lib/common/openai/index.js.map +0 -1
  176. package/lib/events/AutoBeCompleteEventMovie.js.map +0 -1
  177. package/lib/events/AutoBeProgressEventMovie.js.map +0 -1
  178. package/lib/events/AutoBeScenarioEventMovie.js.map +0 -1
  179. package/lib/events/AutoBeStartEventMovie.js.map +0 -1
  180. package/lib/events/AutoBeValidateEventMovie.js.map +0 -1
  181. package/lib/events/common/CollapsibleEventGroup.js.map +0 -1
  182. package/lib/events/common/EventCard.js.map +0 -1
  183. package/lib/events/common/EventContent.js.map +0 -1
  184. package/lib/events/common/EventHeader.js.map +0 -1
  185. package/lib/events/common/EventIcon.js.map +0 -1
  186. package/lib/events/common/ProgressBar.js.map +0 -1
  187. package/lib/events/common/index.js.map +0 -1
  188. package/lib/events/groups/ValidateEventGroup.js.map +0 -1
  189. package/lib/events/groups/index.js +0 -6
  190. package/lib/events/groups/index.js.map +0 -1
  191. package/lib/events/index.js.map +0 -1
  192. package/lib/events/utils/eventGrouper.js.map +0 -1
  193. package/lib/events/utils/index.js.map +0 -1
  194. package/src/events/README.md +0 -169
  195. /package/lib/{common → components/common}/ChatBubble.d.ts +0 -0
  196. /package/lib/{common → components/common}/openai/OpenAIContent.d.ts +0 -0
  197. /package/lib/{common → components/common}/openai/OpenAIContent.js +0 -0
  198. /package/lib/{common → components/common}/openai/OpenAIUserAudioContent.d.ts +0 -0
  199. /package/lib/{common → components/common}/openai/OpenAIUserAudioContent.js +0 -0
  200. /package/lib/{common → components/common}/openai/OpenAIUserFileContent.d.ts +0 -0
  201. /package/lib/{common → components/common}/openai/OpenAIUserFileContent.js +0 -0
  202. /package/lib/{common → components/common}/openai/OpenAIUserImageContent.d.ts +0 -0
  203. /package/lib/{common → components/common}/openai/OpenAIUserImageContent.js +0 -0
  204. /package/lib/{common → components/common}/openai/OpenAIUserTextContent.d.ts +0 -0
  205. /package/lib/{common → components/common}/openai/index.d.ts +0 -0
  206. /package/lib/{common → components/common}/openai/index.js +0 -0
  207. /package/lib/{events → components/events}/AutoBeCompleteEventMovie.d.ts +0 -0
  208. /package/lib/{events → components/events}/AutoBeCompleteEventMovie.js +0 -0
  209. /package/lib/{events → components/events}/AutoBeProgressEventMovie.d.ts +0 -0
  210. /package/lib/{events → components/events}/AutoBeProgressEventMovie.js +0 -0
  211. /package/lib/{events → components/events}/AutoBeScenarioEventMovie.d.ts +0 -0
  212. /package/lib/{events → components/events}/AutoBeScenarioEventMovie.js +0 -0
  213. /package/lib/{events → components/events}/AutoBeStartEventMovie.d.ts +0 -0
  214. /package/lib/{events → components/events}/AutoBeStartEventMovie.js +0 -0
  215. /package/lib/{events → components/events}/AutoBeValidateEventMovie.d.ts +0 -0
  216. /package/lib/{events → components/events}/common/CollapsibleEventGroup.d.ts +0 -0
  217. /package/lib/{events → components/events}/common/EventCard.d.ts +0 -0
  218. /package/lib/{events → components/events}/common/EventCard.js +0 -0
  219. /package/lib/{events → components/events}/common/EventContent.d.ts +0 -0
  220. /package/lib/{events → components/events}/common/EventContent.js +0 -0
  221. /package/lib/{events → components/events}/common/EventHeader.d.ts +0 -0
  222. /package/lib/{events → components/events}/common/EventIcon.d.ts +0 -0
  223. /package/lib/{events → components/events}/common/EventIcon.js +0 -0
  224. /package/lib/{events → components/events}/common/ProgressBar.d.ts +0 -0
  225. /package/lib/{events → components/events}/common/index.d.ts +0 -0
  226. /package/lib/{events → components/events}/common/index.js +0 -0
  227. /package/lib/{events → components/events}/groups/ValidateEventGroup.d.ts +0 -0
  228. /package/lib/{events → components/events}/utils/eventGrouper.d.ts +0 -0
  229. /package/lib/{events → components/events}/utils/eventGrouper.js +0 -0
  230. /package/lib/{events → components/events}/utils/index.d.ts +0 -0
  231. /package/lib/{events → components/events}/utils/index.js +0 -0
  232. /package/lib/{AutoBeChatUploadSendButton.d.ts → components/upload/AutoBeChatUploadSendButton.d.ts} +0 -0
  233. /package/lib/{AutoBeChatUploadSendButton.js → components/upload/AutoBeChatUploadSendButton.js} +0 -0
  234. /package/lib/{AutoBeFileUploadBox.js → components/upload/AutoBeFileUploadBox.js} +0 -0
  235. /package/lib/{AutoBeVoiceRecoderButton.d.ts → components/upload/AutoBeVoiceRecoderButton.d.ts} +0 -0
  236. /package/src/{common → components/common}/openai/OpenAIContent.tsx +0 -0
  237. /package/src/{common → components/common}/openai/OpenAIUserAudioContent.tsx +0 -0
  238. /package/src/{common → components/common}/openai/OpenAIUserFileContent.tsx +0 -0
  239. /package/src/{common → components/common}/openai/OpenAIUserImageContent.tsx +0 -0
  240. /package/src/{common → components/common}/openai/index.ts +0 -0
  241. /package/src/{events → components/events}/AutoBeCompleteEventMovie.tsx +0 -0
  242. /package/src/{events → components/events}/AutoBeProgressEventMovie.tsx +0 -0
  243. /package/src/{events → components/events}/AutoBeScenarioEventMovie.tsx +0 -0
  244. /package/src/{events → components/events}/AutoBeStartEventMovie.tsx +0 -0
  245. /package/src/{events → components/events}/common/EventCard.tsx +0 -0
  246. /package/src/{events → components/events}/common/EventContent.tsx +0 -0
  247. /package/src/{events → components/events}/common/EventIcon.tsx +0 -0
  248. /package/src/{events → components/events}/common/index.ts +0 -0
  249. /package/src/{events → components/events}/utils/eventGrouper.tsx +0 -0
  250. /package/src/{events → components/events}/utils/index.ts +0 -0
  251. /package/src/{AutoBeChatUploadSendButton.tsx → components/upload/AutoBeChatUploadSendButton.tsx} +0 -0
@@ -1,3 +1,4 @@
1
1
  export * from "./AutoBeFileUploader";
2
2
  export * from "./AutoBeVoiceRecorder";
3
3
  export * from "./time";
4
+ export * from "./number";
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./AutoBeFileUploader"), exports);
18
18
  __exportStar(require("./AutoBeVoiceRecorder"), exports);
19
19
  __exportStar(require("./time"), exports);
20
+ __exportStar(require("./number"), exports);
20
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,wDAAsC;AACtC,yCAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,wDAAsC;AACtC,yCAAuB;AACvB,2CAAyB"}
@@ -0,0 +1 @@
1
+ export declare const toCompactNumberFormat: (value: number) => string;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toCompactNumberFormat = void 0;
4
+ const toCompactNumberFormat = (value) => {
5
+ const units = [
6
+ { value: 1000000000000000, symbol: "Q" },
7
+ { value: 1000000000000, symbol: "T" },
8
+ { value: 1000000000, symbol: "B" },
9
+ { value: 1000000, symbol: "M" },
10
+ { value: 1000, symbol: "K" },
11
+ ];
12
+ for (const unit of units) {
13
+ if (value >= unit.value) {
14
+ return (value / unit.value).toFixed(1) + unit.symbol;
15
+ }
16
+ }
17
+ return value.toString();
18
+ };
19
+ exports.toCompactNumberFormat = toCompactNumberFormat;
20
+ //# sourceMappingURL=number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/utils/number.ts"],"names":[],"mappings":";;;AAAO,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAE,EAAE;IACrD,MAAM,KAAK,GAAG;QACZ,EAAE,KAAK,EAAE,gBAAqB,EAAE,MAAM,EAAE,GAAG,EAAE;QAC7C,EAAE,KAAK,EAAE,aAAiB,EAAE,MAAM,EAAE,GAAG,EAAE;QACzC,EAAE,KAAK,EAAE,UAAa,EAAE,MAAM,EAAE,GAAG,EAAE;QACrC,EAAE,KAAK,EAAE,OAAS,EAAE,MAAM,EAAE,GAAG,EAAE;QACjC,EAAE,KAAK,EAAE,IAAK,EAAE,MAAM,EAAE,GAAG,EAAE;KAC9B,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC1B,CAAC,CAAC;AAhBW,QAAA,qBAAqB,yBAgBhC"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@autobe/ui",
3
3
  "type": "commonjs",
4
- "version": "0.20.0",
4
+ "version": "0.22.0",
5
5
  "description": "AutoBE UI",
6
6
  "author": "Wrtn Technologies",
7
- "homepage": "https://wrtnlabs.io/autobe",
7
+ "homepage": "https://autobe.dev",
8
8
  "repository": {
9
9
  "type": "git",
10
10
  "url": "https://github.com/wrtnlabs/autobe.git"
@@ -14,22 +14,18 @@
14
14
  },
15
15
  "main": "lib/index.js",
16
16
  "exports": {
17
- ".": {
18
- "types": "./src/index.ts",
19
- "import": "./src/index.ts"
20
- },
21
- "./utils": {
22
- "types": "./src/utils/index.ts",
23
- "import": "./src/utils/index.ts"
24
- }
17
+ ".": "./lib/index.js",
18
+ "./utils": "./lib/utils/index.js",
19
+ "./hooks": "./lib/hooks/index.js"
25
20
  },
26
21
  "devDependencies": {
22
+ "@samchon/openapi": "^4.7.1",
27
23
  "@types/react": "^19.1.10",
28
24
  "@types/react-dom": "^19.1.5",
29
25
  "react": "^19.1.1",
30
26
  "react-dom": "^19.1.1",
31
27
  "typescript": "~5.9.2",
32
- "@autobe/interface": "0.20.0"
28
+ "@autobe/interface": "0.22.0"
33
29
  },
34
30
  "dependencies": {
35
31
  "@stackblitz/sdk": "^1.11.0",
@@ -6,7 +6,7 @@ interface IAssistantMessageProps {
6
6
  assistantName?: string;
7
7
  }
8
8
 
9
- const AutoBeAssistantMessageMovie = (props: IAssistantMessageProps) => {
9
+ export const AutoBeAssistantMessageMovie = (props: IAssistantMessageProps) => {
10
10
  const { text, isoTimestamp, assistantName = "AutoBe" } = props;
11
11
 
12
12
  return (
@@ -0,0 +1,178 @@
1
+ import { AutoBeUserMessageContent } from "@autobe/interface";
2
+ import { RefObject, useEffect, useRef, useState } from "react";
3
+
4
+ import { AutoBeChatUploadBox, AutoBeEventMovie, IAutoBeUploadConfig } from "..";
5
+ import { useAutoBeAgent } from "../context/AutoBeAgentContext";
6
+ import { useMediaQuery } from "../hooks";
7
+ import AutoBeStatusModal from "./AutoBeStatusModal";
8
+
9
+ export interface IAutoBeChatMainProps {
10
+ isMobile: boolean;
11
+ conversate: (messages: AutoBeUserMessageContent[]) => Promise<void>;
12
+ setError: (error: Error) => void;
13
+ uploadConfig?: IAutoBeUploadConfig;
14
+ className?: string;
15
+ style?: React.CSSProperties;
16
+ }
17
+
18
+ export const AutoBeChatMain = (props: IAutoBeChatMainProps) => {
19
+ const bodyContainerRef = useRef<HTMLDivElement>(null);
20
+ const scrollAnchorRef = useRef<HTMLDivElement>(null);
21
+ const { eventGroups } = useAutoBeAgent();
22
+ const [isTokenModalOpen, setIsTokenModalOpen] = useState(false);
23
+
24
+ const listener: RefObject<AutoBeChatUploadBox.IListener> = useRef({
25
+ handleDragEnter: () => {},
26
+ handleDragLeave: () => {},
27
+ handleDrop: () => {},
28
+ handleDragOver: () => {},
29
+ });
30
+
31
+ useEffect(() => {
32
+ if (eventGroups.length === 0) return;
33
+ scrollAnchorRef.current?.scrollIntoView({
34
+ behavior: "smooth",
35
+ });
36
+ }, [bodyContainerRef.current?.scrollHeight]);
37
+
38
+ return (
39
+ <div
40
+ onDragEnter={(e) => listener.current.handleDragEnter(e)}
41
+ onDragLeave={(e) => listener.current.handleDragLeave(e)}
42
+ onDragOver={(e) => listener.current.handleDragOver(e)}
43
+ onDrop={(e) => listener.current.handleDrop(e)}
44
+ style={{
45
+ position: "relative",
46
+ overflowY: "auto",
47
+ margin: 0,
48
+ flexGrow: 1,
49
+ display: "flex",
50
+ flexDirection: "column",
51
+ ...props.style,
52
+ }}
53
+ className={props.className}
54
+ ref={bodyContainerRef}
55
+ >
56
+ {/* Token Usage Button - Sticky position in top right */}
57
+ <div
58
+ style={{
59
+ position: "sticky",
60
+ top: "1rem",
61
+ zIndex: 1001,
62
+ display: "flex",
63
+ justifyContent: "flex-end",
64
+ marginBottom: "-3rem",
65
+ paddingRight: "1.5rem",
66
+ }}
67
+ >
68
+ <button
69
+ onClick={() => setIsTokenModalOpen(!isTokenModalOpen)}
70
+ style={{
71
+ background: "#f8f9fa",
72
+ color: "#495057",
73
+ border: "1px solid #dee2e6",
74
+ borderRadius: "50%",
75
+ padding: "0.5rem",
76
+ width: "2rem",
77
+ height: "2rem",
78
+ cursor: "pointer",
79
+ fontSize: "0.85rem",
80
+ fontWeight: "400",
81
+ boxShadow: "0 2px 4px rgba(0, 0, 0, 0.1)",
82
+ transition: "all 0.2s ease",
83
+ display: "flex",
84
+ alignItems: "center",
85
+ justifyContent: "center",
86
+ }}
87
+ onMouseOver={(e) => {
88
+ e.currentTarget.style.transform = "translateY(-1px)";
89
+ e.currentTarget.style.boxShadow = "0 4px 8px rgba(0, 0, 0, 0.15)";
90
+ e.currentTarget.style.background = "#e9ecef";
91
+ e.currentTarget.style.borderColor = "#adb5bd";
92
+ }}
93
+ onMouseOut={(e) => {
94
+ e.currentTarget.style.transform = "translateY(0)";
95
+ e.currentTarget.style.boxShadow = "0 2px 4px rgba(0, 0, 0, 0.1)";
96
+ e.currentTarget.style.background = "#f8f9fa";
97
+ e.currentTarget.style.borderColor = "#dee2e6";
98
+ }}
99
+ title="View System Status"
100
+ >
101
+ <svg
102
+ width="14"
103
+ height="14"
104
+ viewBox="0 0 24 24"
105
+ fill="none"
106
+ stroke="currentColor"
107
+ strokeWidth="2"
108
+ strokeLinecap="round"
109
+ strokeLinejoin="round"
110
+ >
111
+ <circle cx="12" cy="12" r="10" />
112
+ <path d="M12 16v-4" />
113
+ <path d="M12 8h.01" />
114
+ </svg>
115
+ </button>
116
+ </div>
117
+ <div
118
+ style={{
119
+ display: "flex",
120
+ flexDirection: "column",
121
+ maxWidth: useMediaQuery.WIDTH_MD,
122
+ width: "100%",
123
+ margin: "0 auto",
124
+ }}
125
+ >
126
+ <div
127
+ style={{
128
+ padding: "2rem",
129
+ gap: 16,
130
+ display: "flex",
131
+ flexDirection: "column",
132
+ }}
133
+ >
134
+ {eventGroups.map((e, index) => (
135
+ <AutoBeEventMovie
136
+ key={index}
137
+ events={e.events}
138
+ last={index === eventGroups.length - 1}
139
+ />
140
+ ))}
141
+ </div>
142
+ </div>
143
+
144
+ {/*
145
+ * Prompt input area
146
+ * this flexGrow: 1 means that the prompt input area will take up the remaining space
147
+ * so that the upload box will be at the bottom of the screen
148
+ */}
149
+ <div
150
+ style={{ flexGrow: 1, minHeight: "1rem" }}
151
+ ref={scrollAnchorRef}
152
+ ></div>
153
+ <div
154
+ style={{
155
+ position: "sticky",
156
+ bottom: 16,
157
+ left: 0,
158
+ right: 0,
159
+ zIndex: 1000,
160
+ }}
161
+ >
162
+ <AutoBeChatUploadBox
163
+ listener={listener}
164
+ uploadConfig={props.uploadConfig}
165
+ conversate={props.conversate}
166
+ setError={props.setError}
167
+ />
168
+ </div>
169
+
170
+ {/* System Status Modal */}
171
+ <AutoBeStatusModal
172
+ isOpen={isTokenModalOpen}
173
+ onClose={() => setIsTokenModalOpen(false)}
174
+ />
175
+ </div>
176
+ );
177
+ };
178
+ export default AutoBeChatMain;