@aws-amplify/ui-react-ai 0.3.2 → 1.0.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 (71) hide show
  1. package/dist/esm/components/AIConversation/AIConversation.mjs +21 -33
  2. package/dist/esm/components/AIConversation/AIConversationProvider.mjs +22 -16
  3. package/dist/esm/components/AIConversation/context/AIContextContext.mjs +8 -0
  4. package/dist/esm/components/AIConversation/context/FallbackComponentContext.mjs +8 -0
  5. package/dist/esm/components/AIConversation/context/MessageRenderContext.mjs +9 -0
  6. package/dist/esm/components/AIConversation/context/ResponseComponentsContext.mjs +6 -2
  7. package/dist/esm/components/AIConversation/context/WelcomeMessageContext.mjs +8 -0
  8. package/dist/esm/components/AIConversation/createAIConversation.mjs +18 -22
  9. package/dist/esm/components/AIConversation/views/Controls/ActionsBarControl.mjs +6 -2
  10. package/dist/esm/components/AIConversation/views/Controls/AttachFileControl.mjs +5 -0
  11. package/dist/esm/components/AIConversation/views/Controls/AttachmentListControl.mjs +5 -0
  12. package/dist/esm/components/AIConversation/views/Controls/AvatarControl.mjs +5 -0
  13. package/dist/esm/components/AIConversation/views/Controls/DefaultMessageControl.mjs +31 -0
  14. package/dist/esm/components/AIConversation/views/Controls/{FieldControl.mjs → FormControl.mjs} +22 -13
  15. package/dist/esm/components/AIConversation/views/Controls/MessagesControl.mjs +42 -42
  16. package/dist/esm/components/AIConversation/views/Controls/PromptControl.mjs +9 -36
  17. package/dist/esm/components/AIConversation/views/default/Form.mjs +4 -5
  18. package/dist/esm/components/AIConversation/views/default/MessageList.mjs +34 -16
  19. package/dist/esm/components/AIConversation/views/default/PromptList.mjs +1 -1
  20. package/dist/esm/hooks/contentFromEvents.mjs +22 -0
  21. package/dist/esm/hooks/createAIHooks.mjs +0 -3
  22. package/dist/esm/hooks/exhaustivelyListMessages.mjs +19 -0
  23. package/dist/esm/hooks/shared.mjs +14 -0
  24. package/dist/esm/hooks/useAIConversation.mjs +246 -106
  25. package/dist/esm/hooks/useAIGeneration.mjs +1 -8
  26. package/dist/esm/index.mjs +0 -1
  27. package/dist/esm/version.mjs +3 -0
  28. package/dist/index.js +569 -444
  29. package/dist/types/components/AIConversation/AIConversation.d.ts +2 -19
  30. package/dist/types/components/AIConversation/AIConversationProvider.d.ts +2 -3
  31. package/dist/types/components/AIConversation/context/AIContextContext.d.ts +6 -0
  32. package/dist/types/components/AIConversation/context/ControlsContext.d.ts +1 -0
  33. package/dist/types/components/AIConversation/context/FallbackComponentContext.d.ts +7 -0
  34. package/dist/types/components/AIConversation/context/MessageRenderContext.d.ts +5 -0
  35. package/dist/types/components/AIConversation/context/ResponseComponentsContext.d.ts +2 -2
  36. package/dist/types/components/AIConversation/context/WelcomeMessageContext.d.ts +8 -0
  37. package/dist/types/components/AIConversation/context/elements/definitions.d.ts +1 -1
  38. package/dist/types/components/AIConversation/context/index.d.ts +5 -0
  39. package/dist/types/components/AIConversation/createAIConversation.d.ts +0 -3
  40. package/dist/types/components/AIConversation/index.d.ts +2 -1
  41. package/dist/types/components/AIConversation/types.d.ts +24 -36
  42. package/dist/types/components/AIConversation/utils.d.ts +2 -2
  43. package/dist/types/components/AIConversation/views/Controls/DefaultMessageControl.d.ts +2 -0
  44. package/dist/types/components/AIConversation/views/Controls/{FieldControl.d.ts → FormControl.d.ts} +2 -2
  45. package/dist/types/components/AIConversation/views/Controls/MessagesControl.d.ts +3 -9
  46. package/dist/types/components/AIConversation/views/Controls/PromptControl.d.ts +0 -3
  47. package/dist/types/components/AIConversation/views/Controls/index.d.ts +3 -4
  48. package/dist/types/components/AIConversation/views/default/Form.d.ts +1 -1
  49. package/dist/types/components/AIConversation/views/default/MessageList.d.ts +1 -1
  50. package/dist/types/components/AIConversation/views/default/PromptList.d.ts +1 -1
  51. package/dist/types/components/AIConversation/views/index.d.ts +2 -3
  52. package/dist/types/hooks/contentFromEvents.d.ts +2 -0
  53. package/dist/types/hooks/createAIHooks.d.ts +0 -3
  54. package/dist/types/hooks/exhaustivelyListMessages.d.ts +8 -0
  55. package/dist/types/hooks/index.d.ts +1 -2
  56. package/dist/types/hooks/shared.d.ts +23 -0
  57. package/dist/types/hooks/useAIConversation.d.ts +6 -4
  58. package/dist/types/hooks/useAIGeneration.d.ts +3 -13
  59. package/dist/types/index.d.ts +1 -1
  60. package/dist/types/types.d.ts +38 -7
  61. package/dist/types/version.d.ts +1 -0
  62. package/package.json +20 -6
  63. package/dist/ai-conversation-styles.css +0 -195
  64. package/dist/ai-conversation-styles.js +0 -2
  65. package/dist/esm/components/AIConversation/views/Controls/HeaderControl.mjs +0 -34
  66. package/dist/esm/components/AIConversation/views/ConversationView.mjs +0 -20
  67. package/dist/esm/hooks/AIContextProvider.mjs +0 -20
  68. package/dist/types/ai-conversation-styles.d.ts +0 -1
  69. package/dist/types/components/AIConversation/views/Controls/HeaderControl.d.ts +0 -9
  70. package/dist/types/components/AIConversation/views/ConversationView.d.ts +0 -2
  71. package/dist/types/hooks/AIContextProvider.d.ts +0 -17
@@ -1,195 +0,0 @@
1
- .ai-header__container {
2
- display: flex;
3
- flex-direction: row;
4
- flex: 0 0 auto;
5
- justify-content: space-between;
6
- border: 1px solid rgb(220, 222, 224);
7
- border-radius: 16px 16px 0px 0px;
8
- padding: 0px 16px;
9
- box-shadow: rgba(0, 0, 0, 0.07) 0px 12px 30px 0px;
10
- background-color: rgb(250, 250, 250);
11
- flex-grow: 1;
12
- }
13
-
14
- .ai-header__button {
15
- border: none;
16
- background: none;
17
- }
18
-
19
- .ai-prompts__prompt__buttongroup {
20
- display: flex;
21
- gap: 8px;
22
- }
23
-
24
- .ai-prompts__prompt__card {
25
- display: flex;
26
- flex-direction: column;
27
- flex: 1;
28
- border-radius: 8px;
29
- border-width: 0px;
30
- text-align: left;
31
- white-space: nowrap;
32
- padding: 12px;
33
- cursor: pointer;
34
- }
35
-
36
- .ai-prompts__prompt__card__header {
37
- font-weight: bold;
38
- }
39
-
40
- .ai-prompts__prompt__card__text {
41
- margin: 0px;
42
- overflow: hidden;
43
- text-overflow: ellipsis;
44
- }
45
-
46
- .ai-messages__container {
47
- display: flex;
48
- flex-direction: column;
49
- width: 100%;
50
- justify-content: flex-end;
51
- align-items: flex-start;
52
- gap: 16px;
53
- }
54
-
55
- .ai-message {
56
- display: flex;
57
- flex-direction: column;
58
- width: 480px;
59
- align-items: flex-start;
60
- }
61
-
62
- .ai-message__text {
63
- white-space: pre-wrap;
64
- }
65
-
66
- .ai-message--bubble-2.ai-message--user {
67
- justify-content: flex-end;
68
- }
69
-
70
- .ai-message__header__container {
71
- display: flex;
72
- flex-direction: row;
73
- align-items: center;
74
- gap: 12px;
75
- }
76
-
77
- .ai-message__image {
78
- width: 100%;
79
- }
80
-
81
- .ai-avatar__container {
82
- display: flex;
83
- flex-direction: row;
84
- gap: 12px;
85
- align-items: center;
86
- }
87
-
88
- .ai-avatar__icon {
89
- width: 40px;
90
- height: 40px;
91
- border-radius: 50%;
92
- display: flex;
93
- overflow: hidden;
94
- justify-content: center;
95
- align-items: center;
96
- }
97
-
98
- .ai-actions-bar__container {
99
- display: flex;
100
- align-items: flex-start;
101
- gap: 8px;
102
- }
103
-
104
- .ai-actions-bar__icon {
105
- width: 100%;
106
- height: 100%;
107
- }
108
-
109
- .ai-actions-bar__button {
110
- display: flex;
111
- width: 28px;
112
- height: 28px;
113
- justify-content: center;
114
- align-items: center;
115
- gap: 4px;
116
- overflow: hidden;
117
- }
118
-
119
- .ai-field__form {
120
- display: flex;
121
- flex-direction: row;
122
- align-items: flex-start;
123
- gap: 8px;
124
- }
125
-
126
- .ai-field__input-container {
127
- display: flex;
128
- flex-direction: column;
129
- align-items: flex-start;
130
- gap: 8px;
131
- flex: 1 0 0;
132
- }
133
-
134
- .ai-attachment-list__unordered-list {
135
- gap: 8px;
136
- display: flex;
137
- flex-direction: column;
138
- width: 70%;
139
- padding: 0px;
140
- }
141
-
142
- .ai-attachment__list-item {
143
- display: flex;
144
- align-items: center;
145
- gap: 8px;
146
- }
147
-
148
- .ai-attachment-text__container {
149
- display: flex;
150
- align-items: center;
151
- flex: 1;
152
- overflow: hidden;
153
- }
154
-
155
- .ai-attachment-text__separator {
156
- flex-shrink: 0;
157
- }
158
-
159
- .ai-attachment-text__file-name {
160
- flex: 1;
161
- overflow: hidden;
162
- text-overflow: ellipsis;
163
- }
164
-
165
- .ai-attachment-text__file-size {
166
- flex-shrink: 0;
167
- margin-left: 8px;
168
- }
169
-
170
- .ai-field__input {
171
- align-self: stretch;
172
- overflow: hidden;
173
- resize: none;
174
- }
175
-
176
- .ai-field__button {
177
- display: flex;
178
- width: 40px;
179
- height: 40px;
180
- justify-content: center;
181
- align-items: center;
182
- }
183
-
184
- .ai-field__visually-hidden {
185
- position: absolute;
186
- width: 1px;
187
- height: 1px;
188
- padding: 0;
189
- margin: -1px;
190
- fill: transparent;
191
- overflow: hidden;
192
- clip: rect(0, 0, 0, 0);
193
- white-space: nowrap;
194
- border-width: 0;
195
- }
@@ -1,2 +0,0 @@
1
- 'use strict';
2
-
@@ -1,34 +0,0 @@
1
- import React__default from 'react';
2
- import { withBaseElementProps } from '@aws-amplify/ui-react-core/elements';
3
- import { AIConversationElements } from '../../context/elements/definitions.mjs';
4
-
5
- const { View, Button, Icon, Text } = AIConversationElements;
6
- const HEADER_BLOCK = 'ai-header';
7
- const HeaderTextBase = withBaseElementProps(Text, {
8
- className: `${HEADER_BLOCK}__text`,
9
- });
10
- const HeaderText = React__default.forwardRef(function HeaderText(props, ref) {
11
- return React__default.createElement(HeaderTextBase, { ...props, ref: ref });
12
- });
13
- const CloseIcon = withBaseElementProps(Icon, {
14
- className: `${HEADER_BLOCK}__icon`,
15
- variant: 'close',
16
- });
17
- const CloseButtonBase = withBaseElementProps(Button, {
18
- className: `${HEADER_BLOCK}__button`,
19
- });
20
- const CloseButton = React__default.forwardRef(function CloseButton(props, ref) {
21
- return React__default.createElement(CloseButtonBase, { ...props, ref: ref });
22
- });
23
- const Container = withBaseElementProps(View, {
24
- className: `${HEADER_BLOCK}__container`,
25
- });
26
- const HeaderControl = () => (React__default.createElement(Container, null,
27
- React__default.createElement(HeaderText, null, "Raven Chat"),
28
- React__default.createElement(CloseButton, null,
29
- React__default.createElement(CloseIcon, null))));
30
- HeaderControl.Container = Container;
31
- HeaderControl.Text = HeaderText;
32
- HeaderControl.Button = CloseButton;
33
-
34
- export { HeaderControl };
@@ -1,20 +0,0 @@
1
- import React__default from 'react';
2
- import { ViewElement } from '../context/elements/definitions.mjs';
3
- import './Controls/ActionsBarControl.mjs';
4
- import './Controls/AvatarControl.mjs';
5
- import { HeaderControl } from './Controls/HeaderControl.mjs';
6
- import { FieldControl } from './Controls/FieldControl.mjs';
7
- import { MessagesControl } from './Controls/MessagesControl.mjs';
8
- import { AutoHidablePromptControl } from './Controls/PromptControl.mjs';
9
-
10
- function Conversation() {
11
- return (React__default.createElement(ViewElement, null,
12
- React__default.createElement(HeaderControl, null),
13
- React__default.createElement(ViewElement, null,
14
- React__default.createElement(AutoHidablePromptControl, null),
15
- React__default.createElement(MessagesControl, null)),
16
- React__default.createElement(ViewElement, null,
17
- React__default.createElement(FieldControl, null))));
18
- }
19
-
20
- export { Conversation as default };
@@ -1,20 +0,0 @@
1
- import React__default from 'react';
2
-
3
- const AIContext = React__default.createContext(undefined);
4
- const useAIContext = () => {
5
- const context = React__default.useContext(AIContext);
6
- const [routeToConversationsMap, setRouteToConversationsMap] = React__default.useState({});
7
- if (context) {
8
- return context;
9
- }
10
- return { routeToConversationsMap, setRouteToConversationsMap };
11
- };
12
- /**
13
- * @experimental
14
- */
15
- const AIContextProvider = ({ children, }) => {
16
- const context = useAIContext();
17
- return React__default.createElement(AIContext.Provider, { value: context }, children);
18
- };
19
-
20
- export { AIContext, AIContextProvider, useAIContext };
@@ -1 +0,0 @@
1
- import './ai-conversation-styles.css';
@@ -1,9 +0,0 @@
1
- import React from 'react';
2
- import { AIConversationElements } from '../../context/elements';
3
- export declare const HeaderControl: HeaderControl;
4
- export interface HeaderControl {
5
- (): React.JSX.Element;
6
- Container: AIConversationElements['View'];
7
- Button: AIConversationElements['Button'];
8
- Text: AIConversationElements['Text'];
9
- }
@@ -1,2 +0,0 @@
1
- /// <reference types="react" />
2
- export default function Conversation(): JSX.Element;
@@ -1,17 +0,0 @@
1
- import React from 'react';
2
- import { ConversationMessage } from '../types';
3
- type ConversationToMessages = Record<string, ConversationMessage[]>;
4
- export type RouteToConversations = Record<string, ConversationToMessages>;
5
- interface ContextType {
6
- routeToConversationsMap: RouteToConversations;
7
- setRouteToConversationsMap: React.Dispatch<React.SetStateAction<RouteToConversations>>;
8
- }
9
- export declare const AIContext: React.Context<ContextType | undefined>;
10
- export declare const useAIContext: () => ContextType;
11
- /**
12
- * @experimental
13
- */
14
- export declare const AIContextProvider: ({ children, }: {
15
- children: React.ReactNode;
16
- }) => React.ReactNode;
17
- export {};