@tylertech/forge-ai-react 0.7.2 → 0.8.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.
@@ -51,5 +51,6 @@ export interface ForgeAiChatInterfaceProps extends Pick<
51
51
  * - **suggestions** - Slot for AI suggestions component
52
52
  * - **attachments** - Slot for file attachments component
53
53
  * - **prompt** - Slot for AI prompt component
54
+ * - **confirmation** - Slot for confirmation prompt overlay
54
55
  */
55
56
  export const ForgeAiChatInterface: React.ForwardRefExoticComponent<ForgeAiChatInterfaceProps>;
@@ -18,6 +18,12 @@ export interface ForgeAiUserMessageProps extends Pick<
18
18
  | "onFocus"
19
19
  | "onBlur"
20
20
  > {
21
+ /** undefined */
22
+ streaming?: boolean;
23
+
24
+ /** undefined */
25
+ messageId?: ForgeAiUserMessageElement["messageId"];
26
+
21
27
  /** A space-separated list of the classes of the element. Classes allows CSS and JavaScript to select and access specific elements via the class selectors or functions like the method `Document.getElementsByClassName()`. */
22
28
  className?: string;
23
29
 
@@ -38,11 +44,31 @@ export interface ForgeAiUserMessageProps extends Pick<
38
44
 
39
45
  /** Allows developers to make HTML elements focusable, allow or prevent them from being sequentially focusable (usually with the `Tab` key, hence the name) and determine their relative ordering for sequential focus navigation. */
40
46
  tabIndex?: number;
47
+
48
+ /** Fired when user clicks copy button */
49
+ onForgeAiUserMessageCopy?: (
50
+ event: CustomEvent<CustomEvent<ForgeAiUserMessageCopyEventData>>,
51
+ ) => void;
52
+
53
+ /** Fired when user clicks resend button */
54
+ onForgeAiUserMessageResend?: (
55
+ event: CustomEvent<CustomEvent<ForgeAiUserMessageResendEventData>>,
56
+ ) => void;
57
+
58
+ /** Fired when user saves edited message */
59
+ onForgeAiUserMessageEdit?: (
60
+ event: CustomEvent<CustomEvent<ForgeAiUserMessageEditEventData>>,
61
+ ) => void;
41
62
  }
42
63
 
43
64
  /**
44
65
  *
45
66
  * ---
46
67
  *
68
+ *
69
+ * ### **Events:**
70
+ * - **forge-ai-user-message-copy** - Fired when user clicks copy button
71
+ * - **forge-ai-user-message-resend** - Fired when user clicks resend button
72
+ * - **forge-ai-user-message-edit** - Fired when user saves edited message
47
73
  */
48
74
  export const ForgeAiUserMessage: React.ForwardRefExoticComponent<ForgeAiUserMessageProps>;
@@ -1,16 +1,47 @@
1
- import React, { forwardRef } from "react";
1
+ import React, { forwardRef, useRef, useEffect } from "react";
2
2
  import "@tylertech/forge-ai/ai-user-message";
3
+ import { useEventListener } from "./react-utils.js";
3
4
 
4
5
  export const ForgeAiUserMessage = forwardRef((props, forwardedRef) => {
6
+ const ref = useRef(null);
7
+ const { streaming, messageId, ...filteredProps } = props;
8
+
9
+ /** Event listeners - run once */
10
+ useEventListener(
11
+ ref,
12
+ "forge-ai-user-message-copy",
13
+ props.onForgeAiUserMessageCopy,
14
+ );
15
+ useEventListener(
16
+ ref,
17
+ "forge-ai-user-message-resend",
18
+ props.onForgeAiUserMessageResend,
19
+ );
20
+ useEventListener(
21
+ ref,
22
+ "forge-ai-user-message-edit",
23
+ props.onForgeAiUserMessageEdit,
24
+ );
25
+
5
26
  return React.createElement(
6
27
  "forge-ai-user-message",
7
28
  {
8
- ...props,
29
+ ref: (node) => {
30
+ ref.current = node;
31
+ if (typeof forwardedRef === "function") {
32
+ forwardedRef(node);
33
+ } else if (forwardedRef) {
34
+ forwardedRef.current = node;
35
+ }
36
+ },
37
+ ...filteredProps,
38
+ "message-id": props.messageId || props["message-id"],
9
39
  class: props.className,
10
40
  exportparts: props.exportparts,
11
41
  for: props.htmlFor,
12
42
  part: props.part,
13
43
  tabindex: props.tabIndex,
44
+ streaming: props.streaming ? true : undefined,
14
45
  style: { ...props.style },
15
46
  },
16
47
  props.children,
package/dist/index.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  export * from "./ForgeAiActionsToolbar.js";
2
2
  export * from "./ForgeAiAgentInfo.js";
3
- export * from "./ForgeAiArtifact.js";
4
3
  export * from "./ForgeAiAssistantResponse.js";
5
- export * from "./ForgeAiAttachment.js";
4
+ export * from "./ForgeAiArtifact.js";
6
5
  export * from "./ForgeAiButton.js";
6
+ export * from "./ForgeAiAttachment.js";
7
7
  export * from "./ForgeAiChatHeader.js";
8
8
  export * from "./ForgeAiChainOfThought.js";
9
9
  export * from "./ForgeAiChatInterface.js";
10
- export * from "./ForgeAiConfirmationPrompt.js";
11
10
  export * from "./ForgeAiChatbotToolCall.js";
12
11
  export * from "./ForgeAiChatbot.js";
12
+ export * from "./ForgeAiConfirmationPrompt.js";
13
13
  export * from "./ForgeAiDialog.js";
14
14
  export * from "./ForgeAiDropdownMenuItemGroup.js";
15
15
  export * from "./ForgeAiDropdownMenuItem.js";
@@ -24,22 +24,22 @@ export * from "./ForgeAiFilePicker.js";
24
24
  export * from "./ForgeAiFloatingChat.js";
25
25
  export * from "./ForgeAiGradientContainer.js";
26
26
  export * from "./ForgeAiIcon.js";
27
- export * from "./ForgeAiMessageThread.js";
28
27
  export * from "./ForgeAiIconButton.js";
28
+ export * from "./ForgeAiMessageThread.js";
29
29
  export * from "./ForgeAiModal.js";
30
30
  export * from "./ForgeAiPrompt.js";
31
- export * from "./ForgeAiReasoningHeader.js";
32
31
  export * from "./ForgeAiReasoning.js";
32
+ export * from "./ForgeAiReasoningHeader.js";
33
33
  export * from "./ForgeAiResponseMessage.js";
34
34
  export * from "./ForgeAiSidebar.js";
35
35
  export * from "./ForgeAiSidebarChat.js";
36
- export * from "./ForgeAiSlashCommandMenu.js";
37
36
  export * from "./ForgeAiSpinner.js";
38
- export * from "./ForgeAiSuggestions.js";
37
+ export * from "./ForgeAiSlashCommandMenu.js";
39
38
  export * from "./ForgeAiThinkingIndicator.js";
40
39
  export * from "./ForgeAiThreads.js";
41
- export * from "./ForgeAiVoiceInput.js";
40
+ export * from "./ForgeAiSuggestions.js";
42
41
  export * from "./ForgeAiUserMessage.js";
42
+ export * from "./ForgeAiVoiceInput.js";
43
43
  export * from "./ForgeAiThoughtBase.js";
44
44
  export * from "./ForgeAiThoughtDetail.js";
45
45
  export * from "./ForgeAiThoughtImage.js";
@@ -47,7 +47,7 @@ export * from "./ForgeAiThoughtSearchResult.js";
47
47
  export * from "./ForgePromptButton.js";
48
48
  export * from "./ForgeAiReasoningContent.js";
49
49
  export * from "./ForgeAiOverlay.js";
50
+ export * from "./ForgeAiToolDataTable.js";
50
51
  export * from "./ForgeAiPopover.js";
51
52
  export * from "./ForgeAiTooltip.js";
52
- export * from "./ForgeAiToolDataTable.js";
53
53
  export * from "./ForgeAiPaginator.js";
package/dist/index.js CHANGED
@@ -1,15 +1,15 @@
1
1
  export * from "./ForgeAiActionsToolbar.js";
2
2
  export * from "./ForgeAiAgentInfo.js";
3
- export * from "./ForgeAiArtifact.js";
4
3
  export * from "./ForgeAiAssistantResponse.js";
5
- export * from "./ForgeAiAttachment.js";
4
+ export * from "./ForgeAiArtifact.js";
6
5
  export * from "./ForgeAiButton.js";
6
+ export * from "./ForgeAiAttachment.js";
7
7
  export * from "./ForgeAiChatHeader.js";
8
8
  export * from "./ForgeAiChainOfThought.js";
9
9
  export * from "./ForgeAiChatInterface.js";
10
- export * from "./ForgeAiConfirmationPrompt.js";
11
10
  export * from "./ForgeAiChatbotToolCall.js";
12
11
  export * from "./ForgeAiChatbot.js";
12
+ export * from "./ForgeAiConfirmationPrompt.js";
13
13
  export * from "./ForgeAiDialog.js";
14
14
  export * from "./ForgeAiDropdownMenuItemGroup.js";
15
15
  export * from "./ForgeAiDropdownMenuItem.js";
@@ -24,22 +24,22 @@ export * from "./ForgeAiFilePicker.js";
24
24
  export * from "./ForgeAiFloatingChat.js";
25
25
  export * from "./ForgeAiGradientContainer.js";
26
26
  export * from "./ForgeAiIcon.js";
27
- export * from "./ForgeAiMessageThread.js";
28
27
  export * from "./ForgeAiIconButton.js";
28
+ export * from "./ForgeAiMessageThread.js";
29
29
  export * from "./ForgeAiModal.js";
30
30
  export * from "./ForgeAiPrompt.js";
31
- export * from "./ForgeAiReasoningHeader.js";
32
31
  export * from "./ForgeAiReasoning.js";
32
+ export * from "./ForgeAiReasoningHeader.js";
33
33
  export * from "./ForgeAiResponseMessage.js";
34
34
  export * from "./ForgeAiSidebar.js";
35
35
  export * from "./ForgeAiSidebarChat.js";
36
- export * from "./ForgeAiSlashCommandMenu.js";
37
36
  export * from "./ForgeAiSpinner.js";
38
- export * from "./ForgeAiSuggestions.js";
37
+ export * from "./ForgeAiSlashCommandMenu.js";
39
38
  export * from "./ForgeAiThinkingIndicator.js";
40
39
  export * from "./ForgeAiThreads.js";
41
- export * from "./ForgeAiVoiceInput.js";
40
+ export * from "./ForgeAiSuggestions.js";
42
41
  export * from "./ForgeAiUserMessage.js";
42
+ export * from "./ForgeAiVoiceInput.js";
43
43
  export * from "./ForgeAiThoughtBase.js";
44
44
  export * from "./ForgeAiThoughtDetail.js";
45
45
  export * from "./ForgeAiThoughtImage.js";
@@ -47,7 +47,7 @@ export * from "./ForgeAiThoughtSearchResult.js";
47
47
  export * from "./ForgePromptButton.js";
48
48
  export * from "./ForgeAiReasoningContent.js";
49
49
  export * from "./ForgeAiOverlay.js";
50
+ export * from "./ForgeAiToolDataTable.js";
50
51
  export * from "./ForgeAiPopover.js";
51
52
  export * from "./ForgeAiTooltip.js";
52
- export * from "./ForgeAiToolDataTable.js";
53
53
  export * from "./ForgeAiPaginator.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tylertech/forge-ai-react",
3
- "version": "0.7.2",
3
+ "version": "0.8.0",
4
4
  "description": "A React adapter for Tyler Forge™ AI Web Components.",
5
5
  "repository": "tyler-technologies-oss/forge-ai",
6
6
  "author": "Tyler Technologies, Inc.",
@@ -16,7 +16,7 @@
16
16
  },
17
17
  "peerDependencies": {
18
18
  "react": ">=17.0.0",
19
- "@tylertech/forge-ai": "^0.7.3"
19
+ "@tylertech/forge-ai": "^0.8.0"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@repo/prettier-config": "",
@@ -44,7 +44,7 @@
44
44
  "typescript": "~5.8.3",
45
45
  "vite": "7.3.0",
46
46
  "vite-tsconfig-paths": "6.0.3",
47
- "@tylertech/forge-ai": "^0.7.3"
47
+ "@tylertech/forge-ai": "^0.8.0"
48
48
  },
49
49
  "scripts": {
50
50
  "predev": "pnpm run build",