@assistant-ui/react 0.12.17 → 0.12.20

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 (508) hide show
  1. package/README.md +1 -1
  2. package/dist/client/ExternalThread.d.ts +24 -3
  3. package/dist/client/ExternalThread.d.ts.map +1 -1
  4. package/dist/client/ExternalThread.js +107 -27
  5. package/dist/client/ExternalThread.js.map +1 -1
  6. package/dist/client/InMemoryThreadList.js +23 -30
  7. package/dist/client/InMemoryThreadList.js.map +1 -1
  8. package/dist/client/SingleThreadList.d.ts +12 -0
  9. package/dist/client/SingleThreadList.d.ts.map +1 -0
  10. package/dist/client/SingleThreadList.js +68 -0
  11. package/dist/client/SingleThreadList.js.map +1 -0
  12. package/dist/context/index.d.ts +19 -3
  13. package/dist/context/index.d.ts.map +1 -1
  14. package/dist/context/index.js +18 -3
  15. package/dist/context/index.js.map +1 -1
  16. package/dist/context/react/ThreadViewportContext.d.ts +1 -1
  17. package/dist/context/react/ThreadViewportContext.d.ts.map +1 -1
  18. package/dist/hooks/useMessageQuote.d.ts.map +1 -1
  19. package/dist/hooks/useMessageQuote.js +2 -1
  20. package/dist/hooks/useMessageQuote.js.map +1 -1
  21. package/dist/index.d.ts +96 -8
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +101 -8
  24. package/dist/index.js.map +1 -1
  25. package/dist/internal.d.ts +2 -1
  26. package/dist/internal.d.ts.map +1 -1
  27. package/dist/internal.js +2 -1
  28. package/dist/internal.js.map +1 -1
  29. package/dist/legacy-runtime/AssistantRuntimeProvider.js +1 -1
  30. package/dist/legacy-runtime/AssistantRuntimeProvider.js.map +1 -1
  31. package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.d.ts +1 -1
  32. package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
  33. package/dist/legacy-runtime/hooks/ThreadContext.d.ts +1 -1
  34. package/dist/legacy-runtime/hooks/ThreadContext.d.ts.map +1 -1
  35. package/dist/legacy-runtime/runtime-cores/assistant-transport/types.d.ts +1 -1
  36. package/dist/legacy-runtime/runtime-cores/assistant-transport/types.d.ts.map +1 -1
  37. package/dist/legacy-runtime/runtime-cores/assistant-transport/types.js.map +1 -1
  38. package/dist/primitives/actionBar/ActionBarSpeak.d.ts.map +1 -1
  39. package/dist/primitives/actionBar/ActionBarSpeak.js +4 -13
  40. package/dist/primitives/actionBar/ActionBarSpeak.js.map +1 -1
  41. package/dist/primitives/actionBar/ActionBarStopSpeaking.d.ts.map +1 -1
  42. package/dist/primitives/actionBar/ActionBarStopSpeaking.js +4 -9
  43. package/dist/primitives/actionBar/ActionBarStopSpeaking.js.map +1 -1
  44. package/dist/primitives/actionBar.d.ts +10 -0
  45. package/dist/primitives/actionBar.d.ts.map +1 -0
  46. package/dist/primitives/actionBar.js +10 -0
  47. package/dist/primitives/actionBar.js.map +1 -0
  48. package/dist/primitives/actionBarMore.d.ts +6 -0
  49. package/dist/primitives/actionBarMore.d.ts.map +1 -0
  50. package/dist/primitives/actionBarMore.js +6 -0
  51. package/dist/primitives/actionBarMore.js.map +1 -0
  52. package/dist/primitives/assistantModal.d.ts +5 -0
  53. package/dist/primitives/assistantModal.d.ts.map +1 -0
  54. package/dist/primitives/assistantModal.js +5 -0
  55. package/dist/primitives/assistantModal.js.map +1 -0
  56. package/dist/primitives/attachment/AttachmentThumb.js +1 -1
  57. package/dist/primitives/attachment/AttachmentThumb.js.map +1 -1
  58. package/dist/primitives/attachment.d.ts +5 -0
  59. package/dist/primitives/attachment.d.ts.map +1 -0
  60. package/dist/primitives/attachment.js +5 -0
  61. package/dist/primitives/attachment.js.map +1 -0
  62. package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -1
  63. package/dist/primitives/branchPicker/BranchPickerNext.js +3 -17
  64. package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
  65. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts +0 -21
  66. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -1
  67. package/dist/primitives/branchPicker/BranchPickerPrevious.js +3 -38
  68. package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
  69. package/dist/primitives/branchPicker/BranchPickerRoot.js +1 -1
  70. package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
  71. package/dist/primitives/branchPicker.d.ts +6 -0
  72. package/dist/primitives/branchPicker.d.ts.map +1 -0
  73. package/dist/primitives/branchPicker.js +6 -0
  74. package/dist/primitives/branchPicker.js.map +1 -0
  75. package/dist/primitives/chainOfThought.d.ts +4 -0
  76. package/dist/primitives/chainOfThought.d.ts.map +1 -0
  77. package/dist/primitives/chainOfThought.js +4 -0
  78. package/dist/primitives/chainOfThought.js.map +1 -0
  79. package/dist/primitives/composer/ComposerDictate.d.ts.map +1 -1
  80. package/dist/primitives/composer/ComposerDictate.js +3 -10
  81. package/dist/primitives/composer/ComposerDictate.js.map +1 -1
  82. package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
  83. package/dist/primitives/composer/ComposerInput.js +37 -7
  84. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  85. package/dist/primitives/composer/ComposerQueue.d.ts +2 -0
  86. package/dist/primitives/composer/ComposerQueue.d.ts.map +1 -0
  87. package/dist/primitives/composer/ComposerQueue.js +3 -0
  88. package/dist/primitives/composer/ComposerQueue.js.map +1 -0
  89. package/dist/primitives/composer/ComposerSend.d.ts.map +1 -1
  90. package/dist/primitives/composer/ComposerSend.js +3 -1
  91. package/dist/primitives/composer/ComposerSend.js.map +1 -1
  92. package/dist/primitives/composer/mention/ComposerMentionBack.d.ts +21 -0
  93. package/dist/primitives/composer/mention/ComposerMentionBack.d.ts.map +1 -0
  94. package/dist/primitives/composer/mention/ComposerMentionBack.js +28 -0
  95. package/dist/primitives/composer/mention/ComposerMentionBack.js.map +1 -0
  96. package/dist/primitives/composer/mention/ComposerMentionCategories.d.ts +42 -0
  97. package/dist/primitives/composer/mention/ComposerMentionCategories.d.ts.map +1 -0
  98. package/dist/primitives/composer/mention/ComposerMentionCategories.js +32 -0
  99. package/dist/primitives/composer/mention/ComposerMentionCategories.js.map +1 -0
  100. package/dist/primitives/composer/mention/ComposerMentionContext.d.ts +23 -0
  101. package/dist/primitives/composer/mention/ComposerMentionContext.d.ts.map +1 -0
  102. package/dist/primitives/composer/mention/ComposerMentionContext.js +66 -0
  103. package/dist/primitives/composer/mention/ComposerMentionContext.js.map +1 -0
  104. package/dist/primitives/composer/mention/ComposerMentionItems.d.ts +46 -0
  105. package/dist/primitives/composer/mention/ComposerMentionItems.d.ts.map +1 -0
  106. package/dist/primitives/composer/mention/ComposerMentionItems.js +30 -0
  107. package/dist/primitives/composer/mention/ComposerMentionItems.js.map +1 -0
  108. package/dist/primitives/composer/mention/ComposerMentionPopover.d.ts +24 -0
  109. package/dist/primitives/composer/mention/ComposerMentionPopover.d.ts.map +1 -0
  110. package/dist/primitives/composer/mention/ComposerMentionPopover.js +28 -0
  111. package/dist/primitives/composer/mention/ComposerMentionPopover.js.map +1 -0
  112. package/dist/primitives/composer/mention/MentionResource.d.ts +39 -0
  113. package/dist/primitives/composer/mention/MentionResource.d.ts.map +1 -0
  114. package/dist/primitives/composer/mention/MentionResource.js +230 -0
  115. package/dist/primitives/composer/mention/MentionResource.js.map +1 -0
  116. package/dist/primitives/composer/mention/detectMentionTrigger.d.ts +2 -0
  117. package/dist/primitives/composer/mention/detectMentionTrigger.d.ts.map +1 -0
  118. package/dist/primitives/composer/mention/detectMentionTrigger.js +26 -0
  119. package/dist/primitives/composer/mention/detectMentionTrigger.js.map +1 -0
  120. package/dist/primitives/composer/mention/index.d.ts +6 -0
  121. package/dist/primitives/composer/mention/index.d.ts.map +1 -0
  122. package/dist/primitives/composer/mention/index.js +6 -0
  123. package/dist/primitives/composer/mention/index.js.map +1 -0
  124. package/dist/primitives/composer.d.ts +26 -0
  125. package/dist/primitives/composer.d.ts.map +1 -0
  126. package/dist/primitives/composer.js +26 -0
  127. package/dist/primitives/composer.js.map +1 -0
  128. package/dist/primitives/error/ErrorMessage.d.ts.map +1 -1
  129. package/dist/primitives/error/ErrorMessage.js +2 -7
  130. package/dist/primitives/error/ErrorMessage.js.map +1 -1
  131. package/dist/primitives/error.d.ts +3 -0
  132. package/dist/primitives/error.d.ts.map +1 -0
  133. package/dist/primitives/error.js +3 -0
  134. package/dist/primitives/error.js.map +1 -0
  135. package/dist/primitives/message/MessageError.d.ts.map +1 -1
  136. package/dist/primitives/message/MessageError.js +3 -4
  137. package/dist/primitives/message/MessageError.js.map +1 -1
  138. package/dist/primitives/message/MessageParts.d.ts.map +1 -1
  139. package/dist/primitives/message/MessageParts.js +6 -1
  140. package/dist/primitives/message/MessageParts.js.map +1 -1
  141. package/dist/primitives/message/MessagePartsGrouped.d.ts +1 -1
  142. package/dist/primitives/message/MessagePartsGrouped.d.ts.map +1 -1
  143. package/dist/primitives/message/MessagePartsGrouped.js +2 -1
  144. package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
  145. package/dist/primitives/message.d.ts +11 -0
  146. package/dist/primitives/message.d.ts.map +1 -0
  147. package/dist/primitives/message.js +11 -0
  148. package/dist/primitives/message.js.map +1 -0
  149. package/dist/primitives/messagePart.d.ts +5 -0
  150. package/dist/primitives/messagePart.d.ts.map +1 -0
  151. package/dist/primitives/messagePart.js +5 -0
  152. package/dist/primitives/messagePart.js.map +1 -0
  153. package/dist/primitives/queueItem/QueueItemRemove.d.ts +19 -0
  154. package/dist/primitives/queueItem/QueueItemRemove.d.ts.map +1 -0
  155. package/dist/primitives/queueItem/QueueItemRemove.js +21 -0
  156. package/dist/primitives/queueItem/QueueItemRemove.js.map +1 -0
  157. package/dist/primitives/queueItem/QueueItemSteer.d.ts +19 -0
  158. package/dist/primitives/queueItem/QueueItemSteer.d.ts.map +1 -0
  159. package/dist/primitives/queueItem/QueueItemSteer.js +21 -0
  160. package/dist/primitives/queueItem/QueueItemSteer.js.map +1 -0
  161. package/dist/primitives/queueItem/QueueItemText.d.ts +18 -0
  162. package/dist/primitives/queueItem/QueueItemText.d.ts.map +1 -0
  163. package/dist/primitives/queueItem/QueueItemText.js +19 -0
  164. package/dist/primitives/queueItem/QueueItemText.js.map +1 -0
  165. package/dist/primitives/queueItem.d.ts +4 -0
  166. package/dist/primitives/queueItem.d.ts.map +1 -0
  167. package/dist/primitives/queueItem.js +4 -0
  168. package/dist/primitives/queueItem.js.map +1 -0
  169. package/dist/primitives/selectionToolbar.d.ts +3 -0
  170. package/dist/primitives/selectionToolbar.d.ts.map +1 -0
  171. package/dist/primitives/selectionToolbar.js +3 -0
  172. package/dist/primitives/selectionToolbar.js.map +1 -0
  173. package/dist/primitives/suggestion.d.ts +4 -0
  174. package/dist/primitives/suggestion.d.ts.map +1 -0
  175. package/dist/primitives/suggestion.js +4 -0
  176. package/dist/primitives/suggestion.js.map +1 -0
  177. package/dist/primitives/thread/ThreadRoot.d.ts +3 -1
  178. package/dist/primitives/thread/ThreadRoot.d.ts.map +1 -1
  179. package/dist/primitives/thread/ThreadRoot.js +3 -1
  180. package/dist/primitives/thread/ThreadRoot.js.map +1 -1
  181. package/dist/primitives/thread/ThreadSuggestion.d.ts.map +1 -1
  182. package/dist/primitives/thread/ThreadSuggestion.js +8 -29
  183. package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
  184. package/dist/primitives/thread/ThreadViewport.d.ts +3 -1
  185. package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -1
  186. package/dist/primitives/thread/ThreadViewport.js +3 -1
  187. package/dist/primitives/thread/ThreadViewport.js.map +1 -1
  188. package/dist/primitives/thread/ThreadViewportFooter.d.ts +3 -1
  189. package/dist/primitives/thread/ThreadViewportFooter.d.ts.map +1 -1
  190. package/dist/primitives/thread/ThreadViewportFooter.js +3 -1
  191. package/dist/primitives/thread/ThreadViewportFooter.js.map +1 -1
  192. package/dist/primitives/thread.d.ts +13 -0
  193. package/dist/primitives/thread.d.ts.map +1 -0
  194. package/dist/primitives/thread.js +13 -0
  195. package/dist/primitives/thread.js.map +1 -0
  196. package/dist/primitives/threadList/ThreadListNew.d.ts.map +1 -1
  197. package/dist/primitives/threadList/ThreadListNew.js +4 -5
  198. package/dist/primitives/threadList/ThreadListNew.js.map +1 -1
  199. package/dist/primitives/threadList.d.ts +5 -0
  200. package/dist/primitives/threadList.d.ts.map +1 -0
  201. package/dist/primitives/threadList.js +5 -0
  202. package/dist/primitives/threadList.js.map +1 -0
  203. package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts.map +1 -1
  204. package/dist/primitives/threadListItem/ThreadListItemArchive.js +3 -6
  205. package/dist/primitives/threadListItem/ThreadListItemArchive.js.map +1 -1
  206. package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts.map +1 -1
  207. package/dist/primitives/threadListItem/ThreadListItemDelete.js +3 -6
  208. package/dist/primitives/threadListItem/ThreadListItemDelete.js.map +1 -1
  209. package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts.map +1 -1
  210. package/dist/primitives/threadListItem/ThreadListItemTrigger.js +3 -6
  211. package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
  212. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts.map +1 -1
  213. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js +3 -6
  214. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -1
  215. package/dist/primitives/threadListItem.d.ts +7 -0
  216. package/dist/primitives/threadListItem.d.ts.map +1 -0
  217. package/dist/primitives/threadListItem.js +7 -0
  218. package/dist/primitives/threadListItem.js.map +1 -0
  219. package/dist/primitives/threadListItemMore.d.ts +6 -0
  220. package/dist/primitives/threadListItemMore.d.ts.map +1 -0
  221. package/dist/primitives/threadListItemMore.js +6 -0
  222. package/dist/primitives/threadListItemMore.js.map +1 -0
  223. package/dist/unstable/useToolMentionAdapter.d.ts +42 -0
  224. package/dist/unstable/useToolMentionAdapter.d.ts.map +1 -0
  225. package/dist/unstable/useToolMentionAdapter.js +65 -0
  226. package/dist/unstable/useToolMentionAdapter.js.map +1 -0
  227. package/package.json +12 -12
  228. package/src/client/ExternalThread.ts +161 -32
  229. package/src/client/InMemoryThreadList.ts +24 -35
  230. package/src/client/SingleThreadList.ts +95 -0
  231. package/src/context/index.ts +67 -3
  232. package/src/context/react/ThreadViewportContext.ts +1 -1
  233. package/src/hooks/useMessageQuote.ts +3 -7
  234. package/src/index.ts +357 -8
  235. package/src/internal.ts +5 -1
  236. package/src/legacy-runtime/AssistantRuntimeProvider.tsx +1 -1
  237. package/src/legacy-runtime/cloud/useCloudThreadListRuntime.ts +1 -1
  238. package/src/legacy-runtime/hooks/MessageContext.ts +1 -1
  239. package/src/legacy-runtime/hooks/ThreadContext.ts +2 -2
  240. package/src/legacy-runtime/runtime-cores/assistant-transport/types.ts +4 -1
  241. package/src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.ts +1 -1
  242. package/src/model-context/frame/SPEC_AssistantFrame.md +2 -2
  243. package/src/primitives/actionBar/ActionBarSpeak.ts +4 -17
  244. package/src/primitives/actionBar/ActionBarStopSpeaking.tsx +4 -12
  245. package/src/primitives/actionBar.ts +9 -0
  246. package/src/primitives/actionBarMore.ts +5 -0
  247. package/src/primitives/assistantModal.ts +4 -0
  248. package/src/primitives/attachment/AttachmentThumb.tsx +1 -1
  249. package/src/primitives/attachment.ts +4 -0
  250. package/src/primitives/branchPicker/BranchPickerNext.ts +3 -20
  251. package/src/primitives/branchPicker/BranchPickerPrevious.ts +3 -41
  252. package/src/primitives/branchPicker/BranchPickerRoot.tsx +1 -1
  253. package/src/primitives/branchPicker.ts +5 -0
  254. package/src/primitives/{chainOfThought/index.ts → chainOfThought.ts} +3 -3
  255. package/src/primitives/composer/ComposerDictate.ts +3 -15
  256. package/src/primitives/composer/ComposerInput.tsx +49 -5
  257. package/src/primitives/composer/ComposerQueue.tsx +3 -0
  258. package/src/primitives/composer/ComposerSend.ts +3 -1
  259. package/src/primitives/composer/mention/ComposerMentionBack.tsx +55 -0
  260. package/src/primitives/composer/mention/ComposerMentionCategories.tsx +104 -0
  261. package/src/primitives/composer/mention/ComposerMentionContext.tsx +141 -0
  262. package/src/primitives/composer/mention/ComposerMentionItems.tsx +104 -0
  263. package/src/primitives/composer/mention/ComposerMentionPopover.tsx +52 -0
  264. package/src/primitives/composer/mention/MentionResource.ts +328 -0
  265. package/src/primitives/composer/mention/detectMentionTrigger.test.ts +78 -0
  266. package/src/primitives/composer/mention/detectMentionTrigger.ts +37 -0
  267. package/src/primitives/composer/mention/index.ts +16 -0
  268. package/src/primitives/composer.ts +25 -0
  269. package/src/primitives/error/ErrorMessage.tsx +2 -7
  270. package/src/primitives/error.ts +2 -0
  271. package/src/primitives/message/MessageError.ts +3 -7
  272. package/src/primitives/message/MessageParts.tsx +11 -4
  273. package/src/primitives/message/MessagePartsGrouped.tsx +3 -5
  274. package/src/primitives/message.ts +13 -0
  275. package/src/primitives/messagePart.ts +4 -0
  276. package/src/primitives/queueItem/QueueItemRemove.ts +37 -0
  277. package/src/primitives/queueItem/QueueItemSteer.ts +37 -0
  278. package/src/primitives/queueItem/QueueItemText.tsx +37 -0
  279. package/src/primitives/queueItem.ts +3 -0
  280. package/src/primitives/{selectionToolbar/index.ts → selectionToolbar.ts} +2 -2
  281. package/src/primitives/suggestion.ts +3 -0
  282. package/src/primitives/thread/ThreadRoot.tsx +3 -1
  283. package/src/primitives/thread/ThreadSuggestion.ts +8 -30
  284. package/src/primitives/thread/ThreadViewport.tsx +3 -1
  285. package/src/primitives/thread/ThreadViewportFooter.tsx +3 -1
  286. package/src/primitives/thread.ts +15 -0
  287. package/src/primitives/threadList/ThreadListNew.tsx +4 -5
  288. package/src/primitives/threadList.ts +4 -0
  289. package/src/primitives/threadListItem/ThreadListItemArchive.ts +3 -6
  290. package/src/primitives/threadListItem/ThreadListItemDelete.ts +3 -6
  291. package/src/primitives/threadListItem/ThreadListItemTrigger.ts +3 -6
  292. package/src/primitives/threadListItem/ThreadListItemUnarchive.ts +3 -6
  293. package/src/primitives/threadListItem.ts +6 -0
  294. package/src/primitives/threadListItemMore.ts +5 -0
  295. package/src/unstable/useToolMentionAdapter.ts +114 -0
  296. package/dist/client/index.d.ts +0 -7
  297. package/dist/client/index.d.ts.map +0 -1
  298. package/dist/client/index.js +0 -10
  299. package/dist/client/index.js.map +0 -1
  300. package/dist/context/providers/index.d.ts +0 -10
  301. package/dist/context/providers/index.d.ts.map +0 -1
  302. package/dist/context/providers/index.js +0 -10
  303. package/dist/context/providers/index.js.map +0 -1
  304. package/dist/context/react/index.d.ts +0 -9
  305. package/dist/context/react/index.d.ts.map +0 -1
  306. package/dist/context/react/index.js +0 -10
  307. package/dist/context/react/index.js.map +0 -1
  308. package/dist/context/stores/index.d.ts +0 -2
  309. package/dist/context/stores/index.d.ts.map +0 -1
  310. package/dist/context/stores/index.js +0 -2
  311. package/dist/context/stores/index.js.map +0 -1
  312. package/dist/devtools/index.d.ts +0 -2
  313. package/dist/devtools/index.d.ts.map +0 -1
  314. package/dist/devtools/index.js +0 -2
  315. package/dist/devtools/index.js.map +0 -1
  316. package/dist/legacy-runtime/cloud/index.d.ts +0 -3
  317. package/dist/legacy-runtime/cloud/index.d.ts.map +0 -1
  318. package/dist/legacy-runtime/cloud/index.js +0 -3
  319. package/dist/legacy-runtime/cloud/index.js.map +0 -1
  320. package/dist/legacy-runtime/runtime/index.d.ts +0 -2
  321. package/dist/legacy-runtime/runtime/index.d.ts.map +0 -1
  322. package/dist/legacy-runtime/runtime/index.js +0 -2
  323. package/dist/legacy-runtime/runtime/index.js.map +0 -1
  324. package/dist/legacy-runtime/runtime-cores/adapters/attachment/index.d.ts +0 -4
  325. package/dist/legacy-runtime/runtime-cores/adapters/attachment/index.d.ts.map +0 -1
  326. package/dist/legacy-runtime/runtime-cores/adapters/attachment/index.js +0 -4
  327. package/dist/legacy-runtime/runtime-cores/adapters/attachment/index.js.map +0 -1
  328. package/dist/legacy-runtime/runtime-cores/adapters/feedback/index.d.ts +0 -2
  329. package/dist/legacy-runtime/runtime-cores/adapters/feedback/index.d.ts.map +0 -1
  330. package/dist/legacy-runtime/runtime-cores/adapters/feedback/index.js +0 -2
  331. package/dist/legacy-runtime/runtime-cores/adapters/feedback/index.js.map +0 -1
  332. package/dist/legacy-runtime/runtime-cores/adapters/index.d.ts +0 -7
  333. package/dist/legacy-runtime/runtime-cores/adapters/index.d.ts.map +0 -1
  334. package/dist/legacy-runtime/runtime-cores/adapters/index.js +0 -7
  335. package/dist/legacy-runtime/runtime-cores/adapters/index.js.map +0 -1
  336. package/dist/legacy-runtime/runtime-cores/adapters/speech/index.d.ts +0 -3
  337. package/dist/legacy-runtime/runtime-cores/adapters/speech/index.d.ts.map +0 -1
  338. package/dist/legacy-runtime/runtime-cores/adapters/speech/index.js +0 -2
  339. package/dist/legacy-runtime/runtime-cores/adapters/speech/index.js.map +0 -1
  340. package/dist/legacy-runtime/runtime-cores/adapters/suggestion/index.d.ts +0 -2
  341. package/dist/legacy-runtime/runtime-cores/adapters/suggestion/index.d.ts.map +0 -1
  342. package/dist/legacy-runtime/runtime-cores/adapters/suggestion/index.js +0 -2
  343. package/dist/legacy-runtime/runtime-cores/adapters/suggestion/index.js.map +0 -1
  344. package/dist/legacy-runtime/runtime-cores/adapters/thread-history/index.d.ts +0 -2
  345. package/dist/legacy-runtime/runtime-cores/adapters/thread-history/index.d.ts.map +0 -1
  346. package/dist/legacy-runtime/runtime-cores/adapters/thread-history/index.js +0 -2
  347. package/dist/legacy-runtime/runtime-cores/adapters/thread-history/index.js.map +0 -1
  348. package/dist/legacy-runtime/runtime-cores/assistant-transport/index.d.ts +0 -3
  349. package/dist/legacy-runtime/runtime-cores/assistant-transport/index.d.ts.map +0 -1
  350. package/dist/legacy-runtime/runtime-cores/assistant-transport/index.js +0 -2
  351. package/dist/legacy-runtime/runtime-cores/assistant-transport/index.js.map +0 -1
  352. package/dist/legacy-runtime/runtime-cores/core/index.d.ts +0 -2
  353. package/dist/legacy-runtime/runtime-cores/core/index.d.ts.map +0 -1
  354. package/dist/legacy-runtime/runtime-cores/core/index.js +0 -2
  355. package/dist/legacy-runtime/runtime-cores/core/index.js.map +0 -1
  356. package/dist/legacy-runtime/runtime-cores/external-store/index.d.ts +0 -7
  357. package/dist/legacy-runtime/runtime-cores/external-store/index.d.ts.map +0 -1
  358. package/dist/legacy-runtime/runtime-cores/external-store/index.js +0 -6
  359. package/dist/legacy-runtime/runtime-cores/external-store/index.js.map +0 -1
  360. package/dist/legacy-runtime/runtime-cores/index.d.ts +0 -9
  361. package/dist/legacy-runtime/runtime-cores/index.d.ts.map +0 -1
  362. package/dist/legacy-runtime/runtime-cores/index.js +0 -8
  363. package/dist/legacy-runtime/runtime-cores/index.js.map +0 -1
  364. package/dist/legacy-runtime/runtime-cores/local/index.d.ts +0 -8
  365. package/dist/legacy-runtime/runtime-cores/local/index.d.ts.map +0 -1
  366. package/dist/legacy-runtime/runtime-cores/local/index.js +0 -7
  367. package/dist/legacy-runtime/runtime-cores/local/index.js.map +0 -1
  368. package/dist/legacy-runtime/runtime-cores/remote-thread-list/index.d.ts +0 -5
  369. package/dist/legacy-runtime/runtime-cores/remote-thread-list/index.d.ts.map +0 -1
  370. package/dist/legacy-runtime/runtime-cores/remote-thread-list/index.js +0 -5
  371. package/dist/legacy-runtime/runtime-cores/remote-thread-list/index.js.map +0 -1
  372. package/dist/model-context/frame/index.d.ts +0 -6
  373. package/dist/model-context/frame/index.d.ts.map +0 -1
  374. package/dist/model-context/frame/index.js +0 -5
  375. package/dist/model-context/frame/index.js.map +0 -1
  376. package/dist/model-context/index.d.ts +0 -10
  377. package/dist/model-context/index.d.ts.map +0 -1
  378. package/dist/model-context/index.js +0 -11
  379. package/dist/model-context/index.js.map +0 -1
  380. package/dist/model-context/registry/index.d.ts +0 -3
  381. package/dist/model-context/registry/index.d.ts.map +0 -1
  382. package/dist/model-context/registry/index.js +0 -2
  383. package/dist/model-context/registry/index.js.map +0 -1
  384. package/dist/primitives/actionBar/index.d.ts +0 -10
  385. package/dist/primitives/actionBar/index.d.ts.map +0 -1
  386. package/dist/primitives/actionBar/index.js +0 -10
  387. package/dist/primitives/actionBar/index.js.map +0 -1
  388. package/dist/primitives/actionBarMore/index.d.ts +0 -6
  389. package/dist/primitives/actionBarMore/index.d.ts.map +0 -1
  390. package/dist/primitives/actionBarMore/index.js +0 -6
  391. package/dist/primitives/actionBarMore/index.js.map +0 -1
  392. package/dist/primitives/assistantModal/index.d.ts +0 -5
  393. package/dist/primitives/assistantModal/index.d.ts.map +0 -1
  394. package/dist/primitives/assistantModal/index.js +0 -5
  395. package/dist/primitives/assistantModal/index.js.map +0 -1
  396. package/dist/primitives/attachment/index.d.ts +0 -5
  397. package/dist/primitives/attachment/index.d.ts.map +0 -1
  398. package/dist/primitives/attachment/index.js +0 -5
  399. package/dist/primitives/attachment/index.js.map +0 -1
  400. package/dist/primitives/branchPicker/index.d.ts +0 -6
  401. package/dist/primitives/branchPicker/index.d.ts.map +0 -1
  402. package/dist/primitives/branchPicker/index.js +0 -6
  403. package/dist/primitives/branchPicker/index.js.map +0 -1
  404. package/dist/primitives/chainOfThought/index.d.ts +0 -4
  405. package/dist/primitives/chainOfThought/index.d.ts.map +0 -1
  406. package/dist/primitives/chainOfThought/index.js +0 -4
  407. package/dist/primitives/chainOfThought/index.js.map +0 -1
  408. package/dist/primitives/composer/index.d.ts +0 -16
  409. package/dist/primitives/composer/index.d.ts.map +0 -1
  410. package/dist/primitives/composer/index.js +0 -16
  411. package/dist/primitives/composer/index.js.map +0 -1
  412. package/dist/primitives/error/index.d.ts +0 -3
  413. package/dist/primitives/error/index.d.ts.map +0 -1
  414. package/dist/primitives/error/index.js +0 -3
  415. package/dist/primitives/error/index.js.map +0 -1
  416. package/dist/primitives/index.d.ts +0 -27
  417. package/dist/primitives/index.d.ts.map +0 -1
  418. package/dist/primitives/index.js +0 -27
  419. package/dist/primitives/index.js.map +0 -1
  420. package/dist/primitives/message/index.d.ts +0 -10
  421. package/dist/primitives/message/index.d.ts.map +0 -1
  422. package/dist/primitives/message/index.js +0 -10
  423. package/dist/primitives/message/index.js.map +0 -1
  424. package/dist/primitives/messagePart/index.d.ts +0 -4
  425. package/dist/primitives/messagePart/index.d.ts.map +0 -1
  426. package/dist/primitives/messagePart/index.js +0 -4
  427. package/dist/primitives/messagePart/index.js.map +0 -1
  428. package/dist/primitives/reasoning/index.d.ts +0 -2
  429. package/dist/primitives/reasoning/index.d.ts.map +0 -1
  430. package/dist/primitives/reasoning/index.js +0 -2
  431. package/dist/primitives/reasoning/index.js.map +0 -1
  432. package/dist/primitives/selectionToolbar/index.d.ts +0 -3
  433. package/dist/primitives/selectionToolbar/index.d.ts.map +0 -1
  434. package/dist/primitives/selectionToolbar/index.js +0 -3
  435. package/dist/primitives/selectionToolbar/index.js.map +0 -1
  436. package/dist/primitives/suggestion/index.d.ts +0 -4
  437. package/dist/primitives/suggestion/index.d.ts.map +0 -1
  438. package/dist/primitives/suggestion/index.js +0 -4
  439. package/dist/primitives/suggestion/index.js.map +0 -1
  440. package/dist/primitives/thread/index.d.ts +0 -13
  441. package/dist/primitives/thread/index.d.ts.map +0 -1
  442. package/dist/primitives/thread/index.js +0 -13
  443. package/dist/primitives/thread/index.js.map +0 -1
  444. package/dist/primitives/threadList/index.d.ts +0 -5
  445. package/dist/primitives/threadList/index.d.ts.map +0 -1
  446. package/dist/primitives/threadList/index.js +0 -5
  447. package/dist/primitives/threadList/index.js.map +0 -1
  448. package/dist/primitives/threadListItem/index.d.ts +0 -7
  449. package/dist/primitives/threadListItem/index.d.ts.map +0 -1
  450. package/dist/primitives/threadListItem/index.js +0 -7
  451. package/dist/primitives/threadListItem/index.js.map +0 -1
  452. package/dist/primitives/threadListItemMore/index.d.ts +0 -6
  453. package/dist/primitives/threadListItemMore/index.d.ts.map +0 -1
  454. package/dist/primitives/threadListItemMore/index.js +0 -6
  455. package/dist/primitives/threadListItemMore/index.js.map +0 -1
  456. package/dist/types/index.d.ts +0 -4
  457. package/dist/types/index.d.ts.map +0 -1
  458. package/dist/types/index.js +0 -2
  459. package/dist/types/index.js.map +0 -1
  460. package/dist/types/scopes/index.d.ts +0 -3
  461. package/dist/types/scopes/index.d.ts.map +0 -1
  462. package/dist/types/scopes/index.js +0 -2
  463. package/dist/types/scopes/index.js.map +0 -1
  464. package/dist/utils/smooth/index.d.ts +0 -3
  465. package/dist/utils/smooth/index.d.ts.map +0 -1
  466. package/dist/utils/smooth/index.js +0 -6
  467. package/dist/utils/smooth/index.js.map +0 -1
  468. package/src/client/index.ts +0 -18
  469. package/src/context/providers/index.ts +0 -15
  470. package/src/context/react/index.ts +0 -50
  471. package/src/context/stores/index.ts +0 -1
  472. package/src/devtools/index.ts +0 -1
  473. package/src/legacy-runtime/cloud/index.ts +0 -2
  474. package/src/legacy-runtime/runtime/index.ts +0 -25
  475. package/src/legacy-runtime/runtime-cores/adapters/attachment/index.ts +0 -10
  476. package/src/legacy-runtime/runtime-cores/adapters/feedback/index.ts +0 -2
  477. package/src/legacy-runtime/runtime-cores/adapters/index.ts +0 -6
  478. package/src/legacy-runtime/runtime-cores/adapters/speech/index.ts +0 -9
  479. package/src/legacy-runtime/runtime-cores/adapters/suggestion/index.ts +0 -2
  480. package/src/legacy-runtime/runtime-cores/adapters/thread-history/index.ts +0 -9
  481. package/src/legacy-runtime/runtime-cores/assistant-transport/index.ts +0 -11
  482. package/src/legacy-runtime/runtime-cores/core/index.ts +0 -7
  483. package/src/legacy-runtime/runtime-cores/external-store/index.ts +0 -21
  484. package/src/legacy-runtime/runtime-cores/index.ts +0 -10
  485. package/src/legacy-runtime/runtime-cores/local/index.ts +0 -18
  486. package/src/legacy-runtime/runtime-cores/remote-thread-list/index.ts +0 -7
  487. package/src/model-context/frame/index.ts +0 -10
  488. package/src/model-context/index.ts +0 -45
  489. package/src/model-context/registry/index.ts +0 -6
  490. package/src/primitives/actionBar/index.ts +0 -9
  491. package/src/primitives/actionBarMore/index.ts +0 -5
  492. package/src/primitives/assistantModal/index.ts +0 -4
  493. package/src/primitives/attachment/index.ts +0 -4
  494. package/src/primitives/branchPicker/index.ts +0 -5
  495. package/src/primitives/composer/index.ts +0 -15
  496. package/src/primitives/error/index.ts +0 -2
  497. package/src/primitives/index.ts +0 -27
  498. package/src/primitives/message/index.ts +0 -12
  499. package/src/primitives/messagePart/index.ts +0 -3
  500. package/src/primitives/reasoning/index.ts +0 -1
  501. package/src/primitives/suggestion/index.ts +0 -3
  502. package/src/primitives/thread/index.ts +0 -15
  503. package/src/primitives/threadList/index.ts +0 -4
  504. package/src/primitives/threadListItem/index.ts +0 -6
  505. package/src/primitives/threadListItemMore/index.ts +0 -5
  506. package/src/types/index.ts +0 -56
  507. package/src/types/scopes/index.ts +0 -59
  508. package/src/utils/smooth/index.ts +0 -6
@@ -0,0 +1,32 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Primitive } from "@radix-ui/react-primitive";
4
+ import { forwardRef, useCallback, } from "react";
5
+ import { composeEventHandlers } from "@radix-ui/primitive";
6
+ import { useMentionContext } from "./ComposerMentionContext.js";
7
+ export const ComposerPrimitiveMentionCategories = forwardRef(({ children, ...props }, forwardedRef) => {
8
+ const { categories, activeCategoryId, isSearchMode } = useMentionContext();
9
+ if (activeCategoryId || isSearchMode)
10
+ return null;
11
+ return (_jsx(Primitive.div, { role: "group", ...props, ref: forwardedRef, children: children(categories) }));
12
+ });
13
+ ComposerPrimitiveMentionCategories.displayName =
14
+ "ComposerPrimitive.MentionCategories";
15
+ /**
16
+ * A button that selects a category and triggers drill-down navigation.
17
+ * Automatically receives `data-highlighted` when keyboard-navigated.
18
+ */
19
+ export const ComposerPrimitiveMentionCategoryItem = forwardRef(({ categoryId, onClick, ...props }, forwardedRef) => {
20
+ const { selectCategory, categories, highlightedIndex, activeCategoryId, isSearchMode, } = useMentionContext();
21
+ const handleClick = useCallback(() => {
22
+ selectCategory(categoryId);
23
+ }, [selectCategory, categoryId]);
24
+ // Derive highlighted state from context — no manual wiring needed
25
+ const isHighlighted = !activeCategoryId &&
26
+ !isSearchMode &&
27
+ categories.findIndex((c) => c.id === categoryId) === highlightedIndex;
28
+ return (_jsx(Primitive.button, { type: "button", role: "option", "aria-selected": isHighlighted, "data-highlighted": isHighlighted ? "" : undefined, ...props, ref: forwardedRef, onClick: composeEventHandlers(onClick, handleClick) }));
29
+ });
30
+ ComposerPrimitiveMentionCategoryItem.displayName =
31
+ "ComposerPrimitive.MentionCategoryItem";
32
+ //# sourceMappingURL=ComposerMentionCategories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposerMentionCategories.js","sourceRoot":"","sources":["../../../../src/primitives/composer/mention/ComposerMentionCategories.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAIL,UAAU,EACV,WAAW,GACZ,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,oCAAiC;AAuB7D,MAAM,CAAC,MAAM,kCAAkC,GAAG,UAAU,CAG1D,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE;IACzC,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAE3E,IAAI,gBAAgB,IAAI,YAAY;QAAE,OAAO,IAAI,CAAC;IAElD,OAAO,CACL,KAAC,SAAS,CAAC,GAAG,IAAC,IAAI,EAAC,OAAO,KAAK,KAAK,EAAE,GAAG,EAAE,YAAY,YACrD,QAAQ,CAAC,UAAU,CAAC,GACP,CACjB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,kCAAkC,CAAC,WAAW;IAC5C,qCAAqC,CAAC;AAaxC;;;GAGG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,UAAU,CAG5D,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE;IACpD,MAAM,EACJ,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,GACb,GAAG,iBAAiB,EAAE,CAAC;IAExB,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;IAEjC,kEAAkE;IAClE,MAAM,aAAa,GACjB,CAAC,gBAAgB;QACjB,CAAC,YAAY;QACb,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,KAAK,gBAAgB,CAAC;IAExE,OAAO,CACL,KAAC,SAAS,CAAC,MAAM,IACf,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,QAAQ,mBACE,aAAa,sBACV,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAC5C,KAAK,EACT,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,GACnD,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,oCAAoC,CAAC,WAAW;IAC9C,uCAAuC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type ReactNode, type FC } from "react";
2
+ import type { Unstable_MentionAdapter, Unstable_DirectiveFormatter } from "@assistant-ui/core";
3
+ import { type MentionResourceOutput, type SelectItemOverride } from "./MentionResource.js";
4
+ export declare const useMentionContext: () => MentionResourceOutput;
5
+ export declare const useMentionContextOptional: () => MentionResourceOutput | null;
6
+ type MentionInternalContextValue = {
7
+ setCursorPosition(pos: number): void;
8
+ registerSelectItemOverride(fn: SelectItemOverride): () => void;
9
+ };
10
+ export declare const useMentionInternalContext: () => MentionInternalContextValue | null;
11
+ export declare namespace ComposerPrimitiveMentionRoot {
12
+ type Props = {
13
+ children: ReactNode;
14
+ adapter?: Unstable_MentionAdapter | undefined;
15
+ /** Character(s) that trigger the mention popover. @default "@" */
16
+ trigger?: string | undefined;
17
+ /** Custom formatter for serializing/parsing mention directives. */
18
+ formatter?: Unstable_DirectiveFormatter | undefined;
19
+ };
20
+ }
21
+ export declare const ComposerPrimitiveMentionRoot: FC<ComposerPrimitiveMentionRoot.Props>;
22
+ export {};
23
+ //# sourceMappingURL=ComposerMentionContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposerMentionContext.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/mention/ComposerMentionContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,EAAE,EACR,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EACV,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACxB,6BAA0B;AAQ3B,eAAO,MAAM,iBAAiB,6BAO7B,CAAC;AAEF,eAAO,MAAM,yBAAyB,oCAErC,CAAC;AAMF,KAAK,2BAA2B,GAAG;IACjC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,0BAA0B,CAAC,EAAE,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAAC;CAChE,CAAC;AAKF,eAAO,MAAM,yBAAyB,0CAErC,CAAC;AAMF,yBAAiB,4BAA4B,CAAC;IAC5C,KAAY,KAAK,GAAG;QAClB,QAAQ,EAAE,SAAS,CAAC;QACpB,OAAO,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;QAC9C,kEAAkE;QAClE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,mEAAmE;QACnE,SAAS,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;KACrD,CAAC;CACH;AAED,eAAO,MAAM,4BAA4B,EAAE,EAAE,CAC3C,4BAA4B,CAAC,KAAK,CA8DnC,CAAC"}
@@ -0,0 +1,66 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { createContext, useContext, useState, useCallback, useMemo, useEffect, } from "react";
4
+ import { useResource } from "@assistant-ui/tap/react";
5
+ import { useAui, useAuiState } from "@assistant-ui/store";
6
+ import { unstable_defaultDirectiveFormatter } from "@assistant-ui/core";
7
+ import { MentionResource, } from "./MentionResource.js";
8
+ // =============================================================================
9
+ // Context — public (popover components read state + actions from here)
10
+ // =============================================================================
11
+ const MentionContext = createContext(null);
12
+ export const useMentionContext = () => {
13
+ const ctx = useContext(MentionContext);
14
+ if (!ctx)
15
+ throw new Error("useMentionContext must be used within ComposerPrimitive.MentionRoot");
16
+ return ctx;
17
+ };
18
+ export const useMentionContextOptional = () => {
19
+ return useContext(MentionContext);
20
+ };
21
+ const MentionInternalContext = createContext(null);
22
+ export const useMentionInternalContext = () => {
23
+ return useContext(MentionInternalContext);
24
+ };
25
+ export const ComposerPrimitiveMentionRoot = ({ children, adapter: adapterProp, trigger: triggerChar = "@", formatter: formatterProp, }) => {
26
+ const aui = useAui();
27
+ const text = useAuiState((s) => s.composer.text);
28
+ const formatter = formatterProp ?? unstable_defaultDirectiveFormatter;
29
+ // ---------------------------------------------------------------------------
30
+ // Runtime adapter (subscribe to state changes instead of useAuiState to avoid
31
+ // infinite loop — getModelContext() returns a new object on every call)
32
+ // ---------------------------------------------------------------------------
33
+ const getRuntimeAdapter = useCallback(() => {
34
+ try {
35
+ const runtime = aui.composer().__internal_getRuntime?.();
36
+ return runtime?._core?.getState()?.getMentionAdapter?.();
37
+ }
38
+ catch {
39
+ return undefined;
40
+ }
41
+ }, [aui]);
42
+ const [runtimeAdapter, setRuntimeAdapter] = useState(getRuntimeAdapter);
43
+ useEffect(() => {
44
+ return aui.subscribe(() => {
45
+ setRuntimeAdapter((prev) => {
46
+ const next = getRuntimeAdapter();
47
+ return prev === next ? prev : next;
48
+ });
49
+ });
50
+ }, [aui, getRuntimeAdapter]);
51
+ const adapter = adapterProp ?? runtimeAdapter;
52
+ // ---------------------------------------------------------------------------
53
+ // Mention resource (all state + logic managed via tap primitives)
54
+ // ---------------------------------------------------------------------------
55
+ const mention = useResource(MentionResource({ adapter, text, triggerChar, formatter, aui }));
56
+ // ---------------------------------------------------------------------------
57
+ // Internal context (stable — methods come from tapEffectEvent)
58
+ // ---------------------------------------------------------------------------
59
+ const internalContextValue = useMemo(() => ({
60
+ setCursorPosition: mention.setCursorPosition,
61
+ registerSelectItemOverride: mention.registerSelectItemOverride,
62
+ }), [mention.setCursorPosition, mention.registerSelectItemOverride]);
63
+ return (_jsx(MentionContext.Provider, { value: mention, children: _jsx(MentionInternalContext.Provider, { value: internalContextValue, children: children }) }));
64
+ };
65
+ ComposerPrimitiveMentionRoot.displayName = "ComposerPrimitive.MentionRoot";
66
+ //# sourceMappingURL=ComposerMentionContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposerMentionContext.js","sourceRoot":"","sources":["../../../../src/primitives/composer/mention/ComposerMentionContext.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { Primitive } from "@radix-ui/react-primitive";
2
+ import { type ComponentRef, type ComponentPropsWithoutRef, type ReactNode } from "react";
3
+ import type { Unstable_MentionItem } from "@assistant-ui/core";
4
+ export declare namespace ComposerPrimitiveMentionItems {
5
+ type Element = ComponentRef<typeof Primitive.div>;
6
+ type Props = Omit<ComponentPropsWithoutRef<typeof Primitive.div>, "children"> & {
7
+ /**
8
+ * Render function that receives the filtered items and returns
9
+ * the UI. A render-function pattern is used here (instead of a
10
+ * `components` prop) to give consumers full control over list layout,
11
+ * ordering, grouping, and empty states.
12
+ */
13
+ children: (items: readonly Unstable_MentionItem[]) => ReactNode;
14
+ };
15
+ }
16
+ export declare const ComposerPrimitiveMentionItems: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
17
+ asChild?: boolean;
18
+ }, "ref">, "children"> & {
19
+ /**
20
+ * Render function that receives the filtered items and returns
21
+ * the UI. A render-function pattern is used here (instead of a
22
+ * `components` prop) to give consumers full control over list layout,
23
+ * ordering, grouping, and empty states.
24
+ */
25
+ children: (items: readonly Unstable_MentionItem[]) => ReactNode;
26
+ } & import("react").RefAttributes<HTMLDivElement>>;
27
+ export declare namespace ComposerPrimitiveMentionItem {
28
+ type Element = ComponentRef<typeof Primitive.button>;
29
+ type Props = ComponentPropsWithoutRef<typeof Primitive.button> & {
30
+ item: Unstable_MentionItem;
31
+ /** Position in the items list. Used for keyboard highlight matching. Falls back to findIndex by id. */
32
+ index?: number | undefined;
33
+ };
34
+ }
35
+ /**
36
+ * A button that inserts the mention item into the composer.
37
+ * Automatically receives `data-highlighted` when keyboard-navigated.
38
+ */
39
+ export declare const ComposerPrimitiveMentionItem: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
40
+ asChild?: boolean;
41
+ }, "ref"> & {
42
+ item: Unstable_MentionItem;
43
+ /** Position in the items list. Used for keyboard highlight matching. Falls back to findIndex by id. */
44
+ index?: number | undefined;
45
+ } & import("react").RefAttributes<HTMLButtonElement>>;
46
+ //# sourceMappingURL=ComposerMentionItems.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposerMentionItems.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/mention/ComposerMentionItems.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAM/D,yBAAiB,6BAA6B,CAAC;IAC7C,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACzD,KAAY,KAAK,GAAG,IAAI,CACtB,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,EAC9C,UAAU,CACX,GAAG;QACF;;;;;WAKG;QACH,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,KAAK,SAAS,CAAC;KACjE,CAAC;CACH;AAED,eAAO,MAAM,6BAA6B;;;IAVtC;;;;;OAKG;cACO,CAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,KAAK,SAAS;kDAiBjE,CAAC;AAQH,yBAAiB,4BAA4B,CAAC;IAC5C,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5D,KAAY,KAAK,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG;QACtE,IAAI,EAAE,oBAAoB,CAAC;QAC3B,uGAAuG;QACvG,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC5B,CAAC;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,4BAA4B;;;UAV/B,oBAAoB;IAC1B,uGAAuG;YAC/F,MAAM,GAAG,SAAS;qDAyC5B,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Primitive } from "@radix-ui/react-primitive";
4
+ import { forwardRef, useCallback, } from "react";
5
+ import { composeEventHandlers } from "@radix-ui/primitive";
6
+ import { useMentionContext } from "./ComposerMentionContext.js";
7
+ export const ComposerPrimitiveMentionItems = forwardRef(({ children, ...props }, forwardedRef) => {
8
+ const { items, activeCategoryId, isSearchMode } = useMentionContext();
9
+ if (!activeCategoryId && !isSearchMode)
10
+ return null;
11
+ return (_jsx(Primitive.div, { role: "group", ...props, ref: forwardedRef, children: children(items) }));
12
+ });
13
+ ComposerPrimitiveMentionItems.displayName = "ComposerPrimitive.MentionItems";
14
+ /**
15
+ * A button that inserts the mention item into the composer.
16
+ * Automatically receives `data-highlighted` when keyboard-navigated.
17
+ */
18
+ export const ComposerPrimitiveMentionItem = forwardRef(({ item, index: indexProp, onClick, ...props }, forwardedRef) => {
19
+ const { selectItem, items, highlightedIndex, activeCategoryId, isSearchMode, } = useMentionContext();
20
+ const handleClick = useCallback(() => {
21
+ selectItem(item);
22
+ }, [selectItem, item]);
23
+ // Use explicit index prop if provided, fall back to findIndex
24
+ const itemIndex = indexProp ?? items.findIndex((i) => i.id === item.id);
25
+ const isHighlighted = (isSearchMode || activeCategoryId !== null) &&
26
+ itemIndex === highlightedIndex;
27
+ return (_jsx(Primitive.button, { type: "button", role: "option", "aria-selected": isHighlighted, "data-highlighted": isHighlighted ? "" : undefined, ...props, ref: forwardedRef, onClick: composeEventHandlers(onClick, handleClick) }));
28
+ });
29
+ ComposerPrimitiveMentionItem.displayName = "ComposerPrimitive.MentionItem";
30
+ //# sourceMappingURL=ComposerMentionItems.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposerMentionItems.js","sourceRoot":"","sources":["../../../../src/primitives/composer/mention/ComposerMentionItems.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAIL,UAAU,EACV,WAAW,GACZ,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,oCAAiC;AAuB7D,MAAM,CAAC,MAAM,6BAA6B,GAAG,UAAU,CAGrD,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE;IACzC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAEtE,IAAI,CAAC,gBAAgB,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAEpD,OAAO,CACL,KAAC,SAAS,CAAC,GAAG,IAAC,IAAI,EAAC,OAAO,KAAK,KAAK,EAAE,GAAG,EAAE,YAAY,YACrD,QAAQ,CAAC,KAAK,CAAC,GACF,CACjB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,6BAA6B,CAAC,WAAW,GAAG,gCAAgC,CAAC;AAe7E;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAU,CAGpD,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE;IAChE,MAAM,EACJ,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,GACb,GAAG,iBAAiB,EAAE,CAAC;IAExB,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IAEvB,8DAA8D;IAC9D,MAAM,SAAS,GAAG,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;IACxE,MAAM,aAAa,GACjB,CAAC,YAAY,IAAI,gBAAgB,KAAK,IAAI,CAAC;QAC3C,SAAS,KAAK,gBAAgB,CAAC;IAEjC,OAAO,CACL,KAAC,SAAS,CAAC,MAAM,IACf,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,QAAQ,mBACE,aAAa,sBACV,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAC5C,KAAK,EACT,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,GACnD,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,4BAA4B,CAAC,WAAW,GAAG,+BAA+B,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { Primitive } from "@radix-ui/react-primitive";
2
+ import { type ComponentRef, type ComponentPropsWithoutRef } from "react";
3
+ export declare namespace ComposerPrimitiveMentionPopover {
4
+ type Element = ComponentRef<typeof Primitive.div>;
5
+ type Props = ComponentPropsWithoutRef<typeof Primitive.div>;
6
+ }
7
+ /**
8
+ * Renders a container for the mention picker popover.
9
+ * Only renders when a `@` trigger is detected in the composer text.
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * <ComposerPrimitive.MentionRoot adapter={mentionAdapter}>
14
+ * <ComposerPrimitive.Input />
15
+ * <ComposerPrimitive.MentionPopover>
16
+ * <ComposerPrimitive.MentionCategories />
17
+ * </ComposerPrimitive.MentionPopover>
18
+ * </ComposerPrimitive.MentionRoot>
19
+ * ```
20
+ */
21
+ export declare const ComposerPrimitiveMentionPopover: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
22
+ asChild?: boolean;
23
+ }, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
24
+ //# sourceMappingURL=ComposerMentionPopover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposerMentionPopover.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/mention/ComposerMentionPopover.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAE9B,MAAM,OAAO,CAAC;AAOf,yBAAiB,+BAA+B,CAAC;IAC/C,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACzD,KAAY,KAAK,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;CACpE;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,+BAA+B;;0DAe1C,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Primitive } from "@radix-ui/react-primitive";
4
+ import { forwardRef, } from "react";
5
+ import { useMentionContext } from "./ComposerMentionContext.js";
6
+ /**
7
+ * Renders a container for the mention picker popover.
8
+ * Only renders when a `@` trigger is detected in the composer text.
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * <ComposerPrimitive.MentionRoot adapter={mentionAdapter}>
13
+ * <ComposerPrimitive.Input />
14
+ * <ComposerPrimitive.MentionPopover>
15
+ * <ComposerPrimitive.MentionCategories />
16
+ * </ComposerPrimitive.MentionPopover>
17
+ * </ComposerPrimitive.MentionRoot>
18
+ * ```
19
+ */
20
+ export const ComposerPrimitiveMentionPopover = forwardRef((props, forwardedRef) => {
21
+ const { open } = useMentionContext();
22
+ if (!open)
23
+ return null;
24
+ return (_jsx(Primitive.div, { role: "listbox", "data-state": "open", ...props, ref: forwardedRef }));
25
+ });
26
+ ComposerPrimitiveMentionPopover.displayName =
27
+ "ComposerPrimitive.MentionPopover";
28
+ //# sourceMappingURL=ComposerMentionPopover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComposerMentionPopover.js","sourceRoot":"","sources":["../../../../src/primitives/composer/mention/ComposerMentionPopover.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAGL,UAAU,GACX,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,iBAAiB,EAAE,oCAAiC;AAW7D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,UAAU,CAGvD,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE;IACxB,MAAM,EAAE,IAAI,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACrC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,OAAO,CACL,KAAC,SAAS,CAAC,GAAG,IACZ,IAAI,EAAC,SAAS,gBACH,MAAM,KACb,KAAK,EACT,GAAG,EAAE,YAAY,GACjB,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,+BAA+B,CAAC,WAAW;IACzC,kCAAkC,CAAC"}
@@ -0,0 +1,39 @@
1
+ import type { Unstable_MentionAdapter, Unstable_MentionCategory, Unstable_MentionItem, Unstable_DirectiveFormatter } from "@assistant-ui/core";
2
+ import type { AssistantClient } from "@assistant-ui/store";
3
+ export type MentionKeyEvent = {
4
+ readonly key: string;
5
+ readonly shiftKey: boolean;
6
+ preventDefault(): void;
7
+ };
8
+ export type SelectItemOverride = (item: Unstable_MentionItem) => boolean;
9
+ export type MentionResourceOutput = {
10
+ readonly open: boolean;
11
+ readonly query: string;
12
+ readonly activeCategoryId: string | null;
13
+ readonly categories: readonly Unstable_MentionCategory[];
14
+ readonly items: readonly Unstable_MentionItem[];
15
+ readonly highlightedIndex: number;
16
+ readonly isSearchMode: boolean;
17
+ readonly formatter: Unstable_DirectiveFormatter;
18
+ selectCategory(categoryId: string): void;
19
+ goBack(): void;
20
+ selectItem(item: Unstable_MentionItem): void;
21
+ close(): void;
22
+ handleKeyDown(e: MentionKeyEvent): boolean;
23
+ setCursorPosition(pos: number): void;
24
+ registerSelectItemOverride(fn: SelectItemOverride): () => void;
25
+ };
26
+ export declare const MentionResource: (props: {
27
+ adapter: Unstable_MentionAdapter | undefined;
28
+ text: string;
29
+ triggerChar: string;
30
+ formatter: Unstable_DirectiveFormatter;
31
+ aui: AssistantClient;
32
+ }) => import("@assistant-ui/tap").ResourceElement<MentionResourceOutput, {
33
+ adapter: Unstable_MentionAdapter | undefined;
34
+ text: string;
35
+ triggerChar: string;
36
+ formatter: Unstable_DirectiveFormatter;
37
+ aui: AssistantClient;
38
+ }>;
39
+ //# sourceMappingURL=MentionResource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MentionResource.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/mention/MentionResource.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,2BAA2B,EAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAO3D,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,cAAc,IAAI,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,oBAAoB,KAAK,OAAO,CAAC;AAEzE,MAAM,MAAM,qBAAqB,GAAG;IAElC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACzD,QAAQ,CAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAChD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,2BAA2B,CAAC;IAGhD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,MAAM,IAAI,IAAI,CAAC;IACf,UAAU,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC7C,KAAK,IAAI,IAAI,CAAC;IACd,aAAa,CAAC,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC;IAG3C,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,0BAA0B,CAAC,EAAE,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAAC;CAChE,CAAC;AAMF,eAAO,MAAM,eAAe;aAQf,uBAAuB,GAAG,SAAS;UACtC,MAAM;iBACC,MAAM;eACR,2BAA2B;SACjC,eAAe;;aAJX,uBAAuB,GAAG,SAAS;UACtC,MAAM;iBACC,MAAM;eACR,2BAA2B;SACjC,eAAe;EAmQvB,CAAC"}
@@ -0,0 +1,230 @@
1
+ import { resource, tapState, tapMemo, tapEffectEvent, tapEffect, tapRef, } from "@assistant-ui/tap";
2
+ import { detectMentionTrigger } from "./detectMentionTrigger.js";
3
+ // =============================================================================
4
+ // Resource
5
+ // =============================================================================
6
+ export const MentionResource = resource(({ adapter, text, triggerChar, formatter, aui, }) => {
7
+ // -------------------------------------------------------------------------
8
+ // Cursor tracking + trigger detection
9
+ // -------------------------------------------------------------------------
10
+ const [cursorPosition, setCursorPosition] = tapState(text.length);
11
+ const trigger = tapMemo(() => {
12
+ const pos = Math.min(cursorPosition, text.length);
13
+ return detectMentionTrigger(text, triggerChar, pos);
14
+ }, [cursorPosition, text, triggerChar]);
15
+ const open = trigger !== null && adapter !== undefined;
16
+ const query = trigger?.query ?? "";
17
+ // -------------------------------------------------------------------------
18
+ // Category navigation
19
+ // -------------------------------------------------------------------------
20
+ const [activeCategoryId, setActiveCategoryId] = tapState(null);
21
+ // Reset when popover closes
22
+ tapEffect(() => {
23
+ if (!open)
24
+ setActiveCategoryId(null);
25
+ }, [open]);
26
+ const categories = tapMemo(() => {
27
+ if (!open || !adapter)
28
+ return [];
29
+ return adapter.categories();
30
+ }, [open, adapter]);
31
+ const effectiveActiveCategoryId = open ? activeCategoryId : null;
32
+ // -------------------------------------------------------------------------
33
+ // Items + search
34
+ // -------------------------------------------------------------------------
35
+ const allItems = tapMemo(() => {
36
+ if (!effectiveActiveCategoryId || !adapter)
37
+ return [];
38
+ return adapter.categoryItems(effectiveActiveCategoryId);
39
+ }, [effectiveActiveCategoryId, adapter]);
40
+ const searchResults = tapMemo(() => {
41
+ if (!open || !adapter || !query || effectiveActiveCategoryId)
42
+ return null;
43
+ if (adapter.search)
44
+ return adapter.search(query);
45
+ const cats = adapter.categories();
46
+ const all = [];
47
+ const lower = query.toLowerCase();
48
+ for (const cat of cats) {
49
+ for (const item of adapter.categoryItems(cat.id)) {
50
+ if (item.id.toLowerCase().includes(lower) ||
51
+ item.label.toLowerCase().includes(lower) ||
52
+ item.description?.toLowerCase().includes(lower)) {
53
+ all.push(item);
54
+ }
55
+ }
56
+ }
57
+ return all;
58
+ }, [open, adapter, query, effectiveActiveCategoryId]);
59
+ const isSearchMode = searchResults !== null;
60
+ // -------------------------------------------------------------------------
61
+ // Filtering
62
+ // -------------------------------------------------------------------------
63
+ const filteredCategories = tapMemo(() => {
64
+ if (isSearchMode)
65
+ return [];
66
+ if (!query)
67
+ return categories;
68
+ const lower = query.toLowerCase();
69
+ return categories.filter((cat) => cat.label.toLowerCase().includes(lower));
70
+ }, [categories, query, isSearchMode]);
71
+ const filteredItems = tapMemo(() => {
72
+ if (isSearchMode)
73
+ return searchResults ?? [];
74
+ if (!query)
75
+ return allItems;
76
+ const lower = query.toLowerCase();
77
+ return allItems.filter((item) => item.id.toLowerCase().includes(lower) ||
78
+ item.label.toLowerCase().includes(lower) ||
79
+ item.description?.toLowerCase().includes(lower));
80
+ }, [allItems, query, isSearchMode, searchResults]);
81
+ // -------------------------------------------------------------------------
82
+ // Keyboard navigation
83
+ // -------------------------------------------------------------------------
84
+ const [highlightedIndex, setHighlightedIndex] = tapState(0);
85
+ const navigableList = tapMemo(() => {
86
+ if (isSearchMode)
87
+ return searchResults ?? [];
88
+ if (effectiveActiveCategoryId)
89
+ return filteredItems;
90
+ return filteredCategories;
91
+ }, [
92
+ isSearchMode,
93
+ searchResults,
94
+ effectiveActiveCategoryId,
95
+ filteredItems,
96
+ filteredCategories,
97
+ ]);
98
+ // Reset highlight when list changes
99
+ // biome-ignore lint/correctness/useExhaustiveDependencies: intentional reset on list change
100
+ tapEffect(() => {
101
+ setHighlightedIndex(0);
102
+ }, [navigableList]);
103
+ // -------------------------------------------------------------------------
104
+ // Lexical select-item override
105
+ // -------------------------------------------------------------------------
106
+ const selectItemOverrideRef = tapRef(null);
107
+ const registerSelectItemOverride = tapEffectEvent((fn) => {
108
+ selectItemOverrideRef.current = fn;
109
+ return () => {
110
+ if (selectItemOverrideRef.current === fn) {
111
+ selectItemOverrideRef.current = null;
112
+ }
113
+ };
114
+ });
115
+ // -------------------------------------------------------------------------
116
+ // Actions (stable via tapEffectEvent)
117
+ // -------------------------------------------------------------------------
118
+ const selectCategory = tapEffectEvent((categoryId) => {
119
+ setActiveCategoryId(categoryId);
120
+ setHighlightedIndex(0);
121
+ });
122
+ const goBack = tapEffectEvent(() => {
123
+ setActiveCategoryId(null);
124
+ setHighlightedIndex(0);
125
+ });
126
+ const selectItem = tapEffectEvent((item) => {
127
+ if (!trigger)
128
+ return;
129
+ // Try the Lexical override first
130
+ if (selectItemOverrideRef.current?.(item)) {
131
+ setActiveCategoryId(null);
132
+ setHighlightedIndex(0);
133
+ return;
134
+ }
135
+ // Default: text-based replacement (textarea path)
136
+ const currentText = aui.composer().getState().text;
137
+ const before = currentText.slice(0, trigger.offset);
138
+ const after = currentText.slice(trigger.offset + triggerChar.length + trigger.query.length);
139
+ const directive = formatter.serialize(item);
140
+ const newText = before + directive + (after.startsWith(" ") ? after : ` ${after}`);
141
+ aui.composer().setText(newText);
142
+ setActiveCategoryId(null);
143
+ setHighlightedIndex(0);
144
+ });
145
+ const close = tapEffectEvent(() => {
146
+ setActiveCategoryId(null);
147
+ setHighlightedIndex(0);
148
+ // Move cursor before the trigger so trigger detection deactivates
149
+ if (trigger) {
150
+ setCursorPosition(trigger.offset);
151
+ }
152
+ });
153
+ const handleKeyDown = tapEffectEvent((e) => {
154
+ if (!open)
155
+ return false;
156
+ switch (e.key) {
157
+ case "ArrowDown": {
158
+ e.preventDefault();
159
+ setHighlightedIndex((prev) => {
160
+ const len = navigableList.length;
161
+ if (len === 0)
162
+ return 0;
163
+ return prev < len - 1 ? prev + 1 : 0;
164
+ });
165
+ return true;
166
+ }
167
+ case "ArrowUp": {
168
+ e.preventDefault();
169
+ setHighlightedIndex((prev) => {
170
+ const len = navigableList.length;
171
+ if (len === 0)
172
+ return 0;
173
+ return prev > 0 ? prev - 1 : len - 1;
174
+ });
175
+ return true;
176
+ }
177
+ case "Enter": {
178
+ if (e.shiftKey)
179
+ return false;
180
+ e.preventDefault();
181
+ const item = navigableList[highlightedIndex];
182
+ if (!item)
183
+ return true;
184
+ if (isSearchMode || effectiveActiveCategoryId) {
185
+ selectItem(item);
186
+ }
187
+ else {
188
+ selectCategory(item.id);
189
+ }
190
+ return true;
191
+ }
192
+ case "Escape": {
193
+ e.preventDefault();
194
+ close();
195
+ return true;
196
+ }
197
+ case "Backspace": {
198
+ if (effectiveActiveCategoryId && query === "") {
199
+ e.preventDefault();
200
+ goBack();
201
+ return true;
202
+ }
203
+ return false;
204
+ }
205
+ default:
206
+ return false;
207
+ }
208
+ });
209
+ // -------------------------------------------------------------------------
210
+ // Output
211
+ // -------------------------------------------------------------------------
212
+ return {
213
+ open,
214
+ query,
215
+ activeCategoryId: effectiveActiveCategoryId,
216
+ categories: filteredCategories,
217
+ items: filteredItems,
218
+ highlightedIndex,
219
+ isSearchMode,
220
+ formatter,
221
+ selectCategory,
222
+ goBack,
223
+ selectItem,
224
+ close,
225
+ handleKeyDown,
226
+ setCursorPosition,
227
+ registerSelectItemOverride,
228
+ };
229
+ });
230
+ //# sourceMappingURL=MentionResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MentionResource.js","sourceRoot":"","sources":["../../../../src/primitives/composer/mention/MentionResource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=detectMentionTrigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectMentionTrigger.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/mention/detectMentionTrigger.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ const WHITESPACE_RE = /\s/;
2
+ /**
3
+ * Detect a mention trigger in text relative to the cursor position.
4
+ *
5
+ * @internal Exported for testing and for the MentionResource.
6
+ */
7
+ export function detectMentionTrigger(text, triggerChar, cursorPosition) {
8
+ // Only consider text up to the cursor
9
+ const textUpToCursor = text.slice(0, cursorPosition);
10
+ // Search backwards from cursor for the trigger character.
11
+ // Stop at any whitespace during scan — trigger must be contiguous with cursor.
12
+ for (let i = textUpToCursor.length - 1; i >= 0; i--) {
13
+ const char = textUpToCursor[i];
14
+ if (WHITESPACE_RE.test(char))
15
+ return null;
16
+ if (textUpToCursor.startsWith(triggerChar, i)) {
17
+ // Trigger must be preceded by whitespace or be at start of text
18
+ if (i > 0 && !WHITESPACE_RE.test(textUpToCursor[i - 1]))
19
+ continue;
20
+ const query = textUpToCursor.slice(i + triggerChar.length);
21
+ return { query, offset: i };
22
+ }
23
+ }
24
+ return null;
25
+ }
26
+ //# sourceMappingURL=detectMentionTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectMentionTrigger.js","sourceRoot":"","sources":["../../../../src/primitives/composer/mention/detectMentionTrigger.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,IAAI,CAAC;AAE3B;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAY,EACZ,WAAmB,EACnB,cAAsB;IAKtB,sCAAsC;IACtC,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IAErD,0DAA0D;IAC1D,+EAA+E;IAC/E,KAAK,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAE,CAAC;QAEhC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAE1C,IAAI,cAAc,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9C,gEAAgE;YAChE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;gBAAE,SAAS;YAEnE,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YAE3D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { ComposerPrimitiveMentionRoot, useMentionContext, useMentionContextOptional, useMentionInternalContext, } from "./ComposerMentionContext.js";
2
+ export { ComposerPrimitiveMentionPopover } from "./ComposerMentionPopover.js";
3
+ export { ComposerPrimitiveMentionCategories, ComposerPrimitiveMentionCategoryItem, } from "./ComposerMentionCategories.js";
4
+ export { ComposerPrimitiveMentionItems, ComposerPrimitiveMentionItem, } from "./ComposerMentionItems.js";
5
+ export { ComposerPrimitiveMentionBack } from "./ComposerMentionBack.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/primitives/composer/mention/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,GAC1B,oCAAiC;AAClC,OAAO,EAAE,+BAA+B,EAAE,oCAAiC;AAC3E,OAAO,EACL,kCAAkC,EAClC,oCAAoC,GACrC,uCAAoC;AACrC,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,GAC7B,kCAA+B;AAChC,OAAO,EAAE,4BAA4B,EAAE,iCAA8B"}