@assistant-ui/react-native 0.1.37 → 0.1.39

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 (184) hide show
  1. package/dist/index.d.ts +4 -3
  2. package/dist/index.js +3 -2
  3. package/dist/primitives/actionBar/ActionBarCopy.js +1 -0
  4. package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
  5. package/dist/primitives/actionBar/ActionBarEdit.d.ts +2 -3
  6. package/dist/primitives/actionBar/ActionBarEdit.d.ts.map +1 -1
  7. package/dist/primitives/actionBar/ActionBarEdit.js +1 -0
  8. package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
  9. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +1 -0
  10. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
  11. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +1 -0
  12. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
  13. package/dist/primitives/actionBar/ActionBarReload.d.ts +2 -3
  14. package/dist/primitives/actionBar/ActionBarReload.d.ts.map +1 -1
  15. package/dist/primitives/actionBar/ActionBarReload.js +1 -0
  16. package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
  17. package/dist/primitives/attachment/AttachmentRemove.d.ts +2 -3
  18. package/dist/primitives/attachment/AttachmentRemove.d.ts.map +1 -1
  19. package/dist/primitives/attachment/AttachmentRemove.js +1 -0
  20. package/dist/primitives/attachment/AttachmentRemove.js.map +1 -1
  21. package/dist/primitives/attachment/AttachmentRoot.js.map +1 -1
  22. package/dist/primitives/attachment/AttachmentThumb.js.map +1 -1
  23. package/dist/primitives/branchPicker/BranchPickerNext.d.ts +2 -3
  24. package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -1
  25. package/dist/primitives/branchPicker/BranchPickerNext.js +1 -0
  26. package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
  27. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts +2 -3
  28. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -1
  29. package/dist/primitives/branchPicker/BranchPickerPrevious.js +1 -0
  30. package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
  31. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts +2 -3
  32. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts.map +1 -1
  33. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js +1 -0
  34. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js.map +1 -1
  35. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js.map +1 -1
  36. package/dist/primitives/composer/ComposerAddAttachment.d.ts +2 -3
  37. package/dist/primitives/composer/ComposerAddAttachment.d.ts.map +1 -1
  38. package/dist/primitives/composer/ComposerAddAttachment.js +1 -0
  39. package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
  40. package/dist/primitives/composer/ComposerCancel.d.ts +2 -3
  41. package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -1
  42. package/dist/primitives/composer/ComposerCancel.js +1 -0
  43. package/dist/primitives/composer/ComposerCancel.js.map +1 -1
  44. package/dist/primitives/composer/ComposerInput.js +2 -0
  45. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  46. package/dist/primitives/composer/ComposerQueue.d.ts +2 -0
  47. package/dist/primitives/composer/ComposerQueue.js +2 -0
  48. package/dist/primitives/composer/ComposerQuote.d.ts +10 -0
  49. package/dist/primitives/composer/ComposerQuote.d.ts.map +1 -0
  50. package/dist/primitives/composer/ComposerQuote.js +38 -0
  51. package/dist/primitives/composer/ComposerQuote.js.map +1 -0
  52. package/dist/primitives/composer/ComposerQuoteDismiss.d.ts +9 -0
  53. package/dist/primitives/composer/ComposerQuoteDismiss.d.ts.map +1 -0
  54. package/dist/primitives/composer/ComposerQuoteDismiss.js +48 -0
  55. package/dist/primitives/composer/ComposerQuoteDismiss.js.map +1 -0
  56. package/dist/primitives/composer/ComposerQuoteText.d.ts +10 -0
  57. package/dist/primitives/composer/ComposerQuoteText.d.ts.map +1 -0
  58. package/dist/primitives/composer/ComposerQuoteText.js +40 -0
  59. package/dist/primitives/composer/ComposerQuoteText.js.map +1 -0
  60. package/dist/primitives/composer/ComposerRoot.js.map +1 -1
  61. package/dist/primitives/composer/ComposerSend.d.ts +2 -3
  62. package/dist/primitives/composer/ComposerSend.d.ts.map +1 -1
  63. package/dist/primitives/composer/ComposerSend.js +1 -0
  64. package/dist/primitives/composer/ComposerSend.js.map +1 -1
  65. package/dist/primitives/composer.d.ts +6 -2
  66. package/dist/primitives/composer.js +9 -1
  67. package/dist/primitives/composer.js.map +1 -1
  68. package/dist/primitives/error/ErrorMessage.js.map +1 -1
  69. package/dist/primitives/error/ErrorRoot.js.map +1 -1
  70. package/dist/primitives/message/MessageIf.d.ts +3 -0
  71. package/dist/primitives/message/MessageIf.d.ts.map +1 -1
  72. package/dist/primitives/message/MessageIf.js +3 -0
  73. package/dist/primitives/message/MessageIf.js.map +1 -1
  74. package/dist/primitives/message/MessageParts.js.map +1 -1
  75. package/dist/primitives/message/MessageRoot.js.map +1 -1
  76. package/dist/primitives/queueItem/QueueItemRemove.d.ts +9 -0
  77. package/dist/primitives/queueItem/QueueItemRemove.d.ts.map +1 -0
  78. package/dist/primitives/queueItem/QueueItemRemove.js +48 -0
  79. package/dist/primitives/queueItem/QueueItemRemove.js.map +1 -0
  80. package/dist/primitives/queueItem/QueueItemSteer.d.ts +9 -0
  81. package/dist/primitives/queueItem/QueueItemSteer.d.ts.map +1 -0
  82. package/dist/primitives/queueItem/QueueItemSteer.js +48 -0
  83. package/dist/primitives/queueItem/QueueItemSteer.js.map +1 -0
  84. package/dist/primitives/queueItem/QueueItemText.d.ts +10 -0
  85. package/dist/primitives/queueItem/QueueItemText.d.ts.map +1 -0
  86. package/dist/primitives/queueItem/QueueItemText.js +45 -0
  87. package/dist/primitives/queueItem/QueueItemText.js.map +1 -0
  88. package/dist/primitives/queueItem.d.ts +9 -0
  89. package/dist/primitives/queueItem.d.ts.map +1 -0
  90. package/dist/primitives/queueItem.js +14 -0
  91. package/dist/primitives/queueItem.js.map +1 -0
  92. package/dist/primitives/suggestion/SuggestionDescription.js.map +1 -1
  93. package/dist/primitives/suggestion/SuggestionTitle.js.map +1 -1
  94. package/dist/primitives/suggestion/SuggestionTrigger.d.ts +2 -3
  95. package/dist/primitives/suggestion/SuggestionTrigger.d.ts.map +1 -1
  96. package/dist/primitives/suggestion/SuggestionTrigger.js +1 -0
  97. package/dist/primitives/suggestion/SuggestionTrigger.js.map +1 -1
  98. package/dist/primitives/thread/ThreadEmpty.d.ts +4 -1
  99. package/dist/primitives/thread/ThreadEmpty.d.ts.map +1 -1
  100. package/dist/primitives/thread/ThreadEmpty.js +12 -4
  101. package/dist/primitives/thread/ThreadEmpty.js.map +1 -1
  102. package/dist/primitives/thread/ThreadIf.d.ts +3 -0
  103. package/dist/primitives/thread/ThreadIf.d.ts.map +1 -1
  104. package/dist/primitives/thread/ThreadIf.js +5 -6
  105. package/dist/primitives/thread/ThreadIf.js.map +1 -1
  106. package/dist/primitives/thread/ThreadMessages.js.map +1 -1
  107. package/dist/primitives/thread/ThreadRoot.js.map +1 -1
  108. package/dist/primitives/thread/ThreadSuggestion.d.ts +2 -3
  109. package/dist/primitives/thread/ThreadSuggestion.d.ts.map +1 -1
  110. package/dist/primitives/thread/ThreadSuggestion.js +1 -0
  111. package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
  112. package/dist/primitives/threadList/ThreadListItems.js.map +1 -1
  113. package/dist/primitives/threadList/ThreadListNew.d.ts +6 -4
  114. package/dist/primitives/threadList/ThreadListNew.d.ts.map +1 -1
  115. package/dist/primitives/threadList/ThreadListNew.js +46 -15
  116. package/dist/primitives/threadList/ThreadListNew.js.map +1 -1
  117. package/dist/primitives/threadList/ThreadListRoot.js.map +1 -1
  118. package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts +2 -3
  119. package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts.map +1 -1
  120. package/dist/primitives/threadListItem/ThreadListItemArchive.js +1 -0
  121. package/dist/primitives/threadListItem/ThreadListItemArchive.js.map +1 -1
  122. package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts +2 -3
  123. package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts.map +1 -1
  124. package/dist/primitives/threadListItem/ThreadListItemDelete.js +1 -0
  125. package/dist/primitives/threadListItem/ThreadListItemDelete.js.map +1 -1
  126. package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
  127. package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts +6 -4
  128. package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts.map +1 -1
  129. package/dist/primitives/threadListItem/ThreadListItemTrigger.js +46 -15
  130. package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
  131. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts +2 -3
  132. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts.map +1 -1
  133. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js +1 -0
  134. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -1
  135. package/package.json +9 -9
  136. package/src/index.ts +5 -0
  137. package/src/primitives/accessibilityRole.test.tsx +335 -0
  138. package/src/primitives/actionBar/ActionBarCopy.tsx +1 -0
  139. package/src/primitives/actionBar/ActionBarEdit.tsx +6 -3
  140. package/src/primitives/actionBar/ActionBarFeedbackNegative.tsx +1 -1
  141. package/src/primitives/actionBar/ActionBarFeedbackPositive.tsx +1 -1
  142. package/src/primitives/actionBar/ActionBarReload.tsx +6 -3
  143. package/src/primitives/attachment/AttachmentRemove.tsx +11 -4
  144. package/src/primitives/branchPicker/BranchPickerNext.tsx +6 -3
  145. package/src/primitives/branchPicker/BranchPickerPrevious.tsx +6 -3
  146. package/src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.tsx +4 -4
  147. package/src/primitives/composer/ComposerAddAttachment.tsx +10 -4
  148. package/src/primitives/composer/ComposerCancel.tsx +6 -3
  149. package/src/primitives/composer/ComposerInput.test.tsx +47 -1
  150. package/src/primitives/composer/ComposerInput.tsx +2 -0
  151. package/src/primitives/composer/ComposerQueue.test.tsx +9 -0
  152. package/src/primitives/composer/ComposerQueue.tsx +1 -0
  153. package/src/primitives/composer/ComposerQuote.test.tsx +163 -0
  154. package/src/primitives/composer/ComposerQuote.tsx +17 -0
  155. package/src/primitives/composer/ComposerQuoteDismiss.tsx +31 -0
  156. package/src/primitives/composer/ComposerQuoteText.tsx +17 -0
  157. package/src/primitives/composer/ComposerSend.test.tsx +26 -0
  158. package/src/primitives/composer/ComposerSend.tsx +3 -3
  159. package/src/primitives/composer.ts +13 -0
  160. package/src/primitives/message/MessageIf.tsx +3 -0
  161. package/src/primitives/queueItem/QueueItem.test.tsx +132 -0
  162. package/src/primitives/queueItem/QueueItemRemove.tsx +31 -0
  163. package/src/primitives/queueItem/QueueItemSteer.tsx +31 -0
  164. package/src/primitives/queueItem/QueueItemText.tsx +22 -0
  165. package/src/primitives/queueItem.ts +12 -0
  166. package/src/primitives/suggestion/SuggestionTrigger.tsx +6 -3
  167. package/src/primitives/thread/ThreadEmpty.test.tsx +17 -3
  168. package/src/primitives/thread/ThreadEmpty.tsx +7 -6
  169. package/src/primitives/thread/ThreadIf.test.tsx +20 -20
  170. package/src/primitives/thread/ThreadIf.tsx +5 -8
  171. package/src/primitives/thread/ThreadSuggestion.tsx +6 -3
  172. package/src/primitives/threadList/ThreadListNew.test.tsx +118 -3
  173. package/src/primitives/threadList/ThreadListNew.tsx +28 -5
  174. package/src/primitives/threadListItem/ThreadListItemArchive.tsx +6 -4
  175. package/src/primitives/threadListItem/ThreadListItemDelete.tsx +10 -4
  176. package/src/primitives/threadListItem/ThreadListItemTrigger.test.tsx +74 -0
  177. package/src/primitives/threadListItem/ThreadListItemTrigger.tsx +28 -5
  178. package/src/primitives/threadListItem/ThreadListItemUnarchive.tsx +10 -4
  179. package/dist/runtimes/RemoteThreadListHookInstanceManager.d.ts +0 -2
  180. package/dist/runtimes/RemoteThreadListHookInstanceManager.js +0 -2
  181. package/dist/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +0 -2
  182. package/dist/runtimes/RemoteThreadListThreadListRuntimeCore.js +0 -2
  183. package/src/runtimes/RemoteThreadListHookInstanceManager.tsx +0 -1
  184. package/src/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +0 -1
@@ -1,9 +1,11 @@
1
- import type { ReactNode } from "react";
2
1
  import { Pressable, type PressableProps } from "react-native";
3
2
  import { useThreadListItemDelete } from "@assistant-ui/core/react";
4
3
 
5
- export type ThreadListItemDeleteProps = Omit<PressableProps, "onPress"> & {
6
- children: ReactNode;
4
+ export type ThreadListItemDeleteProps = Omit<
5
+ PressableProps,
6
+ "onPress" | "children"
7
+ > & {
8
+ children: PressableProps["children"];
7
9
  };
8
10
 
9
11
  export const ThreadListItemDelete = ({
@@ -13,7 +15,11 @@ export const ThreadListItemDelete = ({
13
15
  const { delete: deleteThread } = useThreadListItemDelete();
14
16
 
15
17
  return (
16
- <Pressable onPress={deleteThread} {...pressableProps}>
18
+ <Pressable
19
+ onPress={deleteThread}
20
+ accessibilityRole="button"
21
+ {...pressableProps}
22
+ >
17
23
  {children}
18
24
  </Pressable>
19
25
  );
@@ -5,12 +5,41 @@ import { ThreadListItemTrigger } from "./ThreadListItemTrigger";
5
5
 
6
6
  const h = vi.hoisted(() => ({
7
7
  switchTo: vi.fn<() => void>(),
8
+ state: {
9
+ threads: { mainThreadId: "thread-1" },
10
+ threadListItem: { id: "thread-1" },
11
+ },
12
+ pressableProps: null as Record<string, unknown> | null,
8
13
  }));
9
14
 
10
15
  vi.mock("@assistant-ui/core/react", () => ({
11
16
  useThreadListItemTrigger: () => ({ switchTo: h.switchTo }),
12
17
  }));
13
18
 
19
+ vi.mock("@assistant-ui/store", async (importOriginal) => {
20
+ const actual = await importOriginal<typeof import("@assistant-ui/store")>();
21
+ return {
22
+ ...actual,
23
+ useAuiState: <T,>(selector: (s: typeof h.state) => T) => selector(h.state),
24
+ };
25
+ });
26
+
27
+ vi.mock("react-native", async (importOriginal) => {
28
+ const actual = await importOriginal<typeof import("react-native")>();
29
+ const React = await import("react");
30
+ const PressableMock = React.forwardRef(function PressableMock(
31
+ props: Record<string, unknown>,
32
+ ref: React.Ref<unknown>,
33
+ ) {
34
+ h.pressableProps = props;
35
+ return React.createElement(
36
+ actual.Pressable as unknown as React.ElementType,
37
+ { ...props, ref },
38
+ );
39
+ });
40
+ return { ...actual, Pressable: PressableMock };
41
+ });
42
+
14
43
  (globalThis as Record<string, unknown>).IS_REACT_ACT_ENVIRONMENT = true;
15
44
 
16
45
  const click = (el: Element) =>
@@ -24,6 +53,9 @@ describe("ThreadListItemTrigger", () => {
24
53
 
25
54
  beforeEach(() => {
26
55
  h.switchTo.mockReset();
56
+ h.state.threads.mainThreadId = "thread-1";
57
+ h.state.threadListItem.id = "thread-1";
58
+ h.pressableProps = null;
27
59
 
28
60
  container = document.createElement("div");
29
61
  document.body.appendChild(container);
@@ -50,6 +82,11 @@ describe("ThreadListItemTrigger", () => {
50
82
  return container.querySelector('[data-testid="t"]') as HTMLElement;
51
83
  };
52
84
 
85
+ const accessibilityState = () =>
86
+ h.pressableProps?.["accessibilityState"] as
87
+ | Record<string, unknown>
88
+ | undefined;
89
+
53
90
  it("fires switchTo when pressed", async () => {
54
91
  const el = await mount();
55
92
 
@@ -69,4 +106,41 @@ describe("ThreadListItemTrigger", () => {
69
106
 
70
107
  expect(h.switchTo).not.toHaveBeenCalled();
71
108
  });
109
+
110
+ it("marks the current thread selected", async () => {
111
+ await mount();
112
+
113
+ expect(accessibilityState()).toMatchObject({ selected: true });
114
+ });
115
+
116
+ it("does not mark another thread selected", async () => {
117
+ h.state.threads.mainThreadId = "thread-2";
118
+
119
+ await mount();
120
+
121
+ expect(accessibilityState()).toMatchObject({ selected: false });
122
+ });
123
+
124
+ it("keeps caller accessibility state overrides", async () => {
125
+ await mount({ accessibilityState: { busy: true, selected: false } });
126
+
127
+ expect(accessibilityState()).toMatchObject({ busy: true, selected: false });
128
+ });
129
+
130
+ it("passes active state alongside the Pressable state", async () => {
131
+ let renderState: unknown = null;
132
+
133
+ await act(async () => {
134
+ root.render(
135
+ <ThreadListItemTrigger testID="t">
136
+ {(state) => {
137
+ renderState = state;
138
+ return "item";
139
+ }}
140
+ </ThreadListItemTrigger>,
141
+ );
142
+ });
143
+
144
+ expect(renderState).toMatchObject({ pressed: false, isActive: true });
145
+ });
72
146
  });
@@ -1,20 +1,43 @@
1
1
  import type { ReactNode } from "react";
2
- import { Pressable, type PressableProps } from "react-native";
2
+ import {
3
+ Pressable,
4
+ type PressableProps,
5
+ type PressableStateCallbackType,
6
+ } from "react-native";
7
+ import { useAuiState } from "@assistant-ui/store";
3
8
  import { useThreadListItemTrigger } from "@assistant-ui/core/react";
4
9
 
5
- export type ThreadListItemTriggerProps = Omit<PressableProps, "onPress"> & {
6
- children: ReactNode;
10
+ export type ThreadListItemTriggerProps = Omit<
11
+ PressableProps,
12
+ "onPress" | "children"
13
+ > & {
14
+ children:
15
+ | ReactNode
16
+ | ((
17
+ state: PressableStateCallbackType & { isActive: boolean },
18
+ ) => ReactNode);
7
19
  };
8
20
 
9
21
  export const ThreadListItemTrigger = ({
10
22
  children,
23
+ accessibilityState,
11
24
  ...pressableProps
12
25
  }: ThreadListItemTriggerProps) => {
26
+ const isActive = useAuiState(
27
+ (s) => s.threads.mainThreadId === s.threadListItem.id,
28
+ );
13
29
  const { switchTo } = useThreadListItemTrigger();
14
30
 
15
31
  return (
16
- <Pressable onPress={switchTo} {...pressableProps}>
17
- {children}
32
+ <Pressable
33
+ onPress={switchTo}
34
+ accessibilityRole="button"
35
+ accessibilityState={{ selected: isActive, ...accessibilityState }}
36
+ {...pressableProps}
37
+ >
38
+ {typeof children === "function"
39
+ ? (state) => children({ ...state, isActive })
40
+ : children}
18
41
  </Pressable>
19
42
  );
20
43
  };
@@ -1,9 +1,11 @@
1
- import type { ReactNode } from "react";
2
1
  import { Pressable, type PressableProps } from "react-native";
3
2
  import { useThreadListItemUnarchive } from "@assistant-ui/core/react";
4
3
 
5
- export type ThreadListItemUnarchiveProps = Omit<PressableProps, "onPress"> & {
6
- children: ReactNode;
4
+ export type ThreadListItemUnarchiveProps = Omit<
5
+ PressableProps,
6
+ "onPress" | "children"
7
+ > & {
8
+ children: PressableProps["children"];
7
9
  };
8
10
 
9
11
  export const ThreadListItemUnarchive = ({
@@ -13,7 +15,11 @@ export const ThreadListItemUnarchive = ({
13
15
  const { unarchive } = useThreadListItemUnarchive();
14
16
 
15
17
  return (
16
- <Pressable onPress={unarchive} {...pressableProps}>
18
+ <Pressable
19
+ onPress={unarchive}
20
+ accessibilityRole="button"
21
+ {...pressableProps}
22
+ >
17
23
  {children}
18
24
  </Pressable>
19
25
  );
@@ -1,2 +0,0 @@
1
- import { RemoteThreadListHookInstanceManager } from "@assistant-ui/core/react";
2
- export { RemoteThreadListHookInstanceManager };
@@ -1,2 +0,0 @@
1
- import { RemoteThreadListHookInstanceManager } from "@assistant-ui/core/react";
2
- export { RemoteThreadListHookInstanceManager };
@@ -1,2 +0,0 @@
1
- import { RemoteThreadListThreadListRuntimeCore } from "@assistant-ui/core/react";
2
- export { RemoteThreadListThreadListRuntimeCore };
@@ -1,2 +0,0 @@
1
- import { RemoteThreadListThreadListRuntimeCore } from "@assistant-ui/core/react";
2
- export { RemoteThreadListThreadListRuntimeCore };
@@ -1 +0,0 @@
1
- export { RemoteThreadListHookInstanceManager } from "@assistant-ui/core/react";
@@ -1 +0,0 @@
1
- export { RemoteThreadListThreadListRuntimeCore } from "@assistant-ui/core/react";