@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.
- package/lib/{AutoBeAssistantMessageMovie.d.ts → components/AutoBeAssistantMessageMovie.d.ts} +1 -1
- package/lib/{AutoBeAssistantMessageMovie.js → components/AutoBeAssistantMessageMovie.js} +3 -1
- package/lib/components/AutoBeAssistantMessageMovie.js.map +1 -0
- package/lib/components/AutoBeChatMain.d.ts +12 -0
- package/lib/components/AutoBeChatMain.js +88 -0
- package/lib/components/AutoBeChatMain.js.map +1 -0
- package/lib/components/AutoBeStatusModal.d.ts +6 -0
- package/lib/components/AutoBeStatusModal.js +269 -0
- package/lib/components/AutoBeStatusModal.js.map +1 -0
- package/lib/{AutoBeUserMessageMovie.d.ts → components/AutoBeUserMessageMovie.d.ts} +1 -1
- package/lib/{AutoBeUserMessageMovie.js → components/AutoBeUserMessageMovie.js} +3 -1
- package/lib/components/AutoBeUserMessageMovie.js.map +1 -0
- package/lib/{common → components/common}/ChatBubble.js +1 -1
- package/lib/components/common/ChatBubble.js.map +1 -0
- package/lib/components/common/Collapsible.d.ts +15 -0
- package/lib/components/common/Collapsible.js +45 -0
- package/lib/components/common/Collapsible.js.map +1 -0
- package/lib/components/common/index.d.ts +2 -0
- package/lib/components/common/index.js +19 -0
- package/lib/components/common/index.js.map +1 -0
- package/lib/components/common/openai/OpenAIContent.js.map +1 -0
- package/lib/components/common/openai/OpenAIUserAudioContent.js.map +1 -0
- package/lib/components/common/openai/OpenAIUserFileContent.js.map +1 -0
- package/lib/components/common/openai/OpenAIUserImageContent.js.map +1 -0
- package/lib/{common → components/common}/openai/OpenAIUserTextContent.js +0 -1
- package/lib/components/common/openai/OpenAIUserTextContent.js.map +1 -0
- package/lib/components/common/openai/index.js.map +1 -0
- package/lib/components/events/AutoBeCompleteEventMovie.js.map +1 -0
- package/lib/components/events/AutoBeCorrectEventMovie.d.ts +9 -0
- package/lib/components/events/AutoBeCorrectEventMovie.js +146 -0
- package/lib/components/events/AutoBeCorrectEventMovie.js.map +1 -0
- package/lib/components/events/AutoBeEventMovie.d.ts +7 -0
- package/lib/components/events/AutoBeEventMovie.js +93 -0
- package/lib/components/events/AutoBeEventMovie.js.map +1 -0
- package/lib/components/events/AutoBeProgressEventMovie.js.map +1 -0
- package/lib/components/events/AutoBeScenarioEventMovie.js.map +1 -0
- package/lib/components/events/AutoBeStartEventMovie.js.map +1 -0
- package/lib/{events → components/events}/AutoBeValidateEventMovie.js +2 -2
- package/lib/components/events/AutoBeValidateEventMovie.js.map +1 -0
- package/lib/{events → components/events}/common/CollapsibleEventGroup.js +1 -5
- package/lib/components/events/common/CollapsibleEventGroup.js.map +1 -0
- package/lib/components/events/common/EventCard.js.map +1 -0
- package/lib/components/events/common/EventContent.js.map +1 -0
- package/lib/{events → components/events}/common/EventHeader.js +1 -1
- package/lib/components/events/common/EventHeader.js.map +1 -0
- package/lib/components/events/common/EventIcon.js.map +1 -0
- package/lib/{events → components/events}/common/ProgressBar.js +3 -2
- package/lib/components/events/common/ProgressBar.js.map +1 -0
- package/lib/components/events/common/index.js.map +1 -0
- package/lib/components/events/groups/CorrectEventGroup.d.ts +12 -0
- package/lib/components/events/groups/CorrectEventGroup.js +83 -0
- package/lib/components/events/groups/CorrectEventGroup.js.map +1 -0
- package/lib/{events → components/events}/groups/ValidateEventGroup.js +3 -3
- package/lib/components/events/groups/ValidateEventGroup.js.map +1 -0
- package/lib/{events → components/events}/groups/index.d.ts +1 -0
- package/lib/components/events/groups/index.js +8 -0
- package/lib/components/events/groups/index.js.map +1 -0
- package/lib/{events → components/events}/index.d.ts +3 -1
- package/lib/{events → components/events}/index.js +7 -3
- package/lib/components/events/index.js.map +1 -0
- package/lib/components/events/utils/eventGrouper.js.map +1 -0
- package/lib/components/events/utils/index.js.map +1 -0
- package/lib/components/index.d.ts +7 -0
- package/lib/components/index.js +24 -0
- package/lib/components/index.js.map +1 -0
- package/lib/components/upload/AutoBeChatUploadBox.d.ts +31 -0
- package/lib/components/upload/AutoBeChatUploadBox.js +222 -0
- package/lib/components/upload/AutoBeChatUploadBox.js.map +1 -0
- package/lib/components/upload/AutoBeChatUploadSendButton.js.map +1 -0
- package/lib/components/upload/AutoBeFileUploadBox.d.ts +8 -0
- package/lib/components/upload/AutoBeFileUploadBox.js.map +1 -0
- package/lib/components/upload/AutoBeUploadConfig.d.ts +9 -0
- package/lib/components/upload/AutoBeUploadConfig.js +3 -0
- package/lib/components/upload/AutoBeUploadConfig.js.map +1 -0
- package/lib/{AutoBeVoiceRecoderButton.js → components/upload/AutoBeVoiceRecoderButton.js} +2 -2
- package/lib/components/upload/AutoBeVoiceRecoderButton.js.map +1 -0
- package/lib/components/upload/index.d.ts +5 -0
- package/lib/components/upload/index.js +22 -0
- package/lib/components/upload/index.js.map +1 -0
- package/lib/constant/color.d.ts +22 -0
- package/lib/constant/color.js +29 -0
- package/lib/constant/color.js.map +1 -0
- package/lib/context/AutoBeAgentContext.d.ts +20 -0
- package/lib/context/AutoBeAgentContext.js +50 -0
- package/lib/context/AutoBeAgentContext.js.map +1 -0
- package/lib/hooks/index.d.ts +3 -0
- package/lib/hooks/index.js +20 -0
- package/lib/hooks/index.js.map +1 -0
- package/lib/hooks/useEscapeKey.d.ts +7 -0
- package/lib/hooks/useEscapeKey.js +27 -0
- package/lib/hooks/useEscapeKey.js.map +1 -0
- package/lib/hooks/useIsomorphicLayoutEffect.d.ts +6 -0
- package/lib/hooks/useIsomorphicLayoutEffect.js +10 -0
- package/lib/hooks/useIsomorphicLayoutEffect.js.map +1 -0
- package/lib/hooks/useMediaQuery.d.ts +16 -0
- package/lib/hooks/useMediaQuery.js +57 -0
- package/lib/hooks/useMediaQuery.js.map +1 -0
- package/lib/icons/Receipt.d.ts +12 -0
- package/lib/icons/Receipt.js +9 -0
- package/lib/icons/Receipt.js.map +1 -0
- package/lib/index.d.ts +4 -8
- package/lib/index.js +4 -17
- package/lib/index.js.map +1 -1
- package/lib/structure/AutoBeListener.d.ts +17 -0
- package/lib/structure/AutoBeListener.js +250 -0
- package/lib/structure/AutoBeListener.js.map +1 -0
- package/lib/structure/AutoBeListenerState.d.ts +14 -0
- package/lib/structure/AutoBeListenerState.js +39 -0
- package/lib/structure/AutoBeListenerState.js.map +1 -0
- package/lib/structure/IAutoBeEventGroup.d.ts +5 -0
- package/lib/structure/IAutoBeEventGroup.js +3 -0
- package/lib/structure/IAutoBeEventGroup.js.map +1 -0
- package/lib/structure/index.d.ts +3 -0
- package/lib/structure/index.js +20 -0
- package/lib/structure/index.js.map +1 -0
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.js +1 -0
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/number.d.ts +1 -0
- package/lib/utils/number.js +20 -0
- package/lib/utils/number.js.map +1 -0
- package/package.json +7 -11
- package/src/{AutoBeAssistantMessageMovie.tsx → components/AutoBeAssistantMessageMovie.tsx} +1 -1
- package/src/components/AutoBeChatMain.tsx +178 -0
- package/src/components/AutoBeStatusModal.tsx +483 -0
- package/src/{AutoBeUserMessageMovie.tsx → components/AutoBeUserMessageMovie.tsx} +3 -1
- package/src/{common → components/common}/ChatBubble.tsx +1 -1
- package/src/components/common/Collapsible.tsx +95 -0
- package/src/components/common/index.ts +2 -0
- package/src/{common → components/common}/openai/OpenAIUserTextContent.tsx +0 -1
- package/src/components/events/AutoBeCorrectEventMovie.tsx +368 -0
- package/src/components/events/AutoBeEventMovie.tsx +130 -0
- package/src/{events → components/events}/AutoBeValidateEventMovie.tsx +2 -2
- package/src/components/events/README.md +300 -0
- package/src/{events → components/events}/common/CollapsibleEventGroup.tsx +1 -10
- package/src/{events → components/events}/common/EventHeader.tsx +1 -1
- package/src/{events → components/events}/common/ProgressBar.tsx +3 -2
- package/src/components/events/groups/CorrectEventGroup.tsx +183 -0
- package/src/{events → components/events}/groups/ValidateEventGroup.tsx +3 -3
- package/src/{events → components/events}/groups/index.ts +4 -0
- package/src/{events → components/events}/index.ts +3 -4
- package/src/components/index.ts +7 -0
- package/src/components/upload/AutoBeChatUploadBox.tsx +374 -0
- package/src/{AutoBeFileUploadBox.tsx → components/upload/AutoBeFileUploadBox.tsx} +7 -8
- package/src/components/upload/AutoBeUploadConfig.ts +5 -0
- package/src/{AutoBeVoiceRecoderButton.tsx → components/upload/AutoBeVoiceRecoderButton.tsx} +2 -2
- package/src/components/upload/index.ts +5 -0
- package/src/constant/color.ts +28 -0
- package/src/context/AutoBeAgentContext.tsx +79 -0
- package/src/hooks/index.ts +3 -0
- package/src/hooks/useEscapeKey.ts +24 -0
- package/src/hooks/useIsomorphicLayoutEffect.ts +8 -0
- package/src/hooks/useMediaQuery.ts +73 -0
- package/src/icons/Receipt.tsx +74 -0
- package/src/index.ts +4 -14
- package/src/structure/AutoBeListener.ts +263 -0
- package/src/structure/AutoBeListenerState.ts +53 -0
- package/src/structure/IAutoBeEventGroup.ts +6 -0
- package/src/structure/index.ts +3 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/number.ts +17 -0
- package/tsconfig.json +2 -1
- package/lib/AutoBeAssistantMessageMovie.js.map +0 -1
- package/lib/AutoBeChatUploadSendButton.js.map +0 -1
- package/lib/AutoBeFileUploadBox.d.ts +0 -10
- package/lib/AutoBeFileUploadBox.js.map +0 -1
- package/lib/AutoBeUserMessageMovie.js.map +0 -1
- package/lib/AutoBeVoiceRecoderButton.js.map +0 -1
- package/lib/common/ChatBubble.js.map +0 -1
- package/lib/common/openai/OpenAIContent.js.map +0 -1
- package/lib/common/openai/OpenAIUserAudioContent.js.map +0 -1
- package/lib/common/openai/OpenAIUserFileContent.js.map +0 -1
- package/lib/common/openai/OpenAIUserImageContent.js.map +0 -1
- package/lib/common/openai/OpenAIUserTextContent.js.map +0 -1
- package/lib/common/openai/index.js.map +0 -1
- package/lib/events/AutoBeCompleteEventMovie.js.map +0 -1
- package/lib/events/AutoBeProgressEventMovie.js.map +0 -1
- package/lib/events/AutoBeScenarioEventMovie.js.map +0 -1
- package/lib/events/AutoBeStartEventMovie.js.map +0 -1
- package/lib/events/AutoBeValidateEventMovie.js.map +0 -1
- package/lib/events/common/CollapsibleEventGroup.js.map +0 -1
- package/lib/events/common/EventCard.js.map +0 -1
- package/lib/events/common/EventContent.js.map +0 -1
- package/lib/events/common/EventHeader.js.map +0 -1
- package/lib/events/common/EventIcon.js.map +0 -1
- package/lib/events/common/ProgressBar.js.map +0 -1
- package/lib/events/common/index.js.map +0 -1
- package/lib/events/groups/ValidateEventGroup.js.map +0 -1
- package/lib/events/groups/index.js +0 -6
- package/lib/events/groups/index.js.map +0 -1
- package/lib/events/index.js.map +0 -1
- package/lib/events/utils/eventGrouper.js.map +0 -1
- package/lib/events/utils/index.js.map +0 -1
- package/src/events/README.md +0 -169
- /package/lib/{common → components/common}/ChatBubble.d.ts +0 -0
- /package/lib/{common → components/common}/openai/OpenAIContent.d.ts +0 -0
- /package/lib/{common → components/common}/openai/OpenAIContent.js +0 -0
- /package/lib/{common → components/common}/openai/OpenAIUserAudioContent.d.ts +0 -0
- /package/lib/{common → components/common}/openai/OpenAIUserAudioContent.js +0 -0
- /package/lib/{common → components/common}/openai/OpenAIUserFileContent.d.ts +0 -0
- /package/lib/{common → components/common}/openai/OpenAIUserFileContent.js +0 -0
- /package/lib/{common → components/common}/openai/OpenAIUserImageContent.d.ts +0 -0
- /package/lib/{common → components/common}/openai/OpenAIUserImageContent.js +0 -0
- /package/lib/{common → components/common}/openai/OpenAIUserTextContent.d.ts +0 -0
- /package/lib/{common → components/common}/openai/index.d.ts +0 -0
- /package/lib/{common → components/common}/openai/index.js +0 -0
- /package/lib/{events → components/events}/AutoBeCompleteEventMovie.d.ts +0 -0
- /package/lib/{events → components/events}/AutoBeCompleteEventMovie.js +0 -0
- /package/lib/{events → components/events}/AutoBeProgressEventMovie.d.ts +0 -0
- /package/lib/{events → components/events}/AutoBeProgressEventMovie.js +0 -0
- /package/lib/{events → components/events}/AutoBeScenarioEventMovie.d.ts +0 -0
- /package/lib/{events → components/events}/AutoBeScenarioEventMovie.js +0 -0
- /package/lib/{events → components/events}/AutoBeStartEventMovie.d.ts +0 -0
- /package/lib/{events → components/events}/AutoBeStartEventMovie.js +0 -0
- /package/lib/{events → components/events}/AutoBeValidateEventMovie.d.ts +0 -0
- /package/lib/{events → components/events}/common/CollapsibleEventGroup.d.ts +0 -0
- /package/lib/{events → components/events}/common/EventCard.d.ts +0 -0
- /package/lib/{events → components/events}/common/EventCard.js +0 -0
- /package/lib/{events → components/events}/common/EventContent.d.ts +0 -0
- /package/lib/{events → components/events}/common/EventContent.js +0 -0
- /package/lib/{events → components/events}/common/EventHeader.d.ts +0 -0
- /package/lib/{events → components/events}/common/EventIcon.d.ts +0 -0
- /package/lib/{events → components/events}/common/EventIcon.js +0 -0
- /package/lib/{events → components/events}/common/ProgressBar.d.ts +0 -0
- /package/lib/{events → components/events}/common/index.d.ts +0 -0
- /package/lib/{events → components/events}/common/index.js +0 -0
- /package/lib/{events → components/events}/groups/ValidateEventGroup.d.ts +0 -0
- /package/lib/{events → components/events}/utils/eventGrouper.d.ts +0 -0
- /package/lib/{events → components/events}/utils/eventGrouper.js +0 -0
- /package/lib/{events → components/events}/utils/index.d.ts +0 -0
- /package/lib/{events → components/events}/utils/index.js +0 -0
- /package/lib/{AutoBeChatUploadSendButton.d.ts → components/upload/AutoBeChatUploadSendButton.d.ts} +0 -0
- /package/lib/{AutoBeChatUploadSendButton.js → components/upload/AutoBeChatUploadSendButton.js} +0 -0
- /package/lib/{AutoBeFileUploadBox.js → components/upload/AutoBeFileUploadBox.js} +0 -0
- /package/lib/{AutoBeVoiceRecoderButton.d.ts → components/upload/AutoBeVoiceRecoderButton.d.ts} +0 -0
- /package/src/{common → components/common}/openai/OpenAIContent.tsx +0 -0
- /package/src/{common → components/common}/openai/OpenAIUserAudioContent.tsx +0 -0
- /package/src/{common → components/common}/openai/OpenAIUserFileContent.tsx +0 -0
- /package/src/{common → components/common}/openai/OpenAIUserImageContent.tsx +0 -0
- /package/src/{common → components/common}/openai/index.ts +0 -0
- /package/src/{events → components/events}/AutoBeCompleteEventMovie.tsx +0 -0
- /package/src/{events → components/events}/AutoBeProgressEventMovie.tsx +0 -0
- /package/src/{events → components/events}/AutoBeScenarioEventMovie.tsx +0 -0
- /package/src/{events → components/events}/AutoBeStartEventMovie.tsx +0 -0
- /package/src/{events → components/events}/common/EventCard.tsx +0 -0
- /package/src/{events → components/events}/common/EventContent.tsx +0 -0
- /package/src/{events → components/events}/common/EventIcon.tsx +0 -0
- /package/src/{events → components/events}/common/index.ts +0 -0
- /package/src/{events → components/events}/utils/eventGrouper.tsx +0 -0
- /package/src/{events → components/events}/utils/index.ts +0 -0
- /package/src/{AutoBeChatUploadSendButton.tsx → components/upload/AutoBeChatUploadSendButton.tsx} +0 -0
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
# AutoBe Event Components
|
|
2
|
+
|
|
3
|
+
Event UI components for the AutoBe platform with comprehensive event handling, grouping, and collapsible functionality.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The AutoBe Event system provides a complete solution for displaying various types of events in the AutoBe workflow. The main entry point is `AutoBeEventMovie`, which intelligently routes different event types to their appropriate components.
|
|
8
|
+
|
|
9
|
+
## Main Event Router
|
|
10
|
+
|
|
11
|
+
### AutoBeEventMovie
|
|
12
|
+
The central component that handles all event types and routes them to appropriate sub-components.
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
import { AutoBeEventMovie } from "@autobe/ui/events";
|
|
16
|
+
|
|
17
|
+
<AutoBeEventMovie
|
|
18
|
+
service={rpcService}
|
|
19
|
+
events={eventArray}
|
|
20
|
+
last={isLastEvent}
|
|
21
|
+
/>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Supported Event Types:**
|
|
25
|
+
- **Message Events**: `userMessage`, `assistantMessage`
|
|
26
|
+
- **Start Events**: `analyzeStart`, `prismaStart`, `interfaceStart`, `testStart`, `realizeStart`, `realizeTestStart`, `realizeAuthorizationStart`
|
|
27
|
+
- **Scenario Events**: `analyzeScenario`, `prismaComponents`, `interfaceGroups`, `realizeTestReset`
|
|
28
|
+
- **Progress Events**: `analyzeWrite`, `analyzeReview`, `interfaceEndpoints`, `prismaSchemas`, `prismaReview`, `interfaceOperations`, `interfaceOperationsReview`, `interfaceAuthorization`, `interfaceSchemas`, `interfaceSchemasReview`, `testWrite`, `testScenarios`, `realizeWrite`, `realizeAuthorizationWrite`, `realizeTestOperation`
|
|
29
|
+
- **Validate Events**: `prismaInsufficient`, `prismaValidate`, `interfaceComplement`, `testValidate`, `realizeValidate`, `realizeAuthorizationValidate`
|
|
30
|
+
- **Complete Events**: `analyzeComplete`, `prismaComplete`, `interfaceComplete`, `testComplete`, `realizeComplete`
|
|
31
|
+
|
|
32
|
+
## Individual Event Components
|
|
33
|
+
|
|
34
|
+
### AutoBeProgressEventMovie
|
|
35
|
+
Shows progress tracking events with animated progress bars and status indicators.
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
import { AutoBeProgressEventMovie } from "@autobe/ui/events";
|
|
39
|
+
|
|
40
|
+
<AutoBeProgressEventMovie event={progressEvent} />
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### AutoBeValidateEventMovie
|
|
44
|
+
Displays validation events with detailed error/success states and validation results.
|
|
45
|
+
|
|
46
|
+
```tsx
|
|
47
|
+
import { AutoBeValidateEventMovie } from "@autobe/ui/events";
|
|
48
|
+
|
|
49
|
+
<AutoBeValidateEventMovie event={validateEvent} />
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### AutoBeScenarioEventMovie
|
|
53
|
+
Shows scenario analysis and component generation events with structured data display.
|
|
54
|
+
|
|
55
|
+
```tsx
|
|
56
|
+
import { AutoBeScenarioEventMovie } from "@autobe/ui/events";
|
|
57
|
+
|
|
58
|
+
<AutoBeScenarioEventMovie event={scenarioEvent} />
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### AutoBeStartEventMovie
|
|
62
|
+
Displays pipeline start events with clean status indicators and timing information.
|
|
63
|
+
|
|
64
|
+
```tsx
|
|
65
|
+
import { AutoBeStartEventMovie } from "@autobe/ui/events";
|
|
66
|
+
|
|
67
|
+
<AutoBeStartEventMovie event={startEvent} />
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### AutoBeCompleteEventMovie
|
|
71
|
+
Shows completion events with file download capabilities and summary statistics.
|
|
72
|
+
|
|
73
|
+
```tsx
|
|
74
|
+
import { AutoBeCompleteEventMovie } from "@autobe/ui/events";
|
|
75
|
+
|
|
76
|
+
<AutoBeCompleteEventMovie
|
|
77
|
+
event={completeEvent}
|
|
78
|
+
getFiles={service.getFiles}
|
|
79
|
+
/>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Grouped Event Components
|
|
83
|
+
|
|
84
|
+
### ValidateEventGroup
|
|
85
|
+
Intelligently groups validation events with success rate statistics and collapsible interface.
|
|
86
|
+
|
|
87
|
+
```tsx
|
|
88
|
+
import { ValidateEventGroup } from "@autobe/ui/events";
|
|
89
|
+
|
|
90
|
+
<ValidateEventGroup
|
|
91
|
+
events={validateEvents}
|
|
92
|
+
defaultCollapsed={true}
|
|
93
|
+
/>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Features:**
|
|
97
|
+
- Automatic success/failure rate calculation
|
|
98
|
+
- Collapsible interface for better UX
|
|
99
|
+
- Grouped display for multiple validation events
|
|
100
|
+
- Individual event access when expanded
|
|
101
|
+
|
|
102
|
+
## Message Components
|
|
103
|
+
|
|
104
|
+
### AutoBeUserMessageMovie
|
|
105
|
+
Displays user messages with support for various content types (text, files, images, audio).
|
|
106
|
+
|
|
107
|
+
```tsx
|
|
108
|
+
import { AutoBeUserMessageMovie } from "@autobe/ui";
|
|
109
|
+
|
|
110
|
+
<AutoBeUserMessageMovie message={userMessageContents} />
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### AutoBeAssistantMessageMovie
|
|
114
|
+
Shows assistant responses with timestamps and custom assistant names.
|
|
115
|
+
|
|
116
|
+
```tsx
|
|
117
|
+
import { AutoBeAssistantMessageMovie } from "@autobe/ui";
|
|
118
|
+
|
|
119
|
+
<AutoBeAssistantMessageMovie
|
|
120
|
+
text={responseText}
|
|
121
|
+
isoTimestamp={timestamp}
|
|
122
|
+
assistantName="AutoBe"
|
|
123
|
+
/>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Automatic Event Grouping
|
|
127
|
+
|
|
128
|
+
Use the `groupEvents` utility to automatically group events by type:
|
|
129
|
+
|
|
130
|
+
```tsx
|
|
131
|
+
import { groupEvents } from "@autobe/ui/events/utils/eventGrouper";
|
|
132
|
+
|
|
133
|
+
const EventList = ({ events }: { events: AutoBeEvent[] }) => {
|
|
134
|
+
const groupedComponents = groupEvents(events, {
|
|
135
|
+
minGroupSize: 3, // Minimum events to form a group
|
|
136
|
+
defaultCollapsed: true, // Start collapsed
|
|
137
|
+
enableGrouping: true, // Enable grouping
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
return (
|
|
141
|
+
<div>
|
|
142
|
+
{groupedComponents}
|
|
143
|
+
</div>
|
|
144
|
+
);
|
|
145
|
+
};
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Custom Collapsible Groups
|
|
149
|
+
|
|
150
|
+
Create custom event groups using the `CollapsibleEventGroup` component:
|
|
151
|
+
|
|
152
|
+
```tsx
|
|
153
|
+
import { CollapsibleEventGroup } from "@autobe/ui/events";
|
|
154
|
+
|
|
155
|
+
<CollapsibleEventGroup
|
|
156
|
+
events={customEvents}
|
|
157
|
+
title="Custom Event Group"
|
|
158
|
+
iconType="info"
|
|
159
|
+
getTimestamp={(event) => event.created_at}
|
|
160
|
+
renderEvent={(event, index) => <CustomEventComponent event={event} />}
|
|
161
|
+
renderSummary={(events) => <CustomSummary events={events} />}
|
|
162
|
+
defaultCollapsed={true}
|
|
163
|
+
description="Custom grouped events"
|
|
164
|
+
/>
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Common Components
|
|
168
|
+
|
|
169
|
+
### EventCard
|
|
170
|
+
Basic card container for consistent styling across all event types.
|
|
171
|
+
|
|
172
|
+
```tsx
|
|
173
|
+
import { EventCard } from "@autobe/ui/events";
|
|
174
|
+
|
|
175
|
+
<EventCard>
|
|
176
|
+
<div>Your content here</div>
|
|
177
|
+
</EventCard>
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### EventHeader
|
|
181
|
+
Standardized header with icon, title, timestamp, and step numbering.
|
|
182
|
+
|
|
183
|
+
```tsx
|
|
184
|
+
import { EventHeader } from "@autobe/ui/events";
|
|
185
|
+
|
|
186
|
+
<EventHeader
|
|
187
|
+
title="Event Title"
|
|
188
|
+
timestamp="2024-01-01T12:00:00Z"
|
|
189
|
+
iconType="success"
|
|
190
|
+
step={1}
|
|
191
|
+
/>
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### EventContent
|
|
195
|
+
Consistent content area styling with proper spacing and typography.
|
|
196
|
+
|
|
197
|
+
```tsx
|
|
198
|
+
import { EventContent } from "@autobe/ui/events";
|
|
199
|
+
|
|
200
|
+
<EventContent>
|
|
201
|
+
<div>Your content here</div>
|
|
202
|
+
</EventContent>
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### EventIcon
|
|
206
|
+
Consistent icons for different event states with customizable sizes.
|
|
207
|
+
|
|
208
|
+
```tsx
|
|
209
|
+
import { EventIcon } from "@autobe/ui/events";
|
|
210
|
+
|
|
211
|
+
<EventIcon type="success" size={16} />
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**Available icon types:** `success`, `progress`, `warning`, `error`, `info`, `start`
|
|
215
|
+
|
|
216
|
+
### ProgressBar
|
|
217
|
+
Reusable progress bar component with customizable styling.
|
|
218
|
+
|
|
219
|
+
```tsx
|
|
220
|
+
import { ProgressBar } from "@autobe/ui/events";
|
|
221
|
+
|
|
222
|
+
<ProgressBar
|
|
223
|
+
current={7}
|
|
224
|
+
total={10}
|
|
225
|
+
color="#4caf50"
|
|
226
|
+
showLabel={true}
|
|
227
|
+
/>
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## Event Flow Architecture
|
|
231
|
+
|
|
232
|
+
The AutoBe event system follows a predictable flow:
|
|
233
|
+
|
|
234
|
+
1. **Start Events** → Initialize pipeline stages
|
|
235
|
+
2. **Scenario Events** → Analyze and plan components
|
|
236
|
+
3. **Progress Events** → Track ongoing operations
|
|
237
|
+
4. **Validate Events** → Verify outputs and handle errors
|
|
238
|
+
5. **Complete Events** → Finalize and provide results
|
|
239
|
+
|
|
240
|
+
## Advanced Usage
|
|
241
|
+
|
|
242
|
+
### Custom Event Handlers
|
|
243
|
+
|
|
244
|
+
```tsx
|
|
245
|
+
import { AutoBeEventMovie, IAutoBeEventMovieProps } from "@autobe/ui/events";
|
|
246
|
+
|
|
247
|
+
const CustomEventHandler = ({ events, service, last }: IAutoBeEventMovieProps<AutoBeEvent>) => {
|
|
248
|
+
// Pre-process events if needed
|
|
249
|
+
const processedEvents = preprocessEvents(events);
|
|
250
|
+
|
|
251
|
+
return (
|
|
252
|
+
<AutoBeEventMovie
|
|
253
|
+
events={processedEvents}
|
|
254
|
+
service={service}
|
|
255
|
+
last={last}
|
|
256
|
+
/>
|
|
257
|
+
);
|
|
258
|
+
};
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### Event Filtering
|
|
262
|
+
|
|
263
|
+
```tsx
|
|
264
|
+
const filteredEvents = events.filter(event =>
|
|
265
|
+
!['vendorRequest', 'vendorResponse', 'jsonParseError'].includes(event.type)
|
|
266
|
+
);
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
## TypeScript Support
|
|
270
|
+
|
|
271
|
+
All components are fully typed with comprehensive interfaces:
|
|
272
|
+
|
|
273
|
+
```tsx
|
|
274
|
+
interface IAutoBeEventMovieProps<Event extends AutoBeEvent> {
|
|
275
|
+
service: IAutoBeRpcService;
|
|
276
|
+
events: Event[];
|
|
277
|
+
last: boolean;
|
|
278
|
+
}
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
## Features
|
|
282
|
+
|
|
283
|
+
- 🎯 **Intelligent Routing**: Automatic event type detection and routing
|
|
284
|
+
- 📱 **Responsive Design**: Works seamlessly on all screen sizes
|
|
285
|
+
- 🔄 **Smart Grouping**: Automatic grouping of related events
|
|
286
|
+
- 📊 **Rich Statistics**: Built-in progress and error rate calculations
|
|
287
|
+
- 🎨 **Consistent Styling**: Unified design system across all components
|
|
288
|
+
- 💎 **Full TypeScript**: Complete type safety and IntelliSense support
|
|
289
|
+
- ⚡ **Optimized Performance**: Efficient rendering with minimal re-renders
|
|
290
|
+
- 🔧 **Highly Customizable**: Easy to extend and customize for specific needs
|
|
291
|
+
- 🎪 **Animation Support**: Smooth transitions and progress animations
|
|
292
|
+
- 📁 **File Management**: Built-in file download and management capabilities
|
|
293
|
+
|
|
294
|
+
## Best Practices
|
|
295
|
+
|
|
296
|
+
1. **Always use AutoBeEventMovie** as the main entry point for event rendering
|
|
297
|
+
2. **Group related validation events** for better user experience
|
|
298
|
+
3. **Provide meaningful timestamps** for all events
|
|
299
|
+
4. **Use consistent naming** for custom event types
|
|
300
|
+
5. **Handle edge cases** gracefully with null returns for unsupported events
|
|
@@ -143,16 +143,7 @@ export const CollapsibleEventGroup = <T,>(
|
|
|
143
143
|
}}
|
|
144
144
|
>
|
|
145
145
|
{events.map((event, index) => (
|
|
146
|
-
<div
|
|
147
|
-
key={index}
|
|
148
|
-
style={{
|
|
149
|
-
border: "1px solid #e2e8f0",
|
|
150
|
-
borderRadius: "0.5rem",
|
|
151
|
-
overflow: "hidden",
|
|
152
|
-
}}
|
|
153
|
-
>
|
|
154
|
-
{renderEvent(event, index)}
|
|
155
|
-
</div>
|
|
146
|
+
<div key={index}>{renderEvent(event, index)}</div>
|
|
156
147
|
))}
|
|
157
148
|
</div>
|
|
158
149
|
)}
|
|
@@ -21,7 +21,8 @@ export const ProgressBar = (props: IProgressBarProps) => {
|
|
|
21
21
|
showLabel = true,
|
|
22
22
|
} = props;
|
|
23
23
|
|
|
24
|
-
const
|
|
24
|
+
const calibratedCurrent = current > total ? total : current;
|
|
25
|
+
const percentage = Math.round((calibratedCurrent / total) * 100);
|
|
25
26
|
|
|
26
27
|
return (
|
|
27
28
|
<>
|
|
@@ -53,7 +54,7 @@ export const ProgressBar = (props: IProgressBarProps) => {
|
|
|
53
54
|
textAlign: "center",
|
|
54
55
|
}}
|
|
55
56
|
>
|
|
56
|
-
{
|
|
57
|
+
{calibratedCurrent} / {total} completed
|
|
57
58
|
</div>
|
|
58
59
|
)}
|
|
59
60
|
</>
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AutoBePrismaCorrectEvent,
|
|
3
|
+
AutoBeRealizeAuthorizationCorrectEvent,
|
|
4
|
+
AutoBeRealizeCorrectEvent,
|
|
5
|
+
AutoBeTestCorrectEvent,
|
|
6
|
+
} from "@autobe/interface";
|
|
7
|
+
|
|
8
|
+
import { AutoBeCorrectEventMovie } from "../AutoBeCorrectEventMovie";
|
|
9
|
+
import { CollapsibleEventGroup } from "../common/CollapsibleEventGroup";
|
|
10
|
+
|
|
11
|
+
type CorrectEvent =
|
|
12
|
+
| AutoBePrismaCorrectEvent
|
|
13
|
+
| AutoBeTestCorrectEvent
|
|
14
|
+
| AutoBeRealizeCorrectEvent
|
|
15
|
+
| AutoBeRealizeAuthorizationCorrectEvent;
|
|
16
|
+
|
|
17
|
+
export interface ICorrectEventGroupProps {
|
|
18
|
+
events: CorrectEvent[];
|
|
19
|
+
defaultCollapsed?: boolean;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Specialized group component for correction events Shows correction summary
|
|
24
|
+
* and statistics
|
|
25
|
+
*/
|
|
26
|
+
export const CorrectEventGroup = (props: ICorrectEventGroupProps) => {
|
|
27
|
+
const { events, defaultCollapsed = true } = props;
|
|
28
|
+
|
|
29
|
+
if (events.length === 0) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Calculate correction statistics
|
|
34
|
+
const eventTypes = Array.from(new Set(events.map((e) => e.type)));
|
|
35
|
+
const eventTypeCounts = eventTypes.reduce(
|
|
36
|
+
(acc, type) => {
|
|
37
|
+
acc[type] = events.filter((e) => e.type === type).length;
|
|
38
|
+
return acc;
|
|
39
|
+
},
|
|
40
|
+
{} as Record<string, number>,
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
// Get latest step numbers for each event type
|
|
44
|
+
const latestSteps = eventTypes.reduce(
|
|
45
|
+
(acc, type) => {
|
|
46
|
+
const eventsOfType = events.filter((e) => e.type === type);
|
|
47
|
+
acc[type] = Math.max(...eventsOfType.map((e) => e.step));
|
|
48
|
+
return acc;
|
|
49
|
+
},
|
|
50
|
+
{} as Record<string, number>,
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
const renderSummary = (events: CorrectEvent[]) => (
|
|
54
|
+
<>
|
|
55
|
+
Correction events showing AI self-improvement feedback loop
|
|
56
|
+
<br />
|
|
57
|
+
<br />
|
|
58
|
+
<strong>Success Rate:</strong> 100% (All corrections applied successfully)
|
|
59
|
+
<br />
|
|
60
|
+
<strong>Total Corrections:</strong> {events.length} events
|
|
61
|
+
<br />
|
|
62
|
+
<strong>Event Types:</strong> {eventTypes.join(", ")}
|
|
63
|
+
<br />
|
|
64
|
+
<br />
|
|
65
|
+
<div
|
|
66
|
+
style={{
|
|
67
|
+
display: "flex",
|
|
68
|
+
flexDirection: "column",
|
|
69
|
+
gap: "0.5rem",
|
|
70
|
+
}}
|
|
71
|
+
>
|
|
72
|
+
{eventTypes.map((type) => {
|
|
73
|
+
const typeDisplayNames = {
|
|
74
|
+
prismaCorrect: "🗄️ Database Schema",
|
|
75
|
+
testCorrect: "🧪 Test Suite",
|
|
76
|
+
realizeCorrect: "⚙️ Implementation",
|
|
77
|
+
realizeAuthorizationCorrect: "🔐 Authorization",
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
return (
|
|
81
|
+
<div
|
|
82
|
+
key={type}
|
|
83
|
+
style={{
|
|
84
|
+
display: "flex",
|
|
85
|
+
justifyContent: "space-between",
|
|
86
|
+
alignItems: "center",
|
|
87
|
+
padding: "0.5rem",
|
|
88
|
+
backgroundColor: "#f0fdf4",
|
|
89
|
+
borderRadius: "0.25rem",
|
|
90
|
+
border: "1px solid #bbf7d0",
|
|
91
|
+
}}
|
|
92
|
+
>
|
|
93
|
+
<span style={{ fontSize: "0.75rem", fontWeight: "500" }}>
|
|
94
|
+
{typeDisplayNames[type as keyof typeof typeDisplayNames] ||
|
|
95
|
+
type}
|
|
96
|
+
</span>
|
|
97
|
+
<div
|
|
98
|
+
style={{ display: "flex", gap: "1rem", alignItems: "center" }}
|
|
99
|
+
>
|
|
100
|
+
<span style={{ fontSize: "0.75rem", color: "#16a34a" }}>
|
|
101
|
+
{eventTypeCounts[type]} corrections
|
|
102
|
+
</span>
|
|
103
|
+
<span
|
|
104
|
+
style={{
|
|
105
|
+
fontSize: "0.625rem",
|
|
106
|
+
color: "#64748b",
|
|
107
|
+
fontFamily: "monospace",
|
|
108
|
+
backgroundColor: "#e2e8f0",
|
|
109
|
+
padding: "0.125rem 0.375rem",
|
|
110
|
+
borderRadius: "0.25rem",
|
|
111
|
+
}}
|
|
112
|
+
>
|
|
113
|
+
Step {latestSteps[type]}
|
|
114
|
+
</span>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
);
|
|
118
|
+
})}
|
|
119
|
+
</div>
|
|
120
|
+
<br />
|
|
121
|
+
<div
|
|
122
|
+
style={{
|
|
123
|
+
display: "flex",
|
|
124
|
+
gap: "0.5rem",
|
|
125
|
+
alignItems: "center",
|
|
126
|
+
}}
|
|
127
|
+
>
|
|
128
|
+
<div
|
|
129
|
+
style={{
|
|
130
|
+
display: "flex",
|
|
131
|
+
alignItems: "center",
|
|
132
|
+
gap: "0.25rem",
|
|
133
|
+
}}
|
|
134
|
+
>
|
|
135
|
+
<div
|
|
136
|
+
style={{
|
|
137
|
+
width: "12px",
|
|
138
|
+
height: "12px",
|
|
139
|
+
backgroundColor: "#16a34a",
|
|
140
|
+
borderRadius: "2px",
|
|
141
|
+
}}
|
|
142
|
+
/>
|
|
143
|
+
<span style={{ fontSize: "0.75rem" }}>
|
|
144
|
+
Corrected: {events.length}
|
|
145
|
+
</span>
|
|
146
|
+
</div>
|
|
147
|
+
<div
|
|
148
|
+
style={{
|
|
149
|
+
display: "flex",
|
|
150
|
+
alignItems: "center",
|
|
151
|
+
gap: "0.25rem",
|
|
152
|
+
}}
|
|
153
|
+
>
|
|
154
|
+
<div
|
|
155
|
+
style={{
|
|
156
|
+
width: "12px",
|
|
157
|
+
height: "12px",
|
|
158
|
+
backgroundColor: "#10b981",
|
|
159
|
+
borderRadius: "2px",
|
|
160
|
+
}}
|
|
161
|
+
/>
|
|
162
|
+
<span style={{ fontSize: "0.75rem" }}>Self-Improvement Active</span>
|
|
163
|
+
</div>
|
|
164
|
+
</div>
|
|
165
|
+
</>
|
|
166
|
+
);
|
|
167
|
+
|
|
168
|
+
return (
|
|
169
|
+
<CollapsibleEventGroup
|
|
170
|
+
events={events}
|
|
171
|
+
title="Correction Events"
|
|
172
|
+
iconType="success"
|
|
173
|
+
variant="success"
|
|
174
|
+
getTimestamp={(event) => event.created_at}
|
|
175
|
+
renderEvent={(event) => <AutoBeCorrectEventMovie event={event} />}
|
|
176
|
+
renderSummary={renderSummary}
|
|
177
|
+
defaultCollapsed={defaultCollapsed}
|
|
178
|
+
description="AI self-correction and improvement events"
|
|
179
|
+
/>
|
|
180
|
+
);
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
export default CorrectEventGroup;
|
|
@@ -110,7 +110,7 @@ export const ValidateEventGroup = (props: IValidateEventGroupProps) => {
|
|
|
110
110
|
style={{
|
|
111
111
|
width: "12px",
|
|
112
112
|
height: "12px",
|
|
113
|
-
backgroundColor: "#
|
|
113
|
+
backgroundColor: "#f59e0b",
|
|
114
114
|
borderRadius: "2px",
|
|
115
115
|
}}
|
|
116
116
|
/>
|
|
@@ -122,13 +122,13 @@ export const ValidateEventGroup = (props: IValidateEventGroupProps) => {
|
|
|
122
122
|
|
|
123
123
|
const getGroupIconType = () => {
|
|
124
124
|
if (errorEvents === 0) return "success"; // All successful
|
|
125
|
-
if (successEvents === 0) return "
|
|
125
|
+
if (successEvents === 0) return "warning"; // All failed
|
|
126
126
|
return "warning"; // Mixed results
|
|
127
127
|
};
|
|
128
128
|
|
|
129
129
|
const getGroupVariant = () => {
|
|
130
130
|
if (errorEvents === 0) return "success"; // All successful
|
|
131
|
-
if (successEvents === 0) return "
|
|
131
|
+
if (successEvents === 0) return "warning"; // All failed
|
|
132
132
|
return "warning"; // Mixed results
|
|
133
133
|
};
|
|
134
134
|
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
export { default as AutoBeStartEventMovie } from "./AutoBeStartEventMovie";
|
|
2
2
|
export { default as AutoBeScenarioEventMovie } from "./AutoBeScenarioEventMovie";
|
|
3
3
|
export { default as AutoBeProgressEventMovie } from "./AutoBeProgressEventMovie";
|
|
4
|
+
export { default as AutoBeCompleteEventMovie } from "./AutoBeCompleteEventMovie";
|
|
4
5
|
export { default as AutoBeValidateEventMovie } from "./AutoBeValidateEventMovie";
|
|
5
|
-
export {
|
|
6
|
-
|
|
7
|
-
type IAutoBeCompleteEventMovieProps,
|
|
8
|
-
} from "./AutoBeCompleteEventMovie";
|
|
6
|
+
export { default as AutoBeCorrectEventMovie } from "./AutoBeCorrectEventMovie";
|
|
7
|
+
export { default as AutoBeEventMovie } from "./AutoBeEventMovie";
|
|
9
8
|
|
|
10
9
|
// Common components
|
|
11
10
|
export * from "./common";
|