@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 +1 @@
1
- {"version":3,"file":"ThreadListItemArchive.js","names":["ReactNode","Pressable","PressableProps","useThreadListItemArchive","ThreadListItemArchiveProps","Omit","children","ThreadListItemArchive","t0","$","_c","pressableProps","archive","t1"],"sources":["../../../src/primitives/threadListItem/ThreadListItemArchive.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Pressable, type PressableProps } from \"react-native\";\nimport { useThreadListItemArchive } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemArchiveProps = Omit<PressableProps, \"onPress\"> & {\n children: ReactNode;\n};\n\nexport const ThreadListItemArchive = ({\n children,\n ...pressableProps\n}: ThreadListItemArchiveProps) => {\n const { archive } = useThreadListItemArchive();\n\n return (\n <Pressable onPress={archive} {...pressableProps}>\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAQA,MAAaO,yBAAwBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,aAAAK,kBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,iBAAAF,EAAA;CAAA;CAC3B,MAAA,EAAAG,YAAoBT,yBAAyB;CAAE,IAAAU;CAAA,IAAAJ,EAAA,OAAAG,WAAAH,EAAA,OAAAH,YAAAG,EAAA,OAAAE,gBAAA;EAG7CE,KAAA,oBAAC,WAAD;GAAoBD,SAAAA;GAAO,GAAMD;GAC9BL;EADO,CAAA;EAEEG,EAAA,KAAAG;EAAAH,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,OAFZI;AAEY"}
1
+ {"version":3,"file":"ThreadListItemArchive.js","names":["Pressable","PressableProps","useThreadListItemArchive","ThreadListItemArchiveProps","Omit","children","ThreadListItemArchive","t0","$","_c","pressableProps","archive","t1"],"sources":["../../../src/primitives/threadListItem/ThreadListItemArchive.tsx"],"sourcesContent":["import { Pressable, type PressableProps } from \"react-native\";\nimport { useThreadListItemArchive } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemArchiveProps = Omit<\n PressableProps,\n \"onPress\" | \"children\"\n> & {\n children: PressableProps[\"children\"];\n};\n\nexport const ThreadListItemArchive = ({\n children,\n ...pressableProps\n}: ThreadListItemArchiveProps) => {\n const { archive } = useThreadListItemArchive();\n\n return (\n <Pressable onPress={archive} accessibilityRole=\"button\" {...pressableProps}>\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAUA,MAAaM,yBAAwBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,UAAA,GAAAK,kBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,iBAAAF,EAAA;CAAA;CAC3B,MAAA,EAAAG,YAAoBT,yBAAyB;CAAE,IAAAU;CAAA,IAAAJ,EAAA,OAAAG,WAAAH,EAAA,OAAAH,YAAAG,EAAA,OAAAE,gBAAA;EAG7CE,KAAA,oBAAC,WAAD;GAAoBD,SAAAA;GAA2B,mBAAA;GAAQ,GAAKD;GACzDL;EADO,CAAA;EAEEG,EAAA,KAAAG;EAAAH,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,OAFZI;AAEY"}
@@ -1,8 +1,7 @@
1
1
  import { PressableProps } from "react-native";
2
- import { ReactNode } from "react";
3
2
  //#region src/primitives/threadListItem/ThreadListItemDelete.d.ts
4
- type ThreadListItemDeleteProps = Omit<PressableProps, "onPress"> & {
5
- children: ReactNode;
3
+ type ThreadListItemDeleteProps = Omit<PressableProps, "onPress" | "children"> & {
4
+ children: PressableProps["children"];
6
5
  };
7
6
  declare const ThreadListItemDelete: ({ children, ...pressableProps }: ThreadListItemDeleteProps) => import("react").JSX.Element;
8
7
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemDelete.d.ts","names":[],"sources":["../../../src/primitives/threadListItem/ThreadListItemDelete.tsx"],"mappings":";;;KAIY,4BAA4B,KAAK;EAC3C,UAAU;;cAGC,yBAAwB,aAAA,kBAGlC,8CAAyB,IAAA"}
1
+ {"version":3,"file":"ThreadListItemDelete.d.ts","names":[],"sources":["../../../src/primitives/threadListItem/ThreadListItemDelete.tsx"],"mappings":";;KAGY,4BAA4B,KACtC;EAGA,UAAU;;cAGC,yBAAwB,aAAA,kBAGlC,8CAAyB,IAAA"}
@@ -21,6 +21,7 @@ const ThreadListItemDelete = (t0) => {
21
21
  if ($[3] !== children || $[4] !== deleteThread || $[5] !== pressableProps) {
22
22
  t1 = /* @__PURE__ */ jsx(Pressable, {
23
23
  onPress: deleteThread,
24
+ accessibilityRole: "button",
24
25
  ...pressableProps,
25
26
  children
26
27
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemDelete.js","names":["ReactNode","Pressable","PressableProps","useThreadListItemDelete","ThreadListItemDeleteProps","Omit","children","ThreadListItemDelete","t0","$","_c","pressableProps","delete","deleteThread","t1"],"sources":["../../../src/primitives/threadListItem/ThreadListItemDelete.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Pressable, type PressableProps } from \"react-native\";\nimport { useThreadListItemDelete } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemDeleteProps = Omit<PressableProps, \"onPress\"> & {\n children: ReactNode;\n};\n\nexport const ThreadListItemDelete = ({\n children,\n ...pressableProps\n}: ThreadListItemDeleteProps) => {\n const { delete: deleteThread } = useThreadListItemDelete();\n\n return (\n <Pressable onPress={deleteThread} {...pressableProps}>\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAQA,MAAaO,wBAAuBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,aAAAK,kBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,iBAAAF,EAAA;CAAA;CAC1B,MAAA,EAAAG,QAAAC,iBAAiCV,wBAAwB;CAAE,IAAAW;CAAA,IAAAL,EAAA,OAAAH,YAAAG,EAAA,OAAAI,gBAAAJ,EAAA,OAAAE,gBAAA;EAGzDG,KAAA,oBAAC,WAAD;GAAoBD,SAAAA;GAAY,GAAMF;GACnCL;EADO,CAAA;EAEEG,EAAA,KAAAH;EAAAG,EAAA,KAAAI;EAAAJ,EAAA,KAAAE;EAAAF,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,OAFZK;AAEY"}
1
+ {"version":3,"file":"ThreadListItemDelete.js","names":["Pressable","PressableProps","useThreadListItemDelete","ThreadListItemDeleteProps","Omit","children","ThreadListItemDelete","t0","$","_c","pressableProps","delete","deleteThread","t1"],"sources":["../../../src/primitives/threadListItem/ThreadListItemDelete.tsx"],"sourcesContent":["import { Pressable, type PressableProps } from \"react-native\";\nimport { useThreadListItemDelete } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemDeleteProps = Omit<\n PressableProps,\n \"onPress\" | \"children\"\n> & {\n children: PressableProps[\"children\"];\n};\n\nexport const ThreadListItemDelete = ({\n children,\n ...pressableProps\n}: ThreadListItemDeleteProps) => {\n const { delete: deleteThread } = useThreadListItemDelete();\n\n return (\n <Pressable\n onPress={deleteThread}\n accessibilityRole=\"button\"\n {...pressableProps}\n >\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAUA,MAAaM,wBAAuBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,UAAA,GAAAK,kBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,iBAAAF,EAAA;CAAA;CAC1B,MAAA,EAAAG,QAAAC,iBAAiCV,wBAAwB;CAAE,IAAAW;CAAA,IAAAL,EAAA,OAAAH,YAAAG,EAAA,OAAAI,gBAAAJ,EAAA,OAAAE,gBAAA;EAGzDG,KAAA,oBAAC,WAAD;GACWD,SAAAA;GACS,mBAAA;GAAQ,GACtBF;GAEHL;EALO,CAAA;EAMEG,EAAA,KAAAH;EAAAG,EAAA,KAAAI;EAAAJ,EAAA,KAAAE;EAAAF,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,OANZK;AAMY"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemRoot.js","names":["ReactNode","View","ViewProps","ThreadListItemRootProps","children","ThreadListItemRoot","t0","$","_c","viewProps","t1"],"sources":["../../../src/primitives/threadListItem/ThreadListItemRoot.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { View, type ViewProps } from \"react-native\";\n\nexport type ThreadListItemRootProps = ViewProps & {\n children: ReactNode;\n};\n\nexport const ThreadListItemRoot = ({\n children,\n ...viewProps\n}: ThreadListItemRootProps) => {\n return <View {...viewProps}>{children}</View>;\n};\n"],"mappings":";;;;AAOA,MAAaK,sBAAqBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,aAAAK,aAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,YAAAF,EAAA;CAAA;CAAA,IAAAG;CAAA,IAAAH,EAAA,OAAAH,YAAAG,EAAA,OAAAE,WAAA;EACjBC,KAAA,oBAAC,MAAD;GAAK,GAAKD;GAAYL;EAAjB,CAAA;EAAiCG,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAAA,OAAtCG;AAAsC"}
1
+ {"version":3,"file":"ThreadListItemRoot.js","names":["ReactNode","View","ViewProps","ThreadListItemRootProps","children","ThreadListItemRoot","t0","$","_c","viewProps","t1"],"sources":["../../../src/primitives/threadListItem/ThreadListItemRoot.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { View, type ViewProps } from \"react-native\";\n\nexport type ThreadListItemRootProps = ViewProps & {\n children: ReactNode;\n};\n\nexport const ThreadListItemRoot = ({\n children,\n ...viewProps\n}: ThreadListItemRootProps) => {\n return <View {...viewProps}>{children}</View>;\n};\n"],"mappings":";;;;AAOA,MAAaK,sBAAqBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,UAAA,GAAAK,aAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,YAAAF,EAAA;CAAA;CAAA,IAAAG;CAAA,IAAAH,EAAA,OAAAH,YAAAG,EAAA,OAAAE,WAAA;EACjBC,KAAA,oBAAC,MAAD;GAAK,GAAKD;GAAYL;EAAjB,CAAA;EAAiCG,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAAA,OAAtCG;AAAsC"}
@@ -1,10 +1,12 @@
1
- import { PressableProps } from "react-native";
1
+ import { PressableProps, PressableStateCallbackType } from "react-native";
2
2
  import { ReactNode } from "react";
3
3
  //#region src/primitives/threadListItem/ThreadListItemTrigger.d.ts
4
- type ThreadListItemTriggerProps = Omit<PressableProps, "onPress"> & {
5
- children: ReactNode;
4
+ type ThreadListItemTriggerProps = Omit<PressableProps, "onPress" | "children"> & {
5
+ children: ReactNode | ((state: PressableStateCallbackType & {
6
+ isActive: boolean;
7
+ }) => ReactNode);
6
8
  };
7
- declare const ThreadListItemTrigger: ({ children, ...pressableProps }: ThreadListItemTriggerProps) => import("react").JSX.Element;
9
+ declare const ThreadListItemTrigger: ({ children, accessibilityState, ...pressableProps }: ThreadListItemTriggerProps) => import("react").JSX.Element;
8
10
  //#endregion
9
11
  export { ThreadListItemTrigger, ThreadListItemTriggerProps };
10
12
  //# sourceMappingURL=ThreadListItemTrigger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemTrigger.d.ts","names":[],"sources":["../../../src/primitives/threadListItem/ThreadListItemTrigger.tsx"],"mappings":";;;KAIY,6BAA6B,KAAK;EAC5C,UAAU;;cAGC,0BAAyB,aAAA,kBAGnC,+CAA0B,IAAA"}
1
+ {"version":3,"file":"ThreadListItemTrigger.d.ts","names":[],"sources":["../../../src/primitives/threadListItem/ThreadListItemTrigger.tsx"],"mappings":";;;KASY,6BAA6B,KACvC;EAGA,UACI,cAEE,OAAO;IAA+B;QACnC;;cAGE,0BAAyB,UAAA,uBAAA,kBAInC,+CAA0B,IAAA"}
@@ -1,36 +1,67 @@
1
+ import { useAuiState } from "@assistant-ui/store";
1
2
  import { useThreadListItemTrigger } from "@assistant-ui/core/react";
2
3
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
4
  import { Pressable } from "react-native";
4
5
  import { jsx } from "react/jsx-runtime";
5
6
  //#region src/primitives/threadListItem/ThreadListItemTrigger.tsx
6
7
  const ThreadListItemTrigger = (t0) => {
7
- const $ = c(7);
8
+ const $ = c(15);
9
+ let accessibilityState;
8
10
  let children;
9
11
  let pressableProps;
10
12
  if ($[0] !== t0) {
11
- ({children, ...pressableProps} = t0);
13
+ ({children, accessibilityState, ...pressableProps} = t0);
12
14
  $[0] = t0;
13
- $[1] = children;
14
- $[2] = pressableProps;
15
+ $[1] = accessibilityState;
16
+ $[2] = children;
17
+ $[3] = pressableProps;
15
18
  } else {
16
- children = $[1];
17
- pressableProps = $[2];
19
+ accessibilityState = $[1];
20
+ children = $[2];
21
+ pressableProps = $[3];
18
22
  }
23
+ const isActive = useAuiState(_temp);
19
24
  const { switchTo } = useThreadListItemTrigger();
20
25
  let t1;
21
- if ($[3] !== children || $[4] !== pressableProps || $[5] !== switchTo) {
22
- t1 = /* @__PURE__ */ jsx(Pressable, {
26
+ if ($[4] !== accessibilityState || $[5] !== isActive) {
27
+ t1 = {
28
+ selected: isActive,
29
+ ...accessibilityState
30
+ };
31
+ $[4] = accessibilityState;
32
+ $[5] = isActive;
33
+ $[6] = t1;
34
+ } else t1 = $[6];
35
+ let t2;
36
+ if ($[7] !== children || $[8] !== isActive) {
37
+ t2 = typeof children === "function" ? (state) => children({
38
+ ...state,
39
+ isActive
40
+ }) : children;
41
+ $[7] = children;
42
+ $[8] = isActive;
43
+ $[9] = t2;
44
+ } else t2 = $[9];
45
+ let t3;
46
+ if ($[10] !== pressableProps || $[11] !== switchTo || $[12] !== t1 || $[13] !== t2) {
47
+ t3 = /* @__PURE__ */ jsx(Pressable, {
23
48
  onPress: switchTo,
49
+ accessibilityRole: "button",
50
+ accessibilityState: t1,
24
51
  ...pressableProps,
25
- children
52
+ children: t2
26
53
  });
27
- $[3] = children;
28
- $[4] = pressableProps;
29
- $[5] = switchTo;
30
- $[6] = t1;
31
- } else t1 = $[6];
32
- return t1;
54
+ $[10] = pressableProps;
55
+ $[11] = switchTo;
56
+ $[12] = t1;
57
+ $[13] = t2;
58
+ $[14] = t3;
59
+ } else t3 = $[14];
60
+ return t3;
33
61
  };
62
+ function _temp(s) {
63
+ return s.threads.mainThreadId === s.threadListItem.id;
64
+ }
34
65
  //#endregion
35
66
  export { ThreadListItemTrigger };
36
67
 
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemTrigger.js","names":["ReactNode","Pressable","PressableProps","useThreadListItemTrigger","ThreadListItemTriggerProps","Omit","children","ThreadListItemTrigger","t0","$","_c","pressableProps","switchTo","t1"],"sources":["../../../src/primitives/threadListItem/ThreadListItemTrigger.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Pressable, type PressableProps } from \"react-native\";\nimport { useThreadListItemTrigger } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemTriggerProps = Omit<PressableProps, \"onPress\"> & {\n children: ReactNode;\n};\n\nexport const ThreadListItemTrigger = ({\n children,\n ...pressableProps\n}: ThreadListItemTriggerProps) => {\n const { switchTo } = useThreadListItemTrigger();\n\n return (\n <Pressable onPress={switchTo} {...pressableProps}>\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAQA,MAAaO,yBAAwBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,aAAAK,kBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,iBAAAF,EAAA;CAAA;CAC3B,MAAA,EAAAG,aAAqBT,yBAAyB;CAAE,IAAAU;CAAA,IAAAJ,EAAA,OAAAH,YAAAG,EAAA,OAAAE,kBAAAF,EAAA,OAAAG,UAAA;EAG9CC,KAAA,oBAAC,WAAD;GAAoBD,SAAAA;GAAQ,GAAMD;GAC/BL;EADO,CAAA;EAEEG,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,OAFZI;AAEY"}
1
+ {"version":3,"file":"ThreadListItemTrigger.js","names":["ReactNode","Pressable","PressableProps","PressableStateCallbackType","useAuiState","useThreadListItemTrigger","ThreadListItemTriggerProps","Omit","children","state","isActive","ThreadListItemTrigger","t0","$","_c","accessibilityState","pressableProps","_temp","switchTo","t1","selected","t2","t3","s","threads","mainThreadId","threadListItem","id"],"sources":["../../../src/primitives/threadListItem/ThreadListItemTrigger.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport {\n Pressable,\n type PressableProps,\n type PressableStateCallbackType,\n} from \"react-native\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport { useThreadListItemTrigger } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemTriggerProps = Omit<\n PressableProps,\n \"onPress\" | \"children\"\n> & {\n children:\n | ReactNode\n | ((\n state: PressableStateCallbackType & { isActive: boolean },\n ) => ReactNode);\n};\n\nexport const ThreadListItemTrigger = ({\n children,\n accessibilityState,\n ...pressableProps\n}: ThreadListItemTriggerProps) => {\n const isActive = useAuiState(\n (s) => s.threads.mainThreadId === s.threadListItem.id,\n );\n const { switchTo } = useThreadListItemTrigger();\n\n return (\n <Pressable\n onPress={switchTo}\n accessibilityRole=\"button\"\n accessibilityState={{ selected: isActive, ...accessibilityState }}\n {...pressableProps}\n >\n {typeof children === \"function\"\n ? (state) => children({ ...state, isActive })\n : children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;;AAoBA,MAAaW,yBAAwBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;CAAA,IAAAP;CAAA,IAAAQ;CAAA,IAAAH,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAJ,UAAAO,oBAAA,GAAAC,kBAAAJ;EAITC,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAL;EAAAK,EAAA,KAAAG;CAAA,OAAA;EAAAD,qBAAAF,EAAA;EAAAL,WAAAK,EAAA;EAAAG,iBAAAH,EAAA;CAAA;CAC3B,MAAAH,WAAiBN,YACfa,KACF;CACA,MAAA,EAAAC,aAAqBb,yBAAyB;CAAE,IAAAc;CAAA,IAAAN,EAAA,OAAAE,sBAAAF,EAAA,OAAAH,UAAA;EAMxBS,KAAA;GAAAC,UAAYV;GAAQ,GAAKK;EAAmB;EAACF,EAAA,KAAAE;EAAAF,EAAA,KAAAH;EAAAG,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,OAAAL,YAAAK,EAAA,OAAAH,UAAA;EAGhEW,KAAA,OAAOb,aAAa,cAApBC,UACcD,SAAS;GAAA,GAAKC;GAAKC;EAAW,CAAC,IAD7CF;EAEWK,EAAA,KAAAL;EAAAK,EAAA,KAAAH;EAAAG,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,IAAAS;CAAA,IAAAT,EAAA,QAAAG,kBAAAH,EAAA,QAAAK,YAAAL,EAAA,QAAAM,MAAAN,EAAA,QAAAQ,IAAA;EARdC,KAAA,oBAAC,WAAD;GACWJ,SAAAA;GACS,mBAAA;GACE,oBAAAC;GAA6C,GAC7DH;GAEHK,UAAAA;EANO,CAAA;EASER,EAAA,MAAAG;EAAAH,EAAA,MAAAK;EAAAL,EAAA,MAAAM;EAAAN,EAAA,MAAAQ;EAAAR,EAAA,MAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,OATZS;AASY;AApBqB,SAAAL,MAAAM,GAAA;CAAA,OAM1BA,EAACC,QAAQC,iBAAkBF,EAACG,eAAeC;AAAG"}
@@ -1,8 +1,7 @@
1
1
  import { PressableProps } from "react-native";
2
- import { ReactNode } from "react";
3
2
  //#region src/primitives/threadListItem/ThreadListItemUnarchive.d.ts
4
- type ThreadListItemUnarchiveProps = Omit<PressableProps, "onPress"> & {
5
- children: ReactNode;
3
+ type ThreadListItemUnarchiveProps = Omit<PressableProps, "onPress" | "children"> & {
4
+ children: PressableProps["children"];
6
5
  };
7
6
  declare const ThreadListItemUnarchive: ({ children, ...pressableProps }: ThreadListItemUnarchiveProps) => import("react").JSX.Element;
8
7
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemUnarchive.d.ts","names":[],"sources":["../../../src/primitives/threadListItem/ThreadListItemUnarchive.tsx"],"mappings":";;;KAIY,+BAA+B,KAAK;EAC9C,UAAU;;cAGC,4BAA2B,aAAA,kBAGrC,iDAA4B,IAAA"}
1
+ {"version":3,"file":"ThreadListItemUnarchive.d.ts","names":[],"sources":["../../../src/primitives/threadListItem/ThreadListItemUnarchive.tsx"],"mappings":";;KAGY,+BAA+B,KACzC;EAGA,UAAU;;cAGC,4BAA2B,aAAA,kBAGrC,iDAA4B,IAAA"}
@@ -21,6 +21,7 @@ const ThreadListItemUnarchive = (t0) => {
21
21
  if ($[3] !== children || $[4] !== pressableProps || $[5] !== unarchive) {
22
22
  t1 = /* @__PURE__ */ jsx(Pressable, {
23
23
  onPress: unarchive,
24
+ accessibilityRole: "button",
24
25
  ...pressableProps,
25
26
  children
26
27
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemUnarchive.js","names":["ReactNode","Pressable","PressableProps","useThreadListItemUnarchive","ThreadListItemUnarchiveProps","Omit","children","ThreadListItemUnarchive","t0","$","_c","pressableProps","unarchive","t1"],"sources":["../../../src/primitives/threadListItem/ThreadListItemUnarchive.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Pressable, type PressableProps } from \"react-native\";\nimport { useThreadListItemUnarchive } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemUnarchiveProps = Omit<PressableProps, \"onPress\"> & {\n children: ReactNode;\n};\n\nexport const ThreadListItemUnarchive = ({\n children,\n ...pressableProps\n}: ThreadListItemUnarchiveProps) => {\n const { unarchive } = useThreadListItemUnarchive();\n\n return (\n <Pressable onPress={unarchive} {...pressableProps}>\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAQA,MAAaO,2BAA0BC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,aAAAK,kBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,iBAAAF,EAAA;CAAA;CAC7B,MAAA,EAAAG,cAAsBT,2BAA2B;CAAE,IAAAU;CAAA,IAAAJ,EAAA,OAAAH,YAAAG,EAAA,OAAAE,kBAAAF,EAAA,OAAAG,WAAA;EAGjDC,KAAA,oBAAC,WAAD;GAAoBD,SAAAA;GAAS,GAAMD;GAChCL;EADO,CAAA;EAEEG,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,OAFZI;AAEY"}
1
+ {"version":3,"file":"ThreadListItemUnarchive.js","names":["Pressable","PressableProps","useThreadListItemUnarchive","ThreadListItemUnarchiveProps","Omit","children","ThreadListItemUnarchive","t0","$","_c","pressableProps","unarchive","t1"],"sources":["../../../src/primitives/threadListItem/ThreadListItemUnarchive.tsx"],"sourcesContent":["import { Pressable, type PressableProps } from \"react-native\";\nimport { useThreadListItemUnarchive } from \"@assistant-ui/core/react\";\n\nexport type ThreadListItemUnarchiveProps = Omit<\n PressableProps,\n \"onPress\" | \"children\"\n> & {\n children: PressableProps[\"children\"];\n};\n\nexport const ThreadListItemUnarchive = ({\n children,\n ...pressableProps\n}: ThreadListItemUnarchiveProps) => {\n const { unarchive } = useThreadListItemUnarchive();\n\n return (\n <Pressable\n onPress={unarchive}\n accessibilityRole=\"button\"\n {...pressableProps}\n >\n {children}\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAUA,MAAaM,2BAA0BC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAJ;CAAA,IAAAK;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAAC,CAAA,CAAAF,UAAA,GAAAK,kBAAAH;EAGTC,EAAA,KAAAD;EAAAC,EAAA,KAAAH;EAAAG,EAAA,KAAAE;CAAA,OAAA;EAAAL,WAAAG,EAAA;EAAAE,iBAAAF,EAAA;CAAA;CAC7B,MAAA,EAAAG,cAAsBT,2BAA2B;CAAE,IAAAU;CAAA,IAAAJ,EAAA,OAAAH,YAAAG,EAAA,OAAAE,kBAAAF,EAAA,OAAAG,WAAA;EAGjDC,KAAA,oBAAC,WAAD;GACWD,SAAAA;GACS,mBAAA;GAAQ,GACtBD;GAEHL;EALO,CAAA;EAMEG,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,OANZI;AAMY"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@assistant-ui/react-native",
3
- "version": "0.1.37",
3
+ "version": "0.1.39",
4
4
  "description": "React Native bindings for assistant-ui",
5
5
  "keywords": [
6
6
  "assistant",
@@ -31,11 +31,11 @@
31
31
  ],
32
32
  "sideEffects": false,
33
33
  "dependencies": {
34
- "@assistant-ui/core": "^0.3.14",
35
- "@assistant-ui/store": "^0.3.10",
36
- "@assistant-ui/tap": "^0.9.13",
37
- "assistant-stream": "^0.3.38",
38
- "zustand": "^5.0.14"
34
+ "@assistant-ui/core": "^0.3.16",
35
+ "@assistant-ui/store": "^0.3.11",
36
+ "@assistant-ui/tap": "^0.9.15",
37
+ "assistant-stream": "^0.3.40",
38
+ "zustand": "^5.0.15"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "@types/react": "*",
@@ -48,16 +48,16 @@
48
48
  }
49
49
  },
50
50
  "devDependencies": {
51
+ "@assistant-ui/x-buildutils": "0.0.24",
51
52
  "@babel/core": "^7.29.7",
52
53
  "@types/react": "^19.2.18",
53
- "@types/react-dom": "^19.2.4",
54
+ "@types/react-dom": "^19.2.5",
54
55
  "jsdom": "^30.0.1",
55
56
  "react": "^19.2.8",
56
57
  "react-dom": "^19.2.8",
57
58
  "react-native": "^0.87.0",
58
59
  "react-native-web": "^0.21.2",
59
- "vitest": "^4.1.10",
60
- "@assistant-ui/x-buildutils": "0.0.23"
60
+ "vitest": "^4.1.11"
61
61
  },
62
62
  "publishConfig": {
63
63
  "access": "public",
package/src/index.ts CHANGED
@@ -57,6 +57,8 @@ export type {
57
57
  VoiceSessionControls,
58
58
  VoiceSessionHelpers,
59
59
  SuggestionAdapter,
60
+ SuggestionAdapterGenerateOptions,
61
+ CreateSuggestionAdapterOptions,
60
62
  // Other
61
63
  Unsubscribe,
62
64
  } from "@assistant-ui/core";
@@ -70,6 +72,7 @@ export type {
70
72
  export { InMemoryThreadListAdapter } from "@assistant-ui/core";
71
73
  export { createVoiceSession } from "@assistant-ui/core";
72
74
  export { fromThreadMessageLike, generateId } from "@assistant-ui/core";
75
+ export { createSuggestionAdapter } from "@assistant-ui/core";
73
76
 
74
77
  // Attachment adapter implementations
75
78
  export {
@@ -86,6 +89,7 @@ export type {
86
89
  ComposerState,
87
90
  AttachmentState,
88
91
  ThreadListItemState,
92
+ QueueItemState,
89
93
  } from "@assistant-ui/core/store";
90
94
 
91
95
  // Store hooks and components
@@ -123,6 +127,7 @@ export { useRemoteThreadListRuntime } from "./runtimes/useRemoteThreadListRuntim
123
127
  // Primitives
124
128
  export * as ThreadPrimitive from "./primitives/thread";
125
129
  export * as ComposerPrimitive from "./primitives/composer";
130
+ export * as QueueItemPrimitive from "./primitives/queueItem";
126
131
  export * as MessagePrimitive from "./primitives/message";
127
132
  export * as ThreadListPrimitive from "./primitives/threadList";
128
133
  export * as ActionBarPrimitive from "./primitives/actionBar";
@@ -0,0 +1,335 @@
1
+ import { act, type ReactNode } from "react";
2
+ import { createRoot, type Root } from "react-dom/client";
3
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
4
+
5
+ import { ActionBarCopy } from "./actionBar/ActionBarCopy";
6
+ import { ActionBarEdit } from "./actionBar/ActionBarEdit";
7
+ import { ActionBarFeedbackNegative } from "./actionBar/ActionBarFeedbackNegative";
8
+ import { ActionBarFeedbackPositive } from "./actionBar/ActionBarFeedbackPositive";
9
+ import { ActionBarReload } from "./actionBar/ActionBarReload";
10
+ import { AttachmentRemove } from "./attachment/AttachmentRemove";
11
+ import { BranchPickerNext } from "./branchPicker/BranchPickerNext";
12
+ import { BranchPickerPrevious } from "./branchPicker/BranchPickerPrevious";
13
+ import { ChainOfThoughtAccordionTrigger } from "./chainOfThought/ChainOfThoughtAccordionTrigger";
14
+ import { ComposerAddAttachment } from "./composer/ComposerAddAttachment";
15
+ import { ComposerCancel } from "./composer/ComposerCancel";
16
+ import { ComposerQuoteDismiss } from "./composer/ComposerQuoteDismiss";
17
+ import { ComposerSend } from "./composer/ComposerSend";
18
+ import { QueueItemRemove } from "./queueItem/QueueItemRemove";
19
+ import { QueueItemSteer } from "./queueItem/QueueItemSteer";
20
+ import { SuggestionTrigger } from "./suggestion/SuggestionTrigger";
21
+ import { ThreadSuggestion } from "./thread/ThreadSuggestion";
22
+ import { ThreadListNew } from "./threadList/ThreadListNew";
23
+ import { ThreadListItemArchive } from "./threadListItem/ThreadListItemArchive";
24
+ import { ThreadListItemDelete } from "./threadListItem/ThreadListItemDelete";
25
+ import { ThreadListItemTrigger } from "./threadListItem/ThreadListItemTrigger";
26
+ import { ThreadListItemUnarchive } from "./threadListItem/ThreadListItemUnarchive";
27
+
28
+ vi.mock("@assistant-ui/store", () => ({
29
+ useAui: () => ({
30
+ attachment: { remove: vi.fn() },
31
+ chainOfThought: { setCollapsed: vi.fn() },
32
+ composer: { setQuote: vi.fn() },
33
+ queueItem: { remove: vi.fn(), steer: vi.fn() },
34
+ }),
35
+ useAuiState: <T,>(
36
+ selector: (s: {
37
+ suggestion: { prompt: string };
38
+ chainOfThought: { collapsed: boolean };
39
+ threads: { newThreadId: string | null; mainThreadId: string };
40
+ threadListItem: { id: string };
41
+ }) => T,
42
+ ) =>
43
+ selector({
44
+ suggestion: { prompt: "p" },
45
+ chainOfThought: { collapsed: false },
46
+ threads: { newThreadId: null, mainThreadId: "main" },
47
+ threadListItem: { id: "thread" },
48
+ }),
49
+ }));
50
+
51
+ vi.mock("@assistant-ui/core/react", () => ({
52
+ useActionBarCopy: () => ({
53
+ copy: vi.fn(),
54
+ disabled: false,
55
+ isCopied: false,
56
+ }),
57
+ useActionBarEdit: () => ({ edit: vi.fn(), disabled: false }),
58
+ useActionBarFeedbackNegative: () => ({
59
+ submit: vi.fn(),
60
+ isSubmitted: false,
61
+ }),
62
+ useActionBarFeedbackPositive: () => ({
63
+ submit: vi.fn(),
64
+ isSubmitted: false,
65
+ }),
66
+ useActionBarReload: () => ({ reload: vi.fn(), disabled: false }),
67
+ useBranchPickerNext: () => ({ next: vi.fn(), disabled: false }),
68
+ useBranchPickerPrevious: () => ({ previous: vi.fn(), disabled: false }),
69
+ useComposerAddAttachment: () => ({ disabled: false }),
70
+ useComposerCancel: () => ({ cancel: vi.fn(), disabled: false }),
71
+ useComposerSend: () => ({ send: vi.fn(), disabled: false }),
72
+ useSuggestionTrigger: () => ({ trigger: vi.fn(), disabled: false }),
73
+ useThreadListNew: () => ({ switchToNewThread: vi.fn() }),
74
+ useThreadListItemArchive: () => ({ archive: vi.fn() }),
75
+ useThreadListItemDelete: () => ({ delete: vi.fn() }),
76
+ useThreadListItemTrigger: () => ({ switchTo: vi.fn() }),
77
+ useThreadListItemUnarchive: () => ({ unarchive: vi.fn() }),
78
+ }));
79
+
80
+ (globalThis as Record<string, unknown>).IS_REACT_ACT_ENVIRONMENT = true;
81
+
82
+ declare global {
83
+ interface ImportMeta {
84
+ glob(
85
+ pattern: string,
86
+ options: { query: "?raw"; eager: true; import: "default" },
87
+ ): Record<string, string>;
88
+ }
89
+ }
90
+
91
+ type Extra = { accessibilityRole?: "link" | undefined };
92
+
93
+ const actionable: ReadonlyArray<{
94
+ name: string;
95
+ render: (extra: Extra) => ReactNode;
96
+ }> = [
97
+ {
98
+ name: "ActionBarCopy",
99
+ render: (e) => (
100
+ <ActionBarCopy testID="t" {...e}>
101
+ x
102
+ </ActionBarCopy>
103
+ ),
104
+ },
105
+ {
106
+ name: "ActionBarEdit",
107
+ render: (e) => (
108
+ <ActionBarEdit testID="t" {...e}>
109
+ x
110
+ </ActionBarEdit>
111
+ ),
112
+ },
113
+ {
114
+ name: "ActionBarFeedbackNegative",
115
+ render: (e) => (
116
+ <ActionBarFeedbackNegative testID="t" {...e}>
117
+ x
118
+ </ActionBarFeedbackNegative>
119
+ ),
120
+ },
121
+ {
122
+ name: "ActionBarFeedbackPositive",
123
+ render: (e) => (
124
+ <ActionBarFeedbackPositive testID="t" {...e}>
125
+ x
126
+ </ActionBarFeedbackPositive>
127
+ ),
128
+ },
129
+ {
130
+ name: "ActionBarReload",
131
+ render: (e) => (
132
+ <ActionBarReload testID="t" {...e}>
133
+ x
134
+ </ActionBarReload>
135
+ ),
136
+ },
137
+ {
138
+ name: "AttachmentRemove",
139
+ render: (e) => (
140
+ <AttachmentRemove testID="t" {...e}>
141
+ x
142
+ </AttachmentRemove>
143
+ ),
144
+ },
145
+ {
146
+ name: "BranchPickerNext",
147
+ render: (e) => (
148
+ <BranchPickerNext testID="t" {...e}>
149
+ x
150
+ </BranchPickerNext>
151
+ ),
152
+ },
153
+ {
154
+ name: "BranchPickerPrevious",
155
+ render: (e) => (
156
+ <BranchPickerPrevious testID="t" {...e}>
157
+ x
158
+ </BranchPickerPrevious>
159
+ ),
160
+ },
161
+ {
162
+ name: "ChainOfThoughtAccordionTrigger",
163
+ render: (e) => (
164
+ <ChainOfThoughtAccordionTrigger testID="t" {...e}>
165
+ x
166
+ </ChainOfThoughtAccordionTrigger>
167
+ ),
168
+ },
169
+ {
170
+ name: "ComposerAddAttachment",
171
+ render: (e) => (
172
+ <ComposerAddAttachment testID="t" {...e}>
173
+ x
174
+ </ComposerAddAttachment>
175
+ ),
176
+ },
177
+ {
178
+ name: "ComposerCancel",
179
+ render: (e) => (
180
+ <ComposerCancel testID="t" {...e}>
181
+ x
182
+ </ComposerCancel>
183
+ ),
184
+ },
185
+ {
186
+ name: "ComposerSend",
187
+ render: (e) => (
188
+ <ComposerSend testID="t" {...e}>
189
+ x
190
+ </ComposerSend>
191
+ ),
192
+ },
193
+ {
194
+ name: "ComposerQuoteDismiss",
195
+ render: (e) => (
196
+ <ComposerQuoteDismiss testID="t" {...e}>
197
+ x
198
+ </ComposerQuoteDismiss>
199
+ ),
200
+ },
201
+ {
202
+ name: "QueueItemRemove",
203
+ render: (e) => (
204
+ <QueueItemRemove testID="t" {...e}>
205
+ x
206
+ </QueueItemRemove>
207
+ ),
208
+ },
209
+ {
210
+ name: "QueueItemSteer",
211
+ render: (e) => (
212
+ <QueueItemSteer testID="t" {...e}>
213
+ x
214
+ </QueueItemSteer>
215
+ ),
216
+ },
217
+ {
218
+ name: "SuggestionTrigger",
219
+ render: (e) => (
220
+ <SuggestionTrigger testID="t" {...e}>
221
+ x
222
+ </SuggestionTrigger>
223
+ ),
224
+ },
225
+ {
226
+ name: "ThreadSuggestion",
227
+ render: (e) => (
228
+ <ThreadSuggestion testID="t" prompt="p" {...e}>
229
+ x
230
+ </ThreadSuggestion>
231
+ ),
232
+ },
233
+ {
234
+ name: "ThreadListNew",
235
+ render: (e) => (
236
+ <ThreadListNew testID="t" {...e}>
237
+ x
238
+ </ThreadListNew>
239
+ ),
240
+ },
241
+ {
242
+ name: "ThreadListItemArchive",
243
+ render: (e) => (
244
+ <ThreadListItemArchive testID="t" {...e}>
245
+ x
246
+ </ThreadListItemArchive>
247
+ ),
248
+ },
249
+ {
250
+ name: "ThreadListItemDelete",
251
+ render: (e) => (
252
+ <ThreadListItemDelete testID="t" {...e}>
253
+ x
254
+ </ThreadListItemDelete>
255
+ ),
256
+ },
257
+ {
258
+ name: "ThreadListItemTrigger",
259
+ render: (e) => (
260
+ <ThreadListItemTrigger testID="t" {...e}>
261
+ x
262
+ </ThreadListItemTrigger>
263
+ ),
264
+ },
265
+ {
266
+ name: "ThreadListItemUnarchive",
267
+ render: (e) => (
268
+ <ThreadListItemUnarchive testID="t" {...e}>
269
+ x
270
+ </ThreadListItemUnarchive>
271
+ ),
272
+ },
273
+ ];
274
+
275
+ describe("react-native primitive accessibility roles", () => {
276
+ let container: HTMLDivElement;
277
+ let root: Root;
278
+
279
+ beforeEach(() => {
280
+ container = document.createElement("div");
281
+ document.body.appendChild(container);
282
+ root = createRoot(container);
283
+ });
284
+
285
+ afterEach(async () => {
286
+ await act(async () => {
287
+ root.unmount();
288
+ });
289
+ container.remove();
290
+ });
291
+
292
+ const mount = async (node: ReactNode) => {
293
+ await act(async () => {
294
+ root.render(node);
295
+ });
296
+ const el = container.querySelector('[data-testid="t"]');
297
+ expect(el).not.toBeNull();
298
+ return el as HTMLElement;
299
+ };
300
+
301
+ it("gives every Pressable primitive in the package a button role", () => {
302
+ const wrappers = Object.entries(
303
+ import.meta.glob("./**/*.tsx", {
304
+ query: "?raw",
305
+ eager: true,
306
+ import: "default",
307
+ }),
308
+ ).filter(
309
+ ([file, source]) =>
310
+ !file.endsWith(".test.tsx") && source.includes("<Pressable"),
311
+ );
312
+
313
+ expect(
314
+ wrappers
315
+ .filter(([, source]) => !source.includes('accessibilityRole="button"'))
316
+ .map(([file]) => file),
317
+ ).toEqual([]);
318
+
319
+ expect(
320
+ wrappers.map(([file]) => file.replace(/^.*\/|\.tsx$/g, "")).sort(),
321
+ ).toEqual(actionable.map(({ name }) => name).sort());
322
+ });
323
+
324
+ for (const { name, render } of actionable) {
325
+ it(`${name} defaults its accessibilityRole to button`, async () => {
326
+ const el = await mount(render({}));
327
+ expect(el.getAttribute("role")).toBe("button");
328
+ });
329
+
330
+ it(`${name} lets the caller override the role`, async () => {
331
+ const el = await mount(render({ accessibilityRole: "link" }));
332
+ expect(el.getAttribute("role")).toBe("link");
333
+ });
334
+ }
335
+ });
@@ -26,6 +26,7 @@ export const ActionBarCopy = ({
26
26
  <Pressable
27
27
  onPress={copy}
28
28
  disabled={disabledProp ?? disabled}
29
+ accessibilityRole="button"
29
30
  {...pressableProps}
30
31
  >
31
32
  {typeof children === "function" ? children({ isCopied }) : children}
@@ -1,9 +1,11 @@
1
- import type { ReactNode } from "react";
2
1
  import { Pressable, type PressableProps } from "react-native";
3
2
  import { useActionBarEdit } from "@assistant-ui/core/react";
4
3
 
5
- export type ActionBarEditProps = Omit<PressableProps, "onPress"> & {
6
- children: ReactNode;
4
+ export type ActionBarEditProps = Omit<
5
+ PressableProps,
6
+ "onPress" | "children"
7
+ > & {
8
+ children: PressableProps["children"];
7
9
  };
8
10
 
9
11
  export const ActionBarEdit = ({
@@ -17,6 +19,7 @@ export const ActionBarEdit = ({
17
19
  <Pressable
18
20
  onPress={edit}
19
21
  disabled={disabledProp ?? disabled}
22
+ accessibilityRole="button"
20
23
  {...pressableProps}
21
24
  >
22
25
  {children}