@arbidocs/react 0.5.111 → 0.5.113

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 (972) hide show
  1. package/dist/account/client.js +96 -0
  2. package/dist/account/client.js.map +7 -0
  3. package/dist/account/delete.js +70 -0
  4. package/dist/account/delete.js.map +7 -0
  5. package/dist/account/didit.js +34 -0
  6. package/dist/account/didit.js.map +7 -0
  7. package/dist/account/dismissed-tips.js +33 -0
  8. package/dist/account/dismissed-tips.js.map +7 -0
  9. package/dist/account/email.js +84 -0
  10. package/dist/account/email.js.map +7 -0
  11. package/dist/account/entitlements.js +47 -0
  12. package/dist/account/entitlements.js.map +7 -0
  13. package/dist/account/identity.js +270 -0
  14. package/dist/account/identity.js.map +7 -0
  15. package/dist/account/index.js +93 -0
  16. package/dist/account/index.js.map +7 -0
  17. package/dist/account/notifications.js +59 -0
  18. package/dist/account/notifications.js.map +7 -0
  19. package/dist/account/password.js +103 -0
  20. package/dist/account/password.js.map +7 -0
  21. package/dist/account/profile.js +116 -0
  22. package/dist/account/profile.js.map +7 -0
  23. package/dist/account/recovery.js +13 -0
  24. package/dist/account/recovery.js.map +7 -0
  25. package/dist/account/relevance.js +82 -0
  26. package/dist/account/relevance.js.map +7 -0
  27. package/dist/account/sessions.js +37 -0
  28. package/dist/account/sessions.js.map +7 -0
  29. package/dist/account/settings.js +39 -0
  30. package/dist/account/settings.js.map +7 -0
  31. package/dist/account/table-views.js +16 -0
  32. package/dist/account/table-views.js.map +7 -0
  33. package/dist/ai/AiAnswer.js +83 -0
  34. package/dist/ai/AiAnswer.js.map +7 -0
  35. package/dist/ai/AiMarkdown.js +40 -0
  36. package/dist/ai/AiMarkdown.js.map +7 -0
  37. package/dist/ai/ArtifactCanvas.js +193 -0
  38. package/dist/ai/ArtifactCanvas.js.map +7 -0
  39. package/dist/ai/CitationRenderer.js +413 -0
  40. package/dist/ai/CitationRenderer.js.map +7 -0
  41. package/dist/{chunk-WL2Y2T47.js → ai/MarkdownRenderer.js} +35 -101
  42. package/dist/ai/MarkdownRenderer.js.map +7 -0
  43. package/dist/ai/MessageArtifactCard.js +75 -0
  44. package/dist/ai/MessageArtifactCard.js.map +7 -0
  45. package/dist/ai/PassageCard.js +79 -0
  46. package/dist/ai/PassageCard.js.map +7 -0
  47. package/dist/ai/engine.js +110 -0
  48. package/dist/ai/engine.js.map +7 -0
  49. package/dist/ai/index.js +63 -0
  50. package/dist/ai/index.js.map +7 -0
  51. package/dist/ai/markdown-base-components.js +37 -0
  52. package/dist/ai/markdown-base-components.js.map +7 -0
  53. package/dist/ai/markdown-streaming-context.js +6 -0
  54. package/dist/ai/markdown-streaming-context.js.map +7 -0
  55. package/dist/{chunk-VSCU7K4V.js → ai/normalize-citations.js} +12 -19
  56. package/dist/ai/normalize-citations.js.map +7 -0
  57. package/dist/ai/redline.js +41 -0
  58. package/dist/ai/redline.js.map +7 -0
  59. package/dist/ai/split-markdown-blocks.js +40 -0
  60. package/dist/ai/split-markdown-blocks.js.map +7 -0
  61. package/dist/{chunk-UW2SGTI5.js → ai/stored-markdown.js} +41 -93
  62. package/dist/ai/stored-markdown.js.map +7 -0
  63. package/dist/annotations/AnnotationPageOverlay.js +807 -0
  64. package/dist/annotations/AnnotationPageOverlay.js.map +7 -0
  65. package/dist/annotations/AnnotationToolbar.js +398 -0
  66. package/dist/annotations/AnnotationToolbar.js.map +7 -0
  67. package/dist/annotations/FreezeDialog.js +170 -0
  68. package/dist/annotations/FreezeDialog.js.map +7 -0
  69. package/dist/annotations/ProductionDialog.js +354 -0
  70. package/dist/annotations/ProductionDialog.js.map +7 -0
  71. package/dist/annotations/controller.js +49 -0
  72. package/dist/annotations/controller.js.map +7 -0
  73. package/dist/annotations/freeze/browser.js +21 -0
  74. package/dist/annotations/freeze/browser.js.map +7 -0
  75. package/dist/annotations/freeze/bundle.js +201 -0
  76. package/dist/annotations/freeze/bundle.js.map +7 -0
  77. package/dist/annotations/freeze/coords.js +37 -0
  78. package/dist/annotations/freeze/coords.js.map +7 -0
  79. package/dist/annotations/freeze/freeze.js +261 -0
  80. package/dist/annotations/freeze/freeze.js.map +7 -0
  81. package/dist/annotations/freeze/hash.js +28 -0
  82. package/dist/annotations/freeze/hash.js.map +7 -0
  83. package/dist/annotations/freeze/index-page.js +78 -0
  84. package/dist/annotations/freeze/index-page.js.map +7 -0
  85. package/dist/annotations/freeze/index.js +28 -22
  86. package/dist/annotations/freeze/index.js.map +7 -1
  87. package/dist/annotations/freeze/raster.js +208 -0
  88. package/dist/annotations/freeze/raster.js.map +7 -0
  89. package/dist/annotations/freeze/stamp.js +117 -0
  90. package/dist/annotations/freeze/stamp.js.map +7 -0
  91. package/dist/annotations/freeze/types.js +14 -0
  92. package/dist/annotations/freeze/types.js.map +7 -0
  93. package/dist/annotations/freeze/vector.js +283 -0
  94. package/dist/annotations/freeze/vector.js.map +7 -0
  95. package/dist/annotations/geometry.js +81 -0
  96. package/dist/annotations/geometry.js.map +7 -0
  97. package/dist/annotations/index.js +125 -6
  98. package/dist/annotations/index.js.map +7 -1
  99. package/dist/annotations/merge.js +53 -0
  100. package/dist/annotations/merge.js.map +7 -0
  101. package/dist/{chunk-T3USOSVN.js → annotations/model.js} +23 -16
  102. package/dist/annotations/model.js.map +7 -0
  103. package/dist/annotations/overlay-geometry.js +41 -0
  104. package/dist/annotations/overlay-geometry.js.map +7 -0
  105. package/dist/annotations/redaction-log.js +33 -0
  106. package/dist/annotations/redaction-log.js.map +7 -0
  107. package/dist/annotations/selection-marks.js +122 -0
  108. package/dist/annotations/selection-marks.js.map +7 -0
  109. package/dist/annotations/state.js +140 -0
  110. package/dist/annotations/state.js.map +7 -0
  111. package/dist/annotations/store.js +49 -0
  112. package/dist/annotations/store.js.map +7 -0
  113. package/dist/annotations/useAnnotationLayer.js +306 -0
  114. package/dist/annotations/useAnnotationLayer.js.map +7 -0
  115. package/dist/annotations/useAnnotationShortcuts.js +31 -0
  116. package/dist/annotations/useAnnotationShortcuts.js.map +7 -0
  117. package/dist/annotations/useTextSelectionMarks.js +100 -0
  118. package/dist/annotations/useTextSelectionMarks.js.map +7 -0
  119. package/dist/artifacts/artifact-kind.js +19 -0
  120. package/dist/artifacts/artifact-kind.js.map +7 -0
  121. package/dist/artifacts/index.js +89 -571
  122. package/dist/artifacts/index.js.map +7 -1
  123. package/dist/{chunk-WUTL62MC.js → artifacts/normalize-markdown.js} +12 -14
  124. package/dist/artifacts/normalize-markdown.js.map +7 -0
  125. package/dist/artifacts/redline-core.js +12 -3
  126. package/dist/artifacts/redline-core.js.map +7 -1
  127. package/dist/{chunk-74N436VK.js → artifacts/redline-diff.js} +10 -9
  128. package/dist/artifacts/redline-diff.js.map +7 -0
  129. package/dist/artifacts/redline-engine.js +14 -0
  130. package/dist/artifacts/redline-engine.js.map +7 -0
  131. package/dist/artifacts/renderArtifactMarkdown.js +9 -0
  132. package/dist/artifacts/renderArtifactMarkdown.js.map +7 -0
  133. package/dist/artifacts/useArtifactEditSession.js +183 -0
  134. package/dist/artifacts/useArtifactEditSession.js.map +7 -0
  135. package/dist/artifacts/useArtifactSession.js +173 -0
  136. package/dist/artifacts/useArtifactSession.js.map +7 -0
  137. package/dist/artifacts/useArtifactSource.js +16 -0
  138. package/dist/artifacts/useArtifactSource.js.map +7 -0
  139. package/dist/artifacts/useArtifactText.js +78 -0
  140. package/dist/artifacts/useArtifactText.js.map +7 -0
  141. package/dist/artifacts/useRedline.js +65 -0
  142. package/dist/artifacts/useRedline.js.map +7 -0
  143. package/dist/artifacts/useStreamedArtifact.js +74 -0
  144. package/dist/artifacts/useStreamedArtifact.js.map +7 -0
  145. package/dist/artifacts/versions.js +68 -0
  146. package/dist/artifacts/versions.js.map +7 -0
  147. package/dist/billing.js +200 -0
  148. package/dist/billing.js.map +7 -0
  149. package/dist/boot-timeout.js +19 -0
  150. package/dist/boot-timeout.js.map +7 -0
  151. package/dist/calendar/accounts.js +213 -0
  152. package/dist/calendar/accounts.js.map +7 -0
  153. package/dist/calendar/hooks.js +409 -0
  154. package/dist/calendar/hooks.js.map +7 -0
  155. package/dist/calendar/index.js +31 -0
  156. package/dist/calendar/index.js.map +7 -0
  157. package/dist/calendar/keys.js +5 -0
  158. package/dist/calendar/keys.js.map +7 -0
  159. package/dist/calendar/offline/outbox.js +231 -0
  160. package/dist/calendar/offline/outbox.js.map +7 -0
  161. package/dist/calendar/offline/runtime.js +109 -0
  162. package/dist/calendar/offline/runtime.js.map +7 -0
  163. package/dist/calendar/offline/support.js +41 -0
  164. package/dist/calendar/offline/support.js.map +7 -0
  165. package/dist/calendar/support.js +34 -0
  166. package/dist/calendar/support.js.map +7 -0
  167. package/dist/calls/actions.js +226 -0
  168. package/dist/calls/actions.js.map +7 -0
  169. package/dist/calls/events.js +138 -0
  170. package/dist/calls/events.js.map +7 -0
  171. package/dist/calls/gate.js +19 -0
  172. package/dist/calls/gate.js.map +7 -0
  173. package/dist/calls/hooks.js +115 -0
  174. package/dist/calls/hooks.js.map +7 -0
  175. package/dist/calls/in-call-chat.js +132 -0
  176. package/dist/calls/in-call-chat.js.map +7 -0
  177. package/dist/calls/index.js +24 -0
  178. package/dist/calls/index.js.map +7 -0
  179. package/dist/calls/keys.js +17 -0
  180. package/dist/calls/keys.js.map +7 -0
  181. package/dist/calls/livekit/index.js +6 -958
  182. package/dist/calls/livekit/index.js.map +7 -1
  183. package/dist/calls/livekit/room.js +98 -0
  184. package/dist/calls/livekit/room.js.map +7 -0
  185. package/dist/calls/livekit/useCallRecorder.js +219 -0
  186. package/dist/calls/livekit/useCallRecorder.js.map +7 -0
  187. package/dist/calls/livekit/useCallTranscriber.js +309 -0
  188. package/dist/calls/livekit/useCallTranscriber.js.map +7 -0
  189. package/dist/calls/livekit/useHostMuteNotice.js +29 -0
  190. package/dist/calls/livekit/useHostMuteNotice.js.map +7 -0
  191. package/dist/calls/livekit/useInCallChat.js +161 -0
  192. package/dist/calls/livekit/useInCallChat.js.map +7 -0
  193. package/dist/calls/livekit/useWebinar.js +239 -0
  194. package/dist/calls/livekit/useWebinar.js.map +7 -0
  195. package/dist/calls/meeting-chat.js +149 -0
  196. package/dist/calls/meeting-chat.js.map +7 -0
  197. package/dist/calls/moderation.js +50 -0
  198. package/dist/calls/moderation.js.map +7 -0
  199. package/dist/calls/open-meeting-chat.js +29 -0
  200. package/dist/calls/open-meeting-chat.js.map +7 -0
  201. package/dist/calls/read-only.js +24 -0
  202. package/dist/calls/read-only.js.map +7 -0
  203. package/dist/calls/recording-media.js +218 -0
  204. package/dist/calls/recording-media.js.map +7 -0
  205. package/dist/calls/recording-playback.js +260 -0
  206. package/dist/calls/recording-playback.js.map +7 -0
  207. package/dist/calls/recording.js +268 -0
  208. package/dist/calls/recording.js.map +7 -0
  209. package/dist/calls/save-to-thread.js +80 -0
  210. package/dist/calls/save-to-thread.js.map +7 -0
  211. package/dist/calls/session.js +134 -0
  212. package/dist/calls/session.js.map +7 -0
  213. package/dist/calls/transcript-format.js +147 -0
  214. package/dist/calls/transcript-format.js.map +7 -0
  215. package/dist/calls/transcription.js +101 -0
  216. package/dist/calls/transcription.js.map +7 -0
  217. package/dist/calls/webinar.js +71 -0
  218. package/dist/calls/webinar.js.map +7 -0
  219. package/dist/charge-watch.js +71 -0
  220. package/dist/charge-watch.js.map +7 -0
  221. package/dist/chat/ChatBubble.js +146 -0
  222. package/dist/chat/ChatBubble.js.map +7 -0
  223. package/dist/chat/ConversationScope.js +30 -0
  224. package/dist/chat/ConversationScope.js.map +7 -0
  225. package/dist/chat/active-config.js +20 -0
  226. package/dist/chat/active-config.js.map +7 -0
  227. package/dist/chat/agent-chat-owner.js +25 -0
  228. package/dist/chat/agent-chat-owner.js.map +7 -0
  229. package/dist/chat/chat-artifacts.js +64 -0
  230. package/dist/chat/chat-artifacts.js.map +7 -0
  231. package/dist/chat/citations.js +32 -0
  232. package/dist/chat/citations.js.map +7 -0
  233. package/dist/chat/config-model.js +10 -0
  234. package/dist/chat/config-model.js.map +7 -0
  235. package/dist/chat/conversation-cache.js +676 -0
  236. package/dist/chat/conversation-cache.js.map +7 -0
  237. package/dist/chat/conversation-events.js +57 -0
  238. package/dist/chat/conversation-events.js.map +7 -0
  239. package/dist/chat/conversation-mentions.js +58 -0
  240. package/dist/chat/conversation-mentions.js.map +7 -0
  241. package/dist/chat/conversation-workspace.js +58 -0
  242. package/dist/chat/conversation-workspace.js.map +7 -0
  243. package/dist/chat/mentions.js +116 -0
  244. package/dist/chat/mentions.js.map +7 -0
  245. package/dist/chat/open-document.js +106 -0
  246. package/dist/chat/open-document.js.map +7 -0
  247. package/dist/chat/orphaned.js +44 -0
  248. package/dist/chat/orphaned.js.map +7 -0
  249. package/dist/chat/pendingFirstTurn.js +30 -0
  250. package/dist/chat/pendingFirstTurn.js.map +7 -0
  251. package/dist/chat/reply-target.js +12 -0
  252. package/dist/chat/reply-target.js.map +7 -0
  253. package/dist/chat/run-finished.js +28 -0
  254. package/dist/chat/run-finished.js.map +7 -0
  255. package/dist/chat/run-state.js +91 -0
  256. package/dist/chat/run-state.js.map +7 -0
  257. package/dist/chat/stream-handlers.js +419 -0
  258. package/dist/chat/stream-handlers.js.map +7 -0
  259. package/dist/chat/thread-binding.js +76 -0
  260. package/dist/chat/thread-binding.js.map +7 -0
  261. package/dist/chat/thread-document.js +53 -0
  262. package/dist/chat/thread-document.js.map +7 -0
  263. package/dist/chat/turn-control.js +79 -0
  264. package/dist/chat/turn-control.js.map +7 -0
  265. package/dist/chat/useAgentRunControl.js +36 -0
  266. package/dist/chat/useAgentRunControl.js.map +7 -0
  267. package/dist/chat/useAnswerAgentQuestion.js +19 -0
  268. package/dist/chat/useAnswerAgentQuestion.js.map +7 -0
  269. package/dist/chat/useAskAgain.js +32 -0
  270. package/dist/chat/useAskAgain.js.map +7 -0
  271. package/dist/chat/useAutoSendDraft.js +17 -0
  272. package/dist/chat/useAutoSendDraft.js.map +7 -0
  273. package/dist/chat/useBranchNavigation.js +97 -0
  274. package/dist/chat/useBranchNavigation.js.map +7 -0
  275. package/dist/chat/useConnectRunStream.js +169 -0
  276. package/dist/chat/useConnectRunStream.js.map +7 -0
  277. package/dist/chat/useConversation.js +431 -0
  278. package/dist/chat/useConversation.js.map +7 -0
  279. package/dist/chat/useConversationActions.js +662 -0
  280. package/dist/chat/useConversationActions.js.map +7 -0
  281. package/dist/chat/useConversationData.js +143 -0
  282. package/dist/chat/useConversationData.js.map +7 -0
  283. package/dist/chat/useConversationDocuments.js +41 -0
  284. package/dist/chat/useConversationDocuments.js.map +7 -0
  285. package/dist/chat/useConversationSettings.js +78 -0
  286. package/dist/chat/useConversationSettings.js.map +7 -0
  287. package/dist/chat/useConversationTurn.js +31 -0
  288. package/dist/chat/useConversationTurn.js.map +7 -0
  289. package/dist/chat/useConversationWorkspace.js +12 -0
  290. package/dist/chat/useConversationWorkspace.js.map +7 -0
  291. package/dist/chat/useDeleteMessage.js +15 -0
  292. package/dist/chat/useDeleteMessage.js.map +7 -0
  293. package/dist/chat/useDocumentAutoAdd.js +73 -0
  294. package/dist/chat/useDocumentAutoAdd.js.map +7 -0
  295. package/dist/chat/useMessageTimer.js +39 -0
  296. package/dist/chat/useMessageTimer.js.map +7 -0
  297. package/dist/chat/useThinkingContent.js +67 -0
  298. package/dist/chat/useThinkingContent.js.map +7 -0
  299. package/dist/chat/useThreadDocument.js +61 -0
  300. package/dist/chat/useThreadDocument.js.map +7 -0
  301. package/dist/chat/workflow-run-titles.js +50 -0
  302. package/dist/chat/workflow-run-titles.js.map +7 -0
  303. package/dist/config/config-hooks.js +209 -0
  304. package/dist/config/config-hooks.js.map +7 -0
  305. package/dist/connectivity.js +72 -0
  306. package/dist/connectivity.js.map +7 -0
  307. package/dist/connectors/hooks.js +263 -0
  308. package/dist/connectors/hooks.js.map +7 -0
  309. package/dist/connectors/index.js +28 -0
  310. package/dist/connectors/index.js.map +7 -0
  311. package/dist/contacts.js +100 -0
  312. package/dist/contacts.js.map +7 -0
  313. package/dist/conversation-list.js +65 -0
  314. package/dist/conversation-list.js.map +7 -0
  315. package/dist/databases.js +195 -0
  316. package/dist/databases.js.map +7 -0
  317. package/dist/datasets/aggregate.js +281 -0
  318. package/dist/datasets/aggregate.js.map +7 -0
  319. package/dist/datasets/index.js +122 -0
  320. package/dist/datasets/index.js.map +7 -0
  321. package/dist/datasets/members.js +27 -0
  322. package/dist/datasets/members.js.map +7 -0
  323. package/dist/datasets/panel.js +44 -0
  324. package/dist/datasets/panel.js.map +7 -0
  325. package/dist/datasets/registry.js +47 -0
  326. package/dist/datasets/registry.js.map +7 -0
  327. package/dist/datasets/rows-source.js +44 -0
  328. package/dist/datasets/rows-source.js.map +7 -0
  329. package/dist/datasets/sources/activity.js +83 -0
  330. package/dist/datasets/sources/activity.js.map +7 -0
  331. package/dist/datasets/sources/conversations.js +74 -0
  332. package/dist/datasets/sources/conversations.js.map +7 -0
  333. package/dist/datasets/sources/database.js +209 -0
  334. package/dist/datasets/sources/database.js.map +7 -0
  335. package/dist/datasets/sources/documents.js +93 -0
  336. package/dist/datasets/sources/documents.js.map +7 -0
  337. package/dist/datasets/sources/facts.js +56 -0
  338. package/dist/datasets/sources/facts.js.map +7 -0
  339. package/dist/datasets/sources/projects.js +117 -0
  340. package/dist/datasets/sources/projects.js.map +7 -0
  341. package/dist/datasets/sources/tags.js +67 -0
  342. package/dist/datasets/sources/tags.js.map +7 -0
  343. package/dist/datasets/sources/usage.js +268 -0
  344. package/dist/datasets/sources/usage.js.map +7 -0
  345. package/dist/datasets/sources/workflows.js +91 -0
  346. package/dist/datasets/sources/workflows.js.map +7 -0
  347. package/dist/datasets/sources/workspaces.js +67 -0
  348. package/dist/datasets/sources/workspaces.js.map +7 -0
  349. package/dist/datasets/store.js +194 -0
  350. package/dist/datasets/store.js.map +7 -0
  351. package/dist/datasets/types.js +14 -0
  352. package/dist/datasets/types.js.map +7 -0
  353. package/dist/directmessages/ConversationList.js +148 -0
  354. package/dist/directmessages/ConversationList.js.map +7 -0
  355. package/dist/directmessages/DateSeparator.js +8 -0
  356. package/dist/directmessages/DateSeparator.js.map +7 -0
  357. package/dist/directmessages/DmAvatar.js +29 -0
  358. package/dist/directmessages/DmAvatar.js.map +7 -0
  359. package/dist/directmessages/DmComposer.js +201 -0
  360. package/dist/directmessages/DmComposer.js.map +7 -0
  361. package/dist/directmessages/arrivals.js +29 -0
  362. package/dist/directmessages/arrivals.js.map +7 -0
  363. package/dist/directmessages/chat-cache.js +192 -0
  364. package/dist/directmessages/chat-cache.js.map +7 -0
  365. package/dist/directmessages/grouping.js +26 -0
  366. package/dist/directmessages/grouping.js.map +7 -0
  367. package/dist/directmessages/index.js +81 -0
  368. package/dist/directmessages/index.js.map +7 -0
  369. package/dist/directmessages/useChats.js +266 -0
  370. package/dist/directmessages/useChats.js.map +7 -0
  371. package/dist/directmessages/utils.js +23 -0
  372. package/dist/directmessages/utils.js.map +7 -0
  373. package/dist/document-tools/can-annotate.js +7 -0
  374. package/dist/document-tools/can-annotate.js.map +7 -0
  375. package/dist/document-tools/core.js +218 -12
  376. package/dist/document-tools/core.js.map +7 -1
  377. package/dist/document-tools/document-pdf.js +76 -0
  378. package/dist/document-tools/document-pdf.js.map +7 -0
  379. package/dist/document-tools/environment.js +136 -0
  380. package/dist/document-tools/environment.js.map +7 -0
  381. package/dist/document-tools/file-shares.js +112 -0
  382. package/dist/document-tools/file-shares.js.map +7 -0
  383. package/dist/document-tools/frozen-copy.js +27 -0
  384. package/dist/document-tools/frozen-copy.js.map +7 -0
  385. package/dist/document-tools/index.js +26 -148
  386. package/dist/document-tools/index.js.map +7 -1
  387. package/dist/document-tools/markup-download.js +51 -0
  388. package/dist/document-tools/markup-download.js.map +7 -0
  389. package/dist/document-tools/markup-store.js +138 -0
  390. package/dist/document-tools/markup-store.js.map +7 -0
  391. package/dist/document-tools/markup-transfer.js +88 -0
  392. package/dist/document-tools/markup-transfer.js.map +7 -0
  393. package/dist/document-tools/production.js +147 -0
  394. package/dist/document-tools/production.js.map +7 -0
  395. package/dist/document-tools/saved-signature.js +90 -0
  396. package/dist/document-tools/saved-signature.js.map +7 -0
  397. package/dist/document-tools/signature-requests.js +310 -0
  398. package/dist/document-tools/signature-requests.js.map +7 -0
  399. package/dist/document-tools/signing.js +127 -0
  400. package/dist/document-tools/signing.js.map +7 -0
  401. package/dist/document-tools/useDocumentBytes.js +38 -0
  402. package/dist/document-tools/useDocumentBytes.js.map +7 -0
  403. package/dist/document-tools/useDocumentMarkup.js +154 -0
  404. package/dist/document-tools/useDocumentMarkup.js.map +7 -0
  405. package/dist/document-tools/useIsOnline.js +13 -0
  406. package/dist/document-tools/useIsOnline.js.map +7 -0
  407. package/dist/document-tools/verification.js +60 -0
  408. package/dist/document-tools/verification.js.map +7 -0
  409. package/dist/documents/DocumentReview.js +220 -0
  410. package/dist/documents/DocumentReview.js.map +7 -0
  411. package/dist/documents/DraftTitleControls.js +41 -0
  412. package/dist/documents/DraftTitleControls.js.map +7 -0
  413. package/dist/documents/InlineMicButton.js +90 -0
  414. package/dist/documents/InlineMicButton.js.map +7 -0
  415. package/dist/documents/MicRecordingOverlay.js +29 -0
  416. package/dist/documents/MicRecordingOverlay.js.map +7 -0
  417. package/dist/documents/MicWaveformIndicator.js +68 -0
  418. package/dist/documents/MicWaveformIndicator.js.map +7 -0
  419. package/dist/documents/PhotoCapture.js +120 -0
  420. package/dist/documents/PhotoCapture.js.map +7 -0
  421. package/dist/documents/VideoCapture.js +129 -0
  422. package/dist/documents/VideoCapture.js.map +7 -0
  423. package/dist/documents/VoiceNoteRecorder.js +166 -0
  424. package/dist/documents/VoiceNoteRecorder.js.map +7 -0
  425. package/dist/documents/audio-segmenter.js +63 -0
  426. package/dist/documents/audio-segmenter.js.map +7 -0
  427. package/dist/documents/capture-frame.js +21 -0
  428. package/dist/documents/capture-frame.js.map +7 -0
  429. package/dist/documents/chunked-recorder.js +190 -0
  430. package/dist/documents/chunked-recorder.js.map +7 -0
  431. package/dist/documents/document-download.js +53 -0
  432. package/dist/documents/document-download.js.map +7 -0
  433. package/dist/documents/document-fields.js +109 -0
  434. package/dist/documents/document-fields.js.map +7 -0
  435. package/dist/documents/documents-cache.js +110 -0
  436. package/dist/documents/documents-cache.js.map +7 -0
  437. package/dist/documents/documents-data.js +128 -0
  438. package/dist/documents/documents-data.js.map +7 -0
  439. package/dist/documents/documents-loader.js +113 -0
  440. package/dist/documents/documents-loader.js.map +7 -0
  441. package/dist/documents/documents-writes.js +448 -0
  442. package/dist/documents/documents-writes.js.map +7 -0
  443. package/dist/documents/format-elapsed.js +10 -0
  444. package/dist/documents/format-elapsed.js.map +7 -0
  445. package/dist/documents/has-video-track.js +26 -0
  446. package/dist/documents/has-video-track.js.map +7 -0
  447. package/dist/documents/index.js +266 -0
  448. package/dist/documents/index.js.map +7 -0
  449. package/dist/documents/media-error.js +18 -0
  450. package/dist/documents/media-error.js.map +7 -0
  451. package/dist/documents/offline-documents.js +160 -0
  452. package/dist/documents/offline-documents.js.map +7 -0
  453. package/dist/documents/pending-sync.js +210 -0
  454. package/dist/documents/pending-sync.js.map +7 -0
  455. package/dist/documents/processing-live.js +122 -0
  456. package/dist/documents/processing-live.js.map +7 -0
  457. package/dist/documents/processing-order.js +59 -0
  458. package/dist/documents/processing-order.js.map +7 -0
  459. package/dist/documents/processing-settle.js +21 -0
  460. package/dist/documents/processing-settle.js.map +7 -0
  461. package/dist/documents/related-documents.js +133 -0
  462. package/dist/documents/related-documents.js.map +7 -0
  463. package/dist/documents/support.js +29 -0
  464. package/dist/documents/support.js.map +7 -0
  465. package/dist/documents/upload-files.js +169 -0
  466. package/dist/documents/upload-files.js.map +7 -0
  467. package/dist/documents/useAudioRecorder.js +315 -0
  468. package/dist/documents/useAudioRecorder.js.map +7 -0
  469. package/dist/documents/useCameraStream.js +35 -0
  470. package/dist/documents/useCameraStream.js.map +7 -0
  471. package/dist/documents/useDocumentThumbnails.js +71 -0
  472. package/dist/documents/useDocumentThumbnails.js.map +7 -0
  473. package/dist/documents/useDownloadDocuments.js +90 -0
  474. package/dist/documents/useDownloadDocuments.js.map +7 -0
  475. package/dist/documents/usePassageQuotes.js +37 -0
  476. package/dist/documents/usePassageQuotes.js.map +7 -0
  477. package/dist/documents/useUploadFiles.js +165 -0
  478. package/dist/documents/useUploadFiles.js.map +7 -0
  479. package/dist/documents/useUploadFromUrls.js +63 -0
  480. package/dist/documents/useUploadFromUrls.js.map +7 -0
  481. package/dist/documents/useVideoRecorder.js +62 -0
  482. package/dist/documents/useVideoRecorder.js.map +7 -0
  483. package/dist/entities/AgentMarkers.js +61 -0
  484. package/dist/entities/AgentMarkers.js.map +7 -0
  485. package/dist/entities/DocumentEntity.js +125 -0
  486. package/dist/entities/DocumentEntity.js.map +7 -0
  487. package/dist/entities/EntityPill.js +250 -0
  488. package/dist/entities/EntityPill.js.map +7 -0
  489. package/dist/entities/ProjectEntity.js +61 -0
  490. package/dist/entities/ProjectEntity.js.map +7 -0
  491. package/dist/entities/ShieldIcon.js +49 -0
  492. package/dist/entities/ShieldIcon.js.map +7 -0
  493. package/dist/entities/TagEntity.js +79 -0
  494. package/dist/entities/TagEntity.js.map +7 -0
  495. package/dist/entities/ThreadVisibilityIcon.js +15 -0
  496. package/dist/entities/ThreadVisibilityIcon.js.map +7 -0
  497. package/dist/entities/UserEntity.js +211 -0
  498. package/dist/entities/UserEntity.js.map +7 -0
  499. package/dist/entities/VerifiedBadge.js +19 -0
  500. package/dist/entities/VerifiedBadge.js.map +7 -0
  501. package/dist/entities/agent-avatar-colors.js +26 -0
  502. package/dist/entities/agent-avatar-colors.js.map +7 -0
  503. package/dist/entities/colors.js +64 -0
  504. package/dist/entities/colors.js.map +7 -0
  505. package/dist/entities/file-type.js +151 -0
  506. package/dist/entities/file-type.js.map +7 -0
  507. package/dist/entities/index.js +100 -0
  508. package/dist/entities/index.js.map +7 -0
  509. package/dist/entities/media-type.js +61 -0
  510. package/dist/entities/media-type.js.map +7 -0
  511. package/dist/entities/registry.js +385 -0
  512. package/dist/entities/registry.js.map +7 -0
  513. package/dist/entities/status.js +43 -0
  514. package/dist/entities/status.js.map +7 -0
  515. package/dist/entities/tag-kinds.js +23 -0
  516. package/dist/entities/tag-kinds.js.map +7 -0
  517. package/dist/entities/tag-types.js +44 -0
  518. package/dist/entities/tag-types.js.map +7 -0
  519. package/dist/entities/vocabulary.js +12 -0
  520. package/dist/entities/vocabulary.js.map +7 -0
  521. package/dist/entity-extraction.js +25 -0
  522. package/dist/entity-extraction.js.map +7 -0
  523. package/dist/facts-search.js +57 -0
  524. package/dist/facts-search.js.map +7 -0
  525. package/dist/facts.js +69 -0
  526. package/dist/facts.js.map +7 -0
  527. package/dist/hooks.js +320 -0
  528. package/dist/hooks.js.map +7 -0
  529. package/dist/host/ArbiHost.js +24 -0
  530. package/dist/host/ArbiHost.js.map +7 -0
  531. package/dist/host/assistant-copy.js +54 -0
  532. package/dist/host/assistant-copy.js.map +7 -0
  533. package/dist/host/config.js +9 -0
  534. package/dist/host/config.js.map +7 -0
  535. package/dist/host/context.js +10 -0
  536. package/dist/host/context.js.map +7 -0
  537. package/dist/host/features.js +144 -0
  538. package/dist/host/features.js.map +7 -0
  539. package/dist/host/index.js +12 -0
  540. package/dist/host/index.js.map +7 -0
  541. package/dist/{chunk-DPYBZDJB.js → host/merge.js} +7 -7
  542. package/dist/host/merge.js.map +7 -0
  543. package/dist/house-template.js +40 -0
  544. package/dist/house-template.js.map +7 -0
  545. package/dist/icons/AppleIcon.js +25 -0
  546. package/dist/icons/AppleIcon.js.map +7 -0
  547. package/dist/icons/ArbiBotHeadIcon.js +46 -0
  548. package/dist/icons/ArbiBotHeadIcon.js.map +7 -0
  549. package/dist/icons/ArbiIcon.js +24 -0
  550. package/dist/icons/ArbiIcon.js.map +7 -0
  551. package/dist/icons/AudIcon.js +56 -0
  552. package/dist/icons/AudIcon.js.map +7 -0
  553. package/dist/icons/ClaudeIcon.js +28 -0
  554. package/dist/icons/ClaudeIcon.js.map +7 -0
  555. package/dist/icons/DocIcon.js +56 -0
  556. package/dist/icons/DocIcon.js.map +7 -0
  557. package/dist/icons/EmlIcon.js +57 -0
  558. package/dist/icons/EmlIcon.js.map +7 -0
  559. package/dist/icons/FireworksIcon.js +47 -0
  560. package/dist/icons/FireworksIcon.js.map +7 -0
  561. package/dist/icons/GeminiIcon.js +37 -0
  562. package/dist/icons/GeminiIcon.js.map +7 -0
  563. package/dist/icons/GitHubIcon.js +32 -0
  564. package/dist/icons/GitHubIcon.js.map +7 -0
  565. package/dist/icons/GoogleIcon.js +53 -0
  566. package/dist/icons/GoogleIcon.js.map +7 -0
  567. package/dist/icons/HtmlIcon.js +56 -0
  568. package/dist/icons/HtmlIcon.js.map +7 -0
  569. package/dist/icons/ImgIcon.js +56 -0
  570. package/dist/icons/ImgIcon.js.map +7 -0
  571. package/dist/icons/LinkedInIcon.js +25 -0
  572. package/dist/icons/LinkedInIcon.js.map +7 -0
  573. package/dist/icons/OpenAIIcon.js +28 -0
  574. package/dist/icons/OpenAIIcon.js.map +7 -0
  575. package/dist/icons/PdfIcon.js +56 -0
  576. package/dist/icons/PdfIcon.js.map +7 -0
  577. package/dist/icons/ProviderIcon.js +42 -0
  578. package/dist/icons/ProviderIcon.js.map +7 -0
  579. package/dist/icons/TxtIcon.js +56 -0
  580. package/dist/icons/TxtIcon.js.map +7 -0
  581. package/dist/icons/VidIcon.js +56 -0
  582. package/dist/icons/VidIcon.js.map +7 -0
  583. package/dist/icons/XlsIcon.js +56 -0
  584. package/dist/icons/XlsIcon.js.map +7 -0
  585. package/dist/icons/arbi-mark.js +5 -0
  586. package/dist/icons/arbi-mark.js.map +7 -0
  587. package/dist/icons/colors.js +31 -0
  588. package/dist/icons/colors.js.map +7 -0
  589. package/dist/icons/file-type.js +105 -0
  590. package/dist/icons/file-type.js.map +7 -0
  591. package/dist/icons/index.js +55 -0
  592. package/dist/icons/index.js.map +7 -0
  593. package/dist/imagecrop/ImageCropModal.js +56 -0
  594. package/dist/imagecrop/ImageCropModal.js.map +7 -0
  595. package/dist/imagecrop/ImageCropper.js +100 -0
  596. package/dist/imagecrop/ImageCropper.js.map +7 -0
  597. package/dist/imagecrop/cropImage.js +43 -0
  598. package/dist/imagecrop/cropImage.js.map +7 -0
  599. package/dist/imagecrop/index.js +13 -0
  600. package/dist/imagecrop/index.js.map +7 -0
  601. package/dist/index.js +702 -17116
  602. package/dist/index.js.map +7 -1
  603. package/dist/{chunk-SSXFVWCT.js → lazy-chunk.js} +8 -8
  604. package/dist/lazy-chunk.js.map +7 -0
  605. package/dist/lib/collision-padding.js +13 -0
  606. package/dist/lib/collision-padding.js.map +7 -0
  607. package/dist/lib/format-friendly-date.js +55 -0
  608. package/dist/lib/format-friendly-date.js.map +7 -0
  609. package/dist/lib/format-relative-time.js +52 -0
  610. package/dist/lib/format-relative-time.js.map +7 -0
  611. package/dist/lib/markdown-to-text.js +35 -0
  612. package/dist/lib/markdown-to-text.js.map +7 -0
  613. package/dist/lib/toast-interaction.js +9 -0
  614. package/dist/lib/toast-interaction.js.map +7 -0
  615. package/dist/lib/utils.js +9 -0
  616. package/dist/lib/utils.js.map +7 -0
  617. package/dist/mail/client.js +103 -0
  618. package/dist/mail/client.js.map +7 -0
  619. package/dist/mail/document-attachment.js +38 -0
  620. package/dist/mail/document-attachment.js.map +7 -0
  621. package/dist/mail/filing.js +132 -0
  622. package/dist/mail/filing.js.map +7 -0
  623. package/dist/mail/hooks.js +393 -0
  624. package/dist/mail/hooks.js.map +7 -0
  625. package/dist/mail/index.js +120 -0
  626. package/dist/mail/index.js.map +7 -0
  627. package/dist/mail/offline/changes.js +258 -0
  628. package/dist/mail/offline/changes.js.map +7 -0
  629. package/dist/mail/offline/confirm-sign-out.js +37 -0
  630. package/dist/mail/offline/confirm-sign-out.js.map +7 -0
  631. package/dist/mail/offline/crypto.js +26 -0
  632. package/dist/mail/offline/crypto.js.map +7 -0
  633. package/dist/mail/offline/drafts.js +69 -0
  634. package/dist/mail/offline/drafts.js.map +7 -0
  635. package/dist/mail/offline/hooks.js +104 -0
  636. package/dist/mail/offline/hooks.js.map +7 -0
  637. package/dist/mail/offline/index.js +48 -0
  638. package/dist/mail/offline/index.js.map +7 -0
  639. package/dist/mail/offline/live.js +233 -0
  640. package/dist/mail/offline/live.js.map +7 -0
  641. package/dist/mail/offline/mailbox.js +191 -0
  642. package/dist/mail/offline/mailbox.js.map +7 -0
  643. package/dist/mail/offline/outbox.js +167 -0
  644. package/dist/mail/offline/outbox.js.map +7 -0
  645. package/dist/mail/offline/reads.js +159 -0
  646. package/dist/mail/offline/reads.js.map +7 -0
  647. package/dist/mail/offline/runtime.js +100 -0
  648. package/dist/mail/offline/runtime.js.map +7 -0
  649. package/dist/mail/offline/settings.js +84 -0
  650. package/dist/mail/offline/settings.js.map +7 -0
  651. package/dist/mail/offline/store.js +29 -0
  652. package/dist/mail/offline/store.js.map +7 -0
  653. package/dist/mail/offline/sync.js +251 -0
  654. package/dist/mail/offline/sync.js.map +7 -0
  655. package/dist/mail/offline/wipe.js +19 -0
  656. package/dist/mail/offline/wipe.js.map +7 -0
  657. package/dist/mail/thread-keys.js +53 -0
  658. package/dist/mail/thread-keys.js.map +7 -0
  659. package/dist/mail/threads.js +71 -0
  660. package/dist/mail/threads.js.map +7 -0
  661. package/dist/mail/useMailClient.js +42 -0
  662. package/dist/mail/useMailClient.js.map +7 -0
  663. package/dist/model-connections.js +58 -0
  664. package/dist/model-connections.js.map +7 -0
  665. package/dist/notifications/ActivityFeed.js +70 -0
  666. package/dist/notifications/ActivityFeed.js.map +7 -0
  667. package/dist/notifications/NotificationBell.js +200 -0
  668. package/dist/notifications/NotificationBell.js.map +7 -0
  669. package/dist/notifications/Toaster.js +24 -0
  670. package/dist/notifications/Toaster.js.map +7 -0
  671. package/dist/notifications/activity-types.js +65 -0
  672. package/dist/notifications/activity-types.js.map +7 -0
  673. package/dist/notifications/bell.js +24 -0
  674. package/dist/notifications/bell.js.map +7 -0
  675. package/dist/notifications/calendar-notifications.js +79 -0
  676. package/dist/notifications/calendar-notifications.js.map +7 -0
  677. package/dist/notifications/index.js +108 -0
  678. package/dist/notifications/index.js.map +7 -0
  679. package/dist/notifications/live.js +28 -0
  680. package/dist/notifications/live.js.map +7 -0
  681. package/dist/notifications/notification-types.js +127 -0
  682. package/dist/notifications/notification-types.js.map +7 -0
  683. package/dist/{chunk-BF5KW5ZI.js → notifications/notify-store.js} +24 -74
  684. package/dist/notifications/notify-store.js.map +7 -0
  685. package/dist/notifications/server-notifications.js +452 -0
  686. package/dist/notifications/server-notifications.js.map +7 -0
  687. package/dist/notifications/useNotifications.js +34 -0
  688. package/dist/notifications/useNotifications.js.map +7 -0
  689. package/dist/offline-store/network.js +11 -0
  690. package/dist/offline-store/network.js.map +7 -0
  691. package/dist/offline-store/store.js +136 -0
  692. package/dist/offline-store/store.js.map +7 -0
  693. package/dist/offline-store/wipe.js +8 -0
  694. package/dist/offline-store/wipe.js.map +7 -0
  695. package/dist/offline.js +58 -0
  696. package/dist/offline.js.map +7 -0
  697. package/dist/people.js +122 -0
  698. package/dist/people.js.map +7 -0
  699. package/dist/projects.js +30 -0
  700. package/dist/projects.js.map +7 -0
  701. package/dist/query-client.js +63 -0
  702. package/dist/query-client.js.map +7 -0
  703. package/dist/{chunk-ZM6N7YZH.js → query-keys.js} +18 -31
  704. package/dist/query-keys.js.map +7 -0
  705. package/dist/query-persist.js +66 -0
  706. package/dist/query-persist.js.map +7 -0
  707. package/dist/queued-writes.js +59 -0
  708. package/dist/queued-writes.js.map +7 -0
  709. package/dist/remote-control.js +67 -0
  710. package/dist/remote-control.js.map +7 -0
  711. package/dist/search/index.js +23 -0
  712. package/dist/search/index.js.map +7 -0
  713. package/dist/search/session.js +58 -0
  714. package/dist/search/session.js.map +7 -0
  715. package/dist/search/useSemanticSearch.js +82 -0
  716. package/dist/search/useSemanticSearch.js.map +7 -0
  717. package/dist/session/chat.js +512 -0
  718. package/dist/session/chat.js.map +7 -0
  719. package/dist/session/documents.js +196 -0
  720. package/dist/session/documents.js.map +7 -0
  721. package/dist/session/drafts.js +103 -0
  722. package/dist/session/drafts.js.map +7 -0
  723. package/dist/session/index.js +123 -0
  724. package/dist/session/index.js.map +7 -0
  725. package/dist/session/layout.js +339 -0
  726. package/dist/session/layout.js.map +7 -0
  727. package/dist/session/persist.js +106 -0
  728. package/dist/session/persist.js.map +7 -0
  729. package/dist/session/session-hooks.js +53 -0
  730. package/dist/session/session-hooks.js.map +7 -0
  731. package/dist/session/signed-in.js +36 -0
  732. package/dist/session/signed-in.js.map +7 -0
  733. package/dist/session/store.js +166 -0
  734. package/dist/session/store.js.map +7 -0
  735. package/dist/session/thread-tabs.js +121 -0
  736. package/dist/session/thread-tabs.js.map +7 -0
  737. package/dist/session/ui-state-storage.js +76 -0
  738. package/dist/session/ui-state-storage.js.map +7 -0
  739. package/dist/session/workspace.js +77 -0
  740. package/dist/session/workspace.js.map +7 -0
  741. package/dist/shell/index.js +43 -10
  742. package/dist/shell/index.js.map +7 -1
  743. package/dist/skill-pack.js +111 -0
  744. package/dist/skill-pack.js.map +7 -0
  745. package/dist/storage.js +186 -0
  746. package/dist/storage.js.map +7 -0
  747. package/dist/support/index.js +35 -0
  748. package/dist/support/index.js.map +7 -0
  749. package/dist/tags.js +204 -0
  750. package/dist/tags.js.map +7 -0
  751. package/dist/ui/DebouncedInput.js +109 -0
  752. package/dist/ui/DebouncedInput.js.map +7 -0
  753. package/dist/ui/DictateContext.js +8 -0
  754. package/dist/ui/DictateContext.js.map +7 -0
  755. package/dist/ui/IconToggle.js +79 -0
  756. package/dist/ui/IconToggle.js.map +7 -0
  757. package/dist/ui/VerifiedToggle.js +38 -0
  758. package/dist/ui/VerifiedToggle.js.map +7 -0
  759. package/dist/ui/VisibilityToggle.js +103 -0
  760. package/dist/ui/VisibilityToggle.js.map +7 -0
  761. package/dist/ui/avatar.js +40 -0
  762. package/dist/ui/avatar.js.map +7 -0
  763. package/dist/ui/badge.js +28 -0
  764. package/dist/ui/badge.js.map +7 -0
  765. package/dist/ui/button.js +48 -0
  766. package/dist/ui/button.js.map +7 -0
  767. package/dist/ui/card.js +90 -0
  768. package/dist/ui/card.js.map +7 -0
  769. package/dist/ui/checkbox.js +22 -0
  770. package/dist/ui/checkbox.js.map +7 -0
  771. package/dist/ui/collapsible.js +10 -0
  772. package/dist/ui/collapsible.js.map +7 -0
  773. package/dist/ui/command.js +103 -0
  774. package/dist/ui/command.js.map +7 -0
  775. package/dist/{chunk-YNNAJJ5Z.js → ui/dialog.js} +30 -68
  776. package/dist/ui/dialog.js.map +7 -0
  777. package/dist/{chunk-47CCGUWR.js → ui/dropdown-menu.js} +40 -45
  778. package/dist/ui/dropdown-menu.js.map +7 -0
  779. package/dist/ui/hover-card.js +36 -0
  780. package/dist/ui/hover-card.js.map +7 -0
  781. package/dist/ui/index.js +290 -10
  782. package/dist/ui/index.js.map +7 -1
  783. package/dist/ui/input.js +65 -0
  784. package/dist/ui/input.js.map +7 -0
  785. package/dist/ui/label.js +16 -0
  786. package/dist/ui/label.js.map +7 -0
  787. package/dist/ui/mark-menu.js +300 -0
  788. package/dist/ui/mark-menu.js.map +7 -0
  789. package/dist/ui/popover.js +40 -0
  790. package/dist/ui/popover.js.map +7 -0
  791. package/dist/ui/portal-container.js +17 -0
  792. package/dist/ui/portal-container.js.map +7 -0
  793. package/dist/ui/progress.js +24 -0
  794. package/dist/ui/progress.js.map +7 -0
  795. package/dist/ui/radio-group.js +29 -0
  796. package/dist/ui/radio-group.js.map +7 -0
  797. package/dist/ui/scroll-area.js +39 -0
  798. package/dist/ui/scroll-area.js.map +7 -0
  799. package/dist/ui/select.js +130 -0
  800. package/dist/ui/select.js.map +7 -0
  801. package/dist/ui/separator.js +23 -0
  802. package/dist/ui/separator.js.map +7 -0
  803. package/dist/ui/slider.js +23 -0
  804. package/dist/ui/slider.js.map +7 -0
  805. package/dist/ui/switch.js +28 -0
  806. package/dist/ui/switch.js.map +7 -0
  807. package/dist/ui/table.js +75 -0
  808. package/dist/ui/table.js.map +7 -0
  809. package/dist/ui/tabs.js +48 -0
  810. package/dist/ui/tabs.js.map +7 -0
  811. package/dist/ui/textarea.js +63 -0
  812. package/dist/ui/textarea.js.map +7 -0
  813. package/dist/ui/toggle-group.js +43 -0
  814. package/dist/ui/toggle-group.js.map +7 -0
  815. package/dist/ui/toggle.js +40 -0
  816. package/dist/ui/toggle.js.map +7 -0
  817. package/dist/ui/tooltip.js +215 -0
  818. package/dist/ui/tooltip.js.map +7 -0
  819. package/dist/usage-metered.js +8 -0
  820. package/dist/usage-metered.js.map +7 -0
  821. package/dist/useArbi.js +16 -0
  822. package/dist/useArbi.js.map +7 -0
  823. package/dist/useInstallSkillPack.js +81 -0
  824. package/dist/useInstallSkillPack.js.map +7 -0
  825. package/dist/usermenu/UserMenu.js +188 -0
  826. package/dist/usermenu/UserMenu.js.map +7 -0
  827. package/dist/usermenu/index.js +5 -0
  828. package/dist/usermenu/index.js.map +7 -0
  829. package/dist/users/index.js +15 -0
  830. package/dist/users/index.js.map +7 -0
  831. package/dist/users/user-display.js +60 -0
  832. package/dist/users/user-display.js.map +7 -0
  833. package/dist/viewers/AudioViewer.js +23 -0
  834. package/dist/viewers/AudioViewer.js.map +7 -0
  835. package/dist/viewers/DocxViewer.js +81 -0
  836. package/dist/viewers/DocxViewer.js.map +7 -0
  837. package/dist/viewers/ImageViewer.js +31 -0
  838. package/dist/viewers/ImageViewer.js.map +7 -0
  839. package/dist/viewers/PdfViewer.js +19 -3
  840. package/dist/viewers/PdfViewer.js.map +7 -1
  841. package/dist/{PdfViewerImpl-TEBYF2QI.js → viewers/PdfViewerImpl.js} +25 -19
  842. package/dist/viewers/PdfViewerImpl.js.map +7 -0
  843. package/dist/viewers/VideoViewer.js +31 -0
  844. package/dist/viewers/VideoViewer.js.map +7 -0
  845. package/dist/viewers/XlsxViewer.js +102 -0
  846. package/dist/viewers/XlsxViewer.js.map +7 -0
  847. package/dist/viewers/index.js +61 -271
  848. package/dist/viewers/index.js.map +7 -1
  849. package/dist/viewers/page-scroll.js +59 -0
  850. package/dist/viewers/page-scroll.js.map +7 -0
  851. package/dist/viewers/pdf-viewer-constants.js +9 -0
  852. package/dist/viewers/pdf-viewer-constants.js.map +7 -0
  853. package/dist/{chunk-PTOP7OHG.js → viewers/pdfjs-polyfills.js} +5 -6
  854. package/dist/viewers/pdfjs-polyfills.js.map +7 -0
  855. package/dist/viewers/selection-runs.js +38 -0
  856. package/dist/viewers/selection-runs.js.map +7 -0
  857. package/dist/viewers/usePageIntersectionObserver.js +68 -0
  858. package/dist/viewers/usePageIntersectionObserver.js.map +7 -0
  859. package/dist/viewers/useProcessedChunks.js +58 -0
  860. package/dist/viewers/useProcessedChunks.js.map +7 -0
  861. package/dist/viewers/viewer-zoom.js +163 -0
  862. package/dist/viewers/viewer-zoom.js.map +7 -0
  863. package/dist/websocket/ArbiWebSocketProvider.js +207 -0
  864. package/dist/websocket/ArbiWebSocketProvider.js.map +7 -0
  865. package/dist/websocket/context.js +14 -0
  866. package/dist/websocket/context.js.map +7 -0
  867. package/dist/websocket/hooks.js +30 -0
  868. package/dist/websocket/hooks.js.map +7 -0
  869. package/dist/websocket/index.js +22 -0
  870. package/dist/websocket/index.js.map +7 -0
  871. package/dist/websocket/live-updates.js +38 -0
  872. package/dist/websocket/live-updates.js.map +7 -0
  873. package/dist/websocket/reconnect.js +13 -0
  874. package/dist/websocket/reconnect.js.map +7 -0
  875. package/dist/websocket/store.js +58 -0
  876. package/dist/websocket/store.js.map +7 -0
  877. package/dist/workforce.js +607 -0
  878. package/dist/workforce.js.map +7 -0
  879. package/dist/workspaces/access-request.js +35 -0
  880. package/dist/workspaces/access-request.js.map +7 -0
  881. package/dist/workspaces/archive.js +59 -0
  882. package/dist/workspaces/archive.js.map +7 -0
  883. package/dist/workspaces/current.js +20 -0
  884. package/dist/workspaces/current.js.map +7 -0
  885. package/dist/workspaces/delete-workspaces.js +15 -0
  886. package/dist/workspaces/delete-workspaces.js.map +7 -0
  887. package/dist/workspaces/export-archive.js +40 -0
  888. package/dist/workspaces/export-archive.js.map +7 -0
  889. package/dist/workspaces/index.js +99 -0
  890. package/dist/workspaces/index.js.map +7 -0
  891. package/dist/workspaces/settings.js +45 -0
  892. package/dist/workspaces/settings.js.map +7 -0
  893. package/dist/workspaces/shell-workspaces.js +49 -0
  894. package/dist/workspaces/shell-workspaces.js.map +7 -0
  895. package/dist/workspaces/switch.js +234 -0
  896. package/dist/workspaces/switch.js.map +7 -0
  897. package/dist/workspaces/transfer.js +170 -0
  898. package/dist/workspaces/transfer.js.map +7 -0
  899. package/dist/workspaces/useShellWorkspaces.js +86 -0
  900. package/dist/workspaces/useShellWorkspaces.js.map +7 -0
  901. package/dist/workspaces/workspace-users.js +65 -0
  902. package/dist/workspaces/workspace-users.js.map +7 -0
  903. package/package.json +4 -4
  904. package/dist/PdfViewerImpl-TEBYF2QI.js.map +0 -1
  905. package/dist/PdfViewerImpl.d-B28hLEuj.d.cts +0 -62
  906. package/dist/ProductionDialog.d-CpzslFn0.d.cts +0 -51
  907. package/dist/annotations/freeze/index.d.cts +0 -205
  908. package/dist/annotations/index.d.cts +0 -360
  909. package/dist/artifacts/index.d.cts +0 -476
  910. package/dist/artifacts/redline-core.d.cts +0 -39
  911. package/dist/bundle-YNOX7VIL.js +0 -5
  912. package/dist/bundle-YNOX7VIL.js.map +0 -1
  913. package/dist/bundle.d-BnCSbHy2.d.cts +0 -85
  914. package/dist/calls/livekit/index.d.cts +0 -280
  915. package/dist/chunk-47CCGUWR.js.map +0 -1
  916. package/dist/chunk-4FL3X3LA.js +0 -2057
  917. package/dist/chunk-4FL3X3LA.js.map +0 -1
  918. package/dist/chunk-6QNBSXCE.js +0 -271
  919. package/dist/chunk-6QNBSXCE.js.map +0 -1
  920. package/dist/chunk-74N436VK.js.map +0 -1
  921. package/dist/chunk-APZZQZ6P.js +0 -147
  922. package/dist/chunk-APZZQZ6P.js.map +0 -1
  923. package/dist/chunk-BF5KW5ZI.js.map +0 -1
  924. package/dist/chunk-DPYBZDJB.js.map +0 -1
  925. package/dist/chunk-DZKRL5H3.js +0 -2766
  926. package/dist/chunk-DZKRL5H3.js.map +0 -1
  927. package/dist/chunk-HDCRPPBW.js +0 -75
  928. package/dist/chunk-HDCRPPBW.js.map +0 -1
  929. package/dist/chunk-L2IPPTVC.js +0 -20
  930. package/dist/chunk-L2IPPTVC.js.map +0 -1
  931. package/dist/chunk-LSU4UPS5.js +0 -1011
  932. package/dist/chunk-LSU4UPS5.js.map +0 -1
  933. package/dist/chunk-NIKPG4PW.js +0 -1128
  934. package/dist/chunk-NIKPG4PW.js.map +0 -1
  935. package/dist/chunk-NNAJLY6B.js +0 -4974
  936. package/dist/chunk-NNAJLY6B.js.map +0 -1
  937. package/dist/chunk-OYPKKHXY.js +0 -559
  938. package/dist/chunk-OYPKKHXY.js.map +0 -1
  939. package/dist/chunk-PTOP7OHG.js.map +0 -1
  940. package/dist/chunk-QMY2JKBI.js +0 -246
  941. package/dist/chunk-QMY2JKBI.js.map +0 -1
  942. package/dist/chunk-SN5YV6FF.js +0 -11
  943. package/dist/chunk-SN5YV6FF.js.map +0 -1
  944. package/dist/chunk-SSXFVWCT.js.map +0 -1
  945. package/dist/chunk-T3USOSVN.js.map +0 -1
  946. package/dist/chunk-T4CLW3DN.js +0 -2560
  947. package/dist/chunk-T4CLW3DN.js.map +0 -1
  948. package/dist/chunk-UW2SGTI5.js.map +0 -1
  949. package/dist/chunk-VSCU7K4V.js.map +0 -1
  950. package/dist/chunk-WL2Y2T47.js.map +0 -1
  951. package/dist/chunk-WUTL62MC.js.map +0 -1
  952. package/dist/chunk-XWPLOFDN.js +0 -644
  953. package/dist/chunk-XWPLOFDN.js.map +0 -1
  954. package/dist/chunk-Y3MTRA7D.js +0 -97
  955. package/dist/chunk-Y3MTRA7D.js.map +0 -1
  956. package/dist/chunk-YNNAJJ5Z.js.map +0 -1
  957. package/dist/chunk-ZM6N7YZH.js.map +0 -1
  958. package/dist/document-tools/core.d.cts +0 -883
  959. package/dist/document-tools/index.d.cts +0 -90
  960. package/dist/index.d-LArLnpI8.d.cts +0 -2036
  961. package/dist/index.d-oR5FKZpJ.d.cts +0 -579
  962. package/dist/index.d.cts +0 -15923
  963. package/dist/lazy-chunk.d-B6YDLMKI.d.cts +0 -31
  964. package/dist/model.d-CNtRWKVK.d.cts +0 -110
  965. package/dist/query-keys.d-B1Am9tIF.d.cts +0 -337
  966. package/dist/shell/index.d.cts +0 -6
  967. package/dist/store.d-GADDvC7w.d.cts +0 -35
  968. package/dist/stored-markdown.d-Bp18vrbr.d.cts +0 -125
  969. package/dist/ui/index.d.cts +0 -26
  970. package/dist/useAudioRecorder.d-B9rlMI_E.d.cts +0 -778
  971. package/dist/viewers/PdfViewer.d.cts +0 -9
  972. package/dist/viewers/index.d.cts +0 -262
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/notifications/calendar-notifications.ts"],
4
+ "sourcesContent": ["/**\n * What a native calendar notification (`calendar_*`) says and where it leads. Its content is\n * plaintext routing metadata only (`{uid, organizer_id|attendee_id, starts_at, partstat?,\n * event_id?, calendar_id?, recurrence_id?, has_conference, call_id?, time_zone?}`), so a title\n * never needs the encrypted event. Times show in the user's calendar time zone (the reminder's\n * `time_zone`, else the one the host passes), never the browser's.\n */\nimport type { components } from '@arbidocs/client'\nimport type { ServerNotificationDescription } from './server-notifications'\n\ntype NotificationResponse = components['schemas']['NotificationResponse']\n\nexport interface CalendarNotificationMeta {\n eventId?: string\n recurrenceId?: string | null\n startsAt?: Date\n partstat?: string\n hasConference: boolean\n timeZone?: string\n}\n\nfunction validZone(zone: unknown): string | undefined {\n if (typeof zone !== 'string' || !zone) return undefined\n try {\n new Intl.DateTimeFormat('en', { timeZone: zone })\n return zone\n } catch {\n return undefined\n }\n}\n\n/** The routing metadata of a calendar notification. */\nexport function calendarNotificationMeta(\n content: string | null | undefined\n): CalendarNotificationMeta {\n try {\n const m = JSON.parse(content || '{}') as Record<string, unknown>\n const startsAt = typeof m.starts_at === 'string' ? new Date(m.starts_at) : undefined\n return {\n eventId:\n typeof m.event_id === 'string' && /^evt-[A-Za-z0-9]{8}$/.test(m.event_id)\n ? m.event_id\n : undefined,\n recurrenceId: typeof m.recurrence_id === 'string' ? m.recurrence_id : null,\n startsAt: startsAt && Number.isFinite(startsAt.getTime()) ? startsAt : undefined,\n partstat: typeof m.partstat === 'string' ? m.partstat : undefined,\n hasConference: m.has_conference === true,\n timeZone: validZone(m.time_zone),\n }\n } catch {\n return { hasConference: false }\n }\n}\n\nfunction when(date: Date | undefined, timeZone: string | undefined): string {\n if (!date) return ''\n return ` (${date.toLocaleString([], { weekday: 'short', day: 'numeric', month: 'short', hour: '2-digit', minute: '2-digit', timeZone })})`\n}\n\nconst PARTSTAT_WORDS: Record<string, string> = {\n accepted: 'accepted',\n declined: 'declined',\n tentative: 'tentatively accepted',\n delegated: 'delegated',\n}\n\nexport interface DescribeCalendarNotificationOptions {\n /** The sender's display name. */\n senderName: string\n /** The user's calendar time zone (their calendar settings), when the notification has none. */\n timeZone?: string | null\n}\n\n/**\n * A calendar notification \u2192 its sentence and the calendar (on its event) it opens, or null for\n * another type. A reminder of an online meeting joins it (`join`).\n */\nexport function describeCalendarNotification(\n n: NotificationResponse,\n { senderName, timeZone }: DescribeCalendarNotificationOptions\n): ServerNotificationDescription | null {\n const type: string = n.type\n if (!type.startsWith('calendar_')) return null\n const meta = calendarNotificationMeta(n.content)\n const zone = meta.timeZone ?? validZone(timeZone)\n const at = when(meta.startsAt, zone)\n const target = {\n kind: 'calendar' as const,\n ...(meta.eventId && { eventId: meta.eventId, recurrenceId: meta.recurrenceId }),\n }\n switch (type) {\n case 'calendar_invite':\n return { title: `${senderName} invited you to an event${at}`, variant: 'info', target }\n case 'calendar_update':\n return { title: `${senderName} updated an event${at}`, variant: 'info', target }\n case 'calendar_cancel':\n return { title: `${senderName} cancelled an event${at}`, variant: 'warning', target }\n case 'calendar_reply': {\n const word = PARTSTAT_WORDS[meta.partstat ?? ''] ?? 'replied to'\n return {\n title: `${senderName} ${word} your invitation${at}`,\n variant: meta.partstat === 'declined' ? 'warning' : 'info',\n target,\n }\n }\n case 'calendar_share':\n return { title: `${senderName} shared a calendar with you`, variant: 'info', target }\n case 'calendar_counter':\n return { title: `${senderName} proposed a new time${at}`, variant: 'info', target }\n case 'calendar_reminder': {\n const title = meta.startsAt\n ? `An event starts at ${meta.startsAt.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', timeZone: zone })}`\n : 'An event starts soon'\n if (meta.hasConference && meta.eventId)\n return { title, variant: 'info', actionLabel: 'Join', target: { ...target, join: true } }\n return { title, variant: 'info', actionLabel: 'Open', target }\n }\n default:\n return { title: 'Calendar update', variant: 'info', target }\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,108 @@
1
+ import {
2
+ getNotificationTypeMeta,
3
+ isWorkspaceNotificationType,
4
+ getWorkspaceActionText,
5
+ getWorkspaceSentPhrase
6
+ } from "./notification-types.js";
7
+ import {
8
+ parseActivityContent,
9
+ describeActivity
10
+ } from "./activity-types.js";
11
+ import { ActivityFeed } from "./ActivityFeed.js";
12
+ import {
13
+ useNotify,
14
+ notify,
15
+ toast,
16
+ seedNotifications,
17
+ configureNotify,
18
+ persistNotifyHistory,
19
+ selectUnread,
20
+ MAX_SESSION_NOTIFICATIONS,
21
+ DEFAULT_NOTIFY_TONE
22
+ } from "./notify-store.js";
23
+ import {
24
+ NotificationBell
25
+ } from "./NotificationBell.js";
26
+ import { Toaster } from "./Toaster.js";
27
+ import { applyNotificationRow, isNotificationRow } from "./live.js";
28
+ import {
29
+ useNotifications,
30
+ useDeleteNotifications,
31
+ useMarkNotificationsRead
32
+ } from "./useNotifications.js";
33
+ import {
34
+ describeServerNotification,
35
+ notificationUserName,
36
+ inputRequestTitle,
37
+ documentActivityMeta,
38
+ documentActivityPhrase,
39
+ docxMentionMeta,
40
+ signatureRequestMeta,
41
+ signatureNotificationPhrase,
42
+ isSignatureNotificationType,
43
+ SIGNATURE_NOTIFICATION_TYPES,
44
+ callNotificationMeta,
45
+ isDeploymentUserNotification,
46
+ deploymentUserMeta,
47
+ safePortalUrl,
48
+ ALLOWED_PORTAL_ORIGINS,
49
+ BOX_SEAT_REFUSED,
50
+ BOX_SEAT_REFUSED_TITLE,
51
+ BOX_SEAT_REFUSED_ACTION,
52
+ documentDisplayName,
53
+ WORK_NOTIFICATION_LABELS
54
+ } from "./server-notifications.js";
55
+ import {
56
+ calendarNotificationMeta,
57
+ describeCalendarNotification
58
+ } from "./calendar-notifications.js";
59
+ import { serverNotificationBellEntry } from "./bell.js";
60
+ export {
61
+ ALLOWED_PORTAL_ORIGINS,
62
+ ActivityFeed,
63
+ BOX_SEAT_REFUSED,
64
+ BOX_SEAT_REFUSED_ACTION,
65
+ BOX_SEAT_REFUSED_TITLE,
66
+ DEFAULT_NOTIFY_TONE,
67
+ MAX_SESSION_NOTIFICATIONS,
68
+ NotificationBell,
69
+ SIGNATURE_NOTIFICATION_TYPES,
70
+ Toaster,
71
+ WORK_NOTIFICATION_LABELS,
72
+ applyNotificationRow,
73
+ calendarNotificationMeta,
74
+ callNotificationMeta,
75
+ configureNotify,
76
+ deploymentUserMeta,
77
+ describeActivity,
78
+ describeCalendarNotification,
79
+ describeServerNotification,
80
+ documentActivityMeta,
81
+ documentActivityPhrase,
82
+ documentDisplayName,
83
+ docxMentionMeta,
84
+ getNotificationTypeMeta,
85
+ getWorkspaceActionText,
86
+ getWorkspaceSentPhrase,
87
+ inputRequestTitle,
88
+ isDeploymentUserNotification,
89
+ isNotificationRow,
90
+ isSignatureNotificationType,
91
+ isWorkspaceNotificationType,
92
+ notificationUserName,
93
+ notify,
94
+ parseActivityContent,
95
+ persistNotifyHistory,
96
+ safePortalUrl,
97
+ seedNotifications,
98
+ selectUnread,
99
+ serverNotificationBellEntry,
100
+ signatureNotificationPhrase,
101
+ signatureRequestMeta,
102
+ toast,
103
+ useDeleteNotifications,
104
+ useMarkNotificationsRead,
105
+ useNotifications,
106
+ useNotify
107
+ };
108
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/notifications/index.ts"],
4
+ "sourcesContent": ["/**\n * Shared notification & activity presentation layer \u2014 the single source of truth\n * for how notification types and activity events are rendered (glyphs, labels,\n * phrasing) across every app. The monolith's notification centre and clarum's\n * activity feed both consume from here instead of maintaining their own copies.\n */\n\nexport {\n type NotificationTypeMeta,\n getNotificationTypeMeta,\n isWorkspaceNotificationType,\n getWorkspaceActionText,\n getWorkspaceSentPhrase,\n} from './notification-types'\n\nexport {\n type ActivityContent,\n type ActivityDescription,\n parseActivityContent,\n describeActivity,\n} from './activity-types'\n\nexport { ActivityFeed, type ActivityFeedProps } from './ActivityFeed'\n\n// Client-side toast + notification-centre store and its render surfaces\n// (mutation-outcome notifications, distinct from the backend-event render layer).\nexport {\n useNotify,\n notify,\n toast,\n seedNotifications,\n configureNotify,\n persistNotifyHistory,\n selectUnread,\n MAX_SESSION_NOTIFICATIONS,\n DEFAULT_NOTIFY_TONE,\n type NotifyVariant,\n type NotifyOptions,\n type AppNotification,\n type NotifyConfig,\n} from './notify-store'\nexport {\n NotificationBell,\n type NotificationBellProps,\n type NotificationBellTriggerState,\n} from './NotificationBell'\nexport { Toaster, type ToasterProps } from './Toaster'\nexport { applyNotificationRow, isNotificationRow } from './live'\nexport {\n useNotifications,\n useDeleteNotifications,\n useMarkNotificationsRead,\n} from './useNotifications'\n\n// What a server-persisted notification says and where it leads.\nexport {\n describeServerNotification,\n notificationUserName,\n inputRequestTitle,\n documentActivityMeta,\n documentActivityPhrase,\n docxMentionMeta,\n signatureRequestMeta,\n signatureNotificationPhrase,\n isSignatureNotificationType,\n SIGNATURE_NOTIFICATION_TYPES,\n callNotificationMeta,\n isDeploymentUserNotification,\n deploymentUserMeta,\n safePortalUrl,\n ALLOWED_PORTAL_ORIGINS,\n BOX_SEAT_REFUSED,\n BOX_SEAT_REFUSED_TITLE,\n BOX_SEAT_REFUSED_ACTION,\n documentDisplayName,\n WORK_NOTIFICATION_LABELS,\n type NotificationTarget,\n type ServerNotificationDescription,\n type DescribeServerNotificationOptions,\n type SignatureNotificationType,\n} from './server-notifications'\nexport {\n calendarNotificationMeta,\n describeCalendarNotification,\n type CalendarNotificationMeta,\n type DescribeCalendarNotificationOptions,\n} from './calendar-notifications'\nexport { serverNotificationBellEntry, type ServerNotificationBellOptions } from './bell'\n"],
5
+ "mappings": "AAOA;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EAGE;AAAA,EACA;AAAA,OACK;AAEP,SAAS,oBAA4C;AAIrD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AACP;AAAA,EACE;AAAA,OAGK;AACP,SAAS,eAAkC;AAC3C,SAAS,sBAAsB,yBAAyB;AACxD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AACP,SAAS,mCAAuE;",
6
+ "names": []
7
+ }
@@ -0,0 +1,28 @@
1
+ import { arbiQueryKeys, mailQueryKeys } from "../query-keys.js";
2
+ function isNotificationRow(message) {
3
+ const m = message;
4
+ return typeof m?.external_id === "string" && typeof m.recipient === "object" && m.recipient !== null;
5
+ }
6
+ const MAIL_TYPES = /* @__PURE__ */ new Set(["native_mail_received", "mail_draft_ready"]);
7
+ function applyNotificationRow(queryClient, row, me) {
8
+ if (MAIL_TYPES.has(row.type) && row.recipient.external_id === me)
9
+ void queryClient.invalidateQueries({ queryKey: mailQueryKeys.all() });
10
+ queryClient.setQueriesData(
11
+ { queryKey: arbiQueryKeys.allNotifications() },
12
+ (old) => {
13
+ if (!Array.isArray(old)) return old;
14
+ const index = old.findIndex((n) => n.external_id === row.external_id);
15
+ if (index < 0) return [row, ...old];
16
+ if (!row.read || old[index].read) return old;
17
+ const next = [...old];
18
+ next[index] = { ...old[index], read: true };
19
+ return next;
20
+ }
21
+ );
22
+ void queryClient.invalidateQueries({ queryKey: arbiQueryKeys.allNotifications() });
23
+ }
24
+ export {
25
+ applyNotificationRow,
26
+ isNotificationRow
27
+ };
28
+ //# sourceMappingURL=live.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/notifications/live.ts"],
4
+ "sourcesContent": ["/**\n * A persisted notification arriving live (the server pushes each row as it is created, and again\n * when it is read on another device), applied to the cache: every loaded list takes it at once\n * (a new row in front, a read receipt flips `read`), then is read again from the server; new mail\n * or an agent's draft also refreshes the Mail views. `ArbiWebSocketProvider` applies it to every\n * row; the arrival toast is the blocks' (`useNotificationToasts`).\n */\n\nimport type { QueryClient } from '@tanstack/react-query'\nimport type { components } from '@arbidocs/client'\nimport { arbiQueryKeys, mailQueryKeys } from '../query-keys'\n\ntype NotificationResponse = components['schemas']['NotificationResponse']\n\n/** A persisted notification row has an id and the person it is addressed to. */\nexport function isNotificationRow(message: unknown): message is NotificationResponse {\n const m = message as { external_id?: unknown; recipient?: unknown } | null\n return (\n typeof m?.external_id === 'string' && typeof m.recipient === 'object' && m.recipient !== null\n )\n}\n\n/** Notification types that mean the Mail views changed for their recipient. */\nconst MAIL_TYPES = new Set(['native_mail_received', 'mail_draft_ready'])\n\n/** Apply one live notification row to the cache (`me`: the signed-in user's id). */\nexport function applyNotificationRow(\n queryClient: QueryClient,\n row: NotificationResponse,\n me: string | null | undefined\n): void {\n if (MAIL_TYPES.has(row.type) && row.recipient.external_id === me)\n void queryClient.invalidateQueries({ queryKey: mailQueryKeys.all() })\n queryClient.setQueriesData<NotificationResponse[]>(\n { queryKey: arbiQueryKeys.allNotifications() },\n (old) => {\n if (!Array.isArray(old)) return old\n const index = old.findIndex((n) => n.external_id === row.external_id)\n if (index < 0) return [row, ...old]\n if (!row.read || old[index].read) return old\n const next = [...old]\n next[index] = { ...old[index], read: true }\n return next\n }\n )\n void queryClient.invalidateQueries({ queryKey: arbiQueryKeys.allNotifications() })\n}\n"],
5
+ "mappings": "AAUA,SAAS,eAAe,qBAAqB;AAKtC,SAAS,kBAAkB,SAAmD;AACnF,QAAM,IAAI;AACV,SACE,OAAO,GAAG,gBAAgB,YAAY,OAAO,EAAE,cAAc,YAAY,EAAE,cAAc;AAE7F;AAGA,MAAM,aAAa,oBAAI,IAAI,CAAC,wBAAwB,kBAAkB,CAAC;AAGhE,SAAS,qBACd,aACA,KACA,IACM;AACN,MAAI,WAAW,IAAI,IAAI,IAAI,KAAK,IAAI,UAAU,gBAAgB;AAC5D,SAAK,YAAY,kBAAkB,EAAE,UAAU,cAAc,IAAI,EAAE,CAAC;AACtE,cAAY;AAAA,IACV,EAAE,UAAU,cAAc,iBAAiB,EAAE;AAAA,IAC7C,CAAC,QAAQ;AACP,UAAI,CAAC,MAAM,QAAQ,GAAG,EAAG,QAAO;AAChC,YAAM,QAAQ,IAAI,UAAU,CAAC,MAAM,EAAE,gBAAgB,IAAI,WAAW;AACpE,UAAI,QAAQ,EAAG,QAAO,CAAC,KAAK,GAAG,GAAG;AAClC,UAAI,CAAC,IAAI,QAAQ,IAAI,KAAK,EAAE,KAAM,QAAO;AACzC,YAAM,OAAO,CAAC,GAAG,GAAG;AACpB,WAAK,KAAK,IAAI,EAAE,GAAG,IAAI,KAAK,GAAG,MAAM,KAAK;AAC1C,aAAO;AAAA,IACT;AAAA,EACF;AACA,OAAK,YAAY,kBAAkB,EAAE,UAAU,cAAc,iBAAiB,EAAE,CAAC;AACnF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,127 @@
1
+ import {
2
+ Activity,
3
+ AtSign,
4
+ FileText,
5
+ Gauge,
6
+ Gift,
7
+ HardDrive,
8
+ Info,
9
+ MessageCircleMore,
10
+ PartyPopper,
11
+ PenLine,
12
+ Reply,
13
+ UserCheck,
14
+ UserPlus
15
+ } from "lucide-react";
16
+ import { getEntityIcon } from "../entities/registry.js";
17
+ function getNotificationTypeMeta(type) {
18
+ const WorkspaceIcon = getEntityIcon("WORKSPACE");
19
+ switch (type) {
20
+ case "support_ticket_received":
21
+ case "support_ticket_reviewed":
22
+ case "support_ticket_resolved":
23
+ return { Icon: MessageCircleMore, iconClassName: "text-primary", label: "Support" };
24
+ case "agent_input_requested":
25
+ return { Icon: MessageCircleMore, iconClassName: "text-primary", label: "Input needed" };
26
+ case "workspaceuser_added_owner":
27
+ case "workspaceuser_added_collaborator":
28
+ case "workspaceuser_added_guest":
29
+ return { Icon: WorkspaceIcon, iconClassName: "text-primary", label: "Added" };
30
+ case "workspaceuser_removed":
31
+ return { Icon: WorkspaceIcon, iconClassName: "text-primary", label: "Removed" };
32
+ case "workspaceuser_updated_owner":
33
+ case "workspaceuser_updated_collaborator":
34
+ case "workspaceuser_updated_guest":
35
+ return { Icon: WorkspaceIcon, iconClassName: "text-primary", label: "Role changed" };
36
+ case "docx_mention":
37
+ case "mention":
38
+ return { Icon: AtSign, iconClassName: "text-primary", label: "Mention" };
39
+ case "file_shared":
40
+ return { Icon: FileText, iconClassName: "text-primary", label: "Shared file" };
41
+ case "signature_requested":
42
+ return { Icon: PenLine, iconClassName: "text-primary", label: "Signature" };
43
+ case "signature_completed":
44
+ return { Icon: PenLine, iconClassName: "text-green-600", label: "Signed" };
45
+ case "signature_declined":
46
+ return { Icon: PenLine, iconClassName: "text-orange-500", label: "Declined" };
47
+ case "thread_reply":
48
+ return { Icon: Reply, iconClassName: "text-primary", label: "Reply" };
49
+ case "document_activity":
50
+ return { Icon: FileText, iconClassName: "text-primary", label: "Document" };
51
+ case "contact_accepted":
52
+ return { Icon: UserCheck, iconClassName: "text-green-500", label: "Invitation" };
53
+ case "deployment_user_invited":
54
+ case "deployment_user_registered":
55
+ return { Icon: UserPlus, iconClassName: "text-primary", label: "Users" };
56
+ case "signup_reward":
57
+ return { Icon: PartyPopper, iconClassName: "text-green-600", label: "Signup bonus" };
58
+ case "referral_reward":
59
+ return { Icon: Gift, iconClassName: "text-green-600", label: "Reward earned" };
60
+ case "project_quota_warning":
61
+ return { Icon: Gauge, iconClassName: "text-orange-500", label: "Usage warning" };
62
+ case "project_retention":
63
+ return { Icon: Gauge, iconClassName: "text-orange-500", label: "Project retention" };
64
+ case "quota_threshold_50":
65
+ return { Icon: Gauge, iconClassName: "text-blue-500", label: "Usage 50%" };
66
+ case "quota_threshold_90":
67
+ return { Icon: Gauge, iconClassName: "text-orange-500", label: "Usage 90%" };
68
+ case "quota_threshold_100":
69
+ return { Icon: Gauge, iconClassName: "text-red-500", label: "Usage limit" };
70
+ case "storage_quota_exceeded":
71
+ return { Icon: HardDrive, iconClassName: "text-red-500", label: "Storage full" };
72
+ case "activity":
73
+ return { Icon: Activity, iconClassName: "text-muted-foreground", label: "Activity" };
74
+ default:
75
+ return { Icon: Info, iconClassName: "text-blue-500", label: type || "Notification" };
76
+ }
77
+ }
78
+ function isWorkspaceNotificationType(type) {
79
+ return type.startsWith("workspaceuser_");
80
+ }
81
+ function getWorkspaceActionText(type) {
82
+ switch (type) {
83
+ case "workspaceuser_added_owner":
84
+ return "added you as owner";
85
+ case "workspaceuser_added_collaborator":
86
+ return "added you as collaborator";
87
+ case "workspaceuser_added_guest":
88
+ return "added you as read only";
89
+ case "workspaceuser_removed":
90
+ return "removed you";
91
+ case "workspaceuser_updated_owner":
92
+ return "changed your role to owner";
93
+ case "workspaceuser_updated_collaborator":
94
+ return "changed your role to collaborator";
95
+ case "workspaceuser_updated_guest":
96
+ return "changed your role to read only";
97
+ default:
98
+ return "updated your access";
99
+ }
100
+ }
101
+ function getWorkspaceSentPhrase(type) {
102
+ switch (type) {
103
+ case "workspaceuser_added_owner":
104
+ return { before: "You added", after: "as owner" };
105
+ case "workspaceuser_added_collaborator":
106
+ return { before: "You added", after: "as collaborator" };
107
+ case "workspaceuser_added_guest":
108
+ return { before: "You added", after: "as read only" };
109
+ case "workspaceuser_removed":
110
+ return { before: "You removed", after: "" };
111
+ case "workspaceuser_updated_owner":
112
+ return { before: "You set", after: "as owner" };
113
+ case "workspaceuser_updated_collaborator":
114
+ return { before: "You set", after: "as collaborator" };
115
+ case "workspaceuser_updated_guest":
116
+ return { before: "You set", after: "as read only" };
117
+ default:
118
+ return { before: "You updated access for", after: "" };
119
+ }
120
+ }
121
+ export {
122
+ getNotificationTypeMeta,
123
+ getWorkspaceActionText,
124
+ getWorkspaceSentPhrase,
125
+ isWorkspaceNotificationType
126
+ };
127
+ //# sourceMappingURL=notification-types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/notifications/notification-types.ts"],
4
+ "sourcesContent": ["/**\n * Notification-type presentation primitives \u2014 the brand-neutral icon, colour and\n * label maps for every `NotificationType`, plus the workspace-membership phrasing\n * helpers. Kept in their own module (not a component file) so both the monolith's\n * AG-Grid notification centre and lightweight consumers (e.g. clarum's activity\n * feed) share one source of truth for \"what does this notification type mean\",\n * and so component files stay fast-refresh friendly.\n *\n * Deliberately decoupled: no store, no app `@/` imports \u2014 just lucide icon\n * components + semantic Tailwind token class names. Callers render the icon\n * themselves (`<Icon className={iconClassName} />`).\n */\n\nimport {\n Activity,\n AtSign,\n FileText,\n Gauge,\n Gift,\n HardDrive,\n Info,\n MessageCircleMore,\n PartyPopper,\n PenLine,\n Reply,\n UserCheck,\n UserPlus,\n} from 'lucide-react'\nimport { getEntityIcon, type EntityIconComponent } from '../entities/registry'\n\n/** Icon component, its colour class, and a short human label for a notification type. */\nexport interface NotificationTypeMeta {\n Icon: EntityIconComponent\n /** Semantic Tailwind colour class for the glyph. */\n iconClassName: string\n /** Short category label (e.g. \"Added\", \"Usage 90%\"). */\n label: string\n}\n\n/**\n * Resolve the icon + colour + short label for a notification type.\n *\n * Workspace-membership events all share the workspace glyph \u2014 the specific role\n * lives in the Event sentence (see {@link getWorkspaceSentPhrase}), so the label\n * stays short (\"Added\", not \"Added as collaborator\"). Unknown types fall back to\n * an info glyph and the raw type string.\n */\nexport function getNotificationTypeMeta(type: string | null | undefined): NotificationTypeMeta {\n // Resolve the workspace glyph live (not at module load) so a deployment's\n // configureEntityRegistry() injection is always reflected, regardless of import order.\n const WorkspaceIcon = getEntityIcon('WORKSPACE') as EntityIconComponent\n switch (type) {\n case 'support_ticket_received':\n case 'support_ticket_reviewed':\n case 'support_ticket_resolved':\n return { Icon: MessageCircleMore, iconClassName: 'text-primary', label: 'Support' }\n case 'agent_input_requested':\n return { Icon: MessageCircleMore, iconClassName: 'text-primary', label: 'Input needed' }\n case 'workspaceuser_added_owner':\n case 'workspaceuser_added_collaborator':\n case 'workspaceuser_added_guest':\n return { Icon: WorkspaceIcon, iconClassName: 'text-primary', label: 'Added' }\n case 'workspaceuser_removed':\n return { Icon: WorkspaceIcon, iconClassName: 'text-primary', label: 'Removed' }\n case 'workspaceuser_updated_owner':\n case 'workspaceuser_updated_collaborator':\n case 'workspaceuser_updated_guest':\n return { Icon: WorkspaceIcon, iconClassName: 'text-primary', label: 'Role changed' }\n case 'docx_mention':\n case 'mention':\n return { Icon: AtSign, iconClassName: 'text-primary', label: 'Mention' }\n case 'file_shared':\n return { Icon: FileText, iconClassName: 'text-primary', label: 'Shared file' }\n case 'signature_requested':\n return { Icon: PenLine, iconClassName: 'text-primary', label: 'Signature' }\n case 'signature_completed':\n return { Icon: PenLine, iconClassName: 'text-green-600', label: 'Signed' }\n case 'signature_declined':\n return { Icon: PenLine, iconClassName: 'text-orange-500', label: 'Declined' }\n case 'thread_reply':\n return { Icon: Reply, iconClassName: 'text-primary', label: 'Reply' }\n case 'document_activity':\n return { Icon: FileText, iconClassName: 'text-primary', label: 'Document' }\n case 'contact_accepted':\n return { Icon: UserCheck, iconClassName: 'text-green-500', label: 'Invitation' }\n case 'deployment_user_invited':\n case 'deployment_user_registered':\n return { Icon: UserPlus, iconClassName: 'text-primary', label: 'Users' }\n case 'signup_reward':\n return { Icon: PartyPopper, iconClassName: 'text-green-600', label: 'Signup bonus' }\n case 'referral_reward':\n return { Icon: Gift, iconClassName: 'text-green-600', label: 'Reward earned' }\n case 'project_quota_warning':\n return { Icon: Gauge, iconClassName: 'text-orange-500', label: 'Usage warning' }\n case 'project_retention':\n return { Icon: Gauge, iconClassName: 'text-orange-500', label: 'Project retention' }\n case 'quota_threshold_50':\n return { Icon: Gauge, iconClassName: 'text-blue-500', label: 'Usage 50%' }\n case 'quota_threshold_90':\n return { Icon: Gauge, iconClassName: 'text-orange-500', label: 'Usage 90%' }\n case 'quota_threshold_100':\n return { Icon: Gauge, iconClassName: 'text-red-500', label: 'Usage limit' }\n case 'storage_quota_exceeded':\n return { Icon: HardDrive, iconClassName: 'text-red-500', label: 'Storage full' }\n case 'activity':\n // Durable to-self activity line \u2014 the specific event lives in `content`.\n // Callers that have the content should prefer describeActivity() for a\n // precise glyph/label; this is the type-only fallback.\n return { Icon: Activity, iconClassName: 'text-muted-foreground', label: 'Activity' }\n default:\n return { Icon: Info, iconClassName: 'text-blue-500', label: type || 'Notification' }\n }\n}\n\n/** Whether a notification type is a workspace-membership event. */\nexport function isWorkspaceNotificationType(type: string): boolean {\n return type.startsWith('workspaceuser_')\n}\n\n/**\n * Recipient-perspective action text (\"you received\"). Renders after the sender\n * pill: \"[sender] added you as collaborator\". The workspace renders in its own\n * column, so there's no trailing preposition.\n */\nexport function getWorkspaceActionText(type: string): string {\n switch (type) {\n case 'workspaceuser_added_owner':\n return 'added you as owner'\n case 'workspaceuser_added_collaborator':\n return 'added you as collaborator'\n case 'workspaceuser_added_guest':\n return 'added you as read only'\n case 'workspaceuser_removed':\n return 'removed you'\n case 'workspaceuser_updated_owner':\n return 'changed your role to owner'\n case 'workspaceuser_updated_collaborator':\n return 'changed your role to collaborator'\n case 'workspaceuser_updated_guest':\n return 'changed your role to read only'\n default:\n return 'updated your access'\n }\n}\n\n/**\n * Sender-perspective phrasing (\"you did this\"). Renders around the affected\n * member pill \u2014 `{before} [member] {after}` \u2014 so it reads as an active sentence:\n * \"You added [Jane] as collaborator\" rather than the ambiguous \"Added as\n * collaborator: Jane\".\n */\nexport function getWorkspaceSentPhrase(type: string): { before: string; after: string } {\n switch (type) {\n case 'workspaceuser_added_owner':\n return { before: 'You added', after: 'as owner' }\n case 'workspaceuser_added_collaborator':\n return { before: 'You added', after: 'as collaborator' }\n case 'workspaceuser_added_guest':\n return { before: 'You added', after: 'as read only' }\n case 'workspaceuser_removed':\n return { before: 'You removed', after: '' }\n case 'workspaceuser_updated_owner':\n return { before: 'You set', after: 'as owner' }\n case 'workspaceuser_updated_collaborator':\n return { before: 'You set', after: 'as collaborator' }\n case 'workspaceuser_updated_guest':\n return { before: 'You set', after: 'as read only' }\n default:\n return { before: 'You updated access for', after: '' }\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,18 +1,14 @@
1
- import { renderToStaticMarkup } from 'react-dom/server';
2
- import { toast } from 'sonner';
3
- export { toast } from 'sonner';
4
- import { create } from 'zustand';
5
- import { useSyncExternalStore } from 'react';
6
-
7
- // src/notifications/notify-store.ts
8
- var MAX_SESSION_NOTIFICATIONS = 5e3;
9
- var seq = 0;
10
- var uid = () => `n${Date.now().toString(36)}${(seq++).toString(36)}`;
1
+ import { renderToStaticMarkup } from "react-dom/server";
2
+ import { toast } from "sonner";
3
+ import { create } from "zustand";
4
+ const MAX_SESSION_NOTIFICATIONS = 5e3;
5
+ let seq = 0;
6
+ const uid = () => `n${Date.now().toString(36)}${(seq++).toString(36)}`;
11
7
  function capSession(items) {
12
8
  let session = 0;
13
9
  return items.filter((n) => n.source || ++session <= MAX_SESSION_NOTIFICATIONS);
14
10
  }
15
- var useNotify = create((set) => ({
11
+ const useNotify = create((set) => ({
16
12
  notifications: [],
17
13
  muted: false,
18
14
  setMuted: (muted) => set({ muted }),
@@ -35,7 +31,7 @@ var useNotify = create((set) => ({
35
31
  ].sort((a, b) => b.ts - a.ts)
36
32
  }))
37
33
  }));
38
- var config = {};
34
+ let config = {};
39
35
  function configureNotify(next) {
40
36
  config = { ...config, ...next };
41
37
  }
@@ -46,7 +42,7 @@ function richMarkup(title) {
46
42
  return void 0;
47
43
  }
48
44
  }
49
- var textOf = (html) => (html ?? "").replace(/<[^>]+>/g, " ").replace(/\s+/g, " ").trim();
45
+ const textOf = (html) => (html ?? "").replace(/<[^>]+>/g, " ").replace(/\s+/g, " ").trim();
50
46
  function make(variant) {
51
47
  return (title, opts = {}) => {
52
48
  const { workspaceId } = opts;
@@ -86,7 +82,7 @@ function make(variant) {
86
82
  return id;
87
83
  };
88
84
  }
89
- var notify = {
85
+ const notify = {
90
86
  success: make("success"),
91
87
  error: make("error"),
92
88
  info: make("info"),
@@ -133,68 +129,22 @@ function persistNotifyHistory(key, storage = globalThis.localStorage) {
133
129
  }
134
130
  });
135
131
  }
136
- var selectUnread = (s) => s.notifications.filter((n) => !n.read && !n.ambient).length;
137
- var DEFAULT_NOTIFY_TONE = {
132
+ const selectUnread = (s) => s.notifications.filter((n) => !n.read && !n.ambient).length;
133
+ const DEFAULT_NOTIFY_TONE = {
138
134
  success: "text-green-600",
139
135
  error: "text-destructive",
140
136
  warning: "text-amber-500",
141
137
  info: "text-blue-500"
142
138
  };
143
- var artifacts = {};
144
- var order = [];
145
- var listeners = /* @__PURE__ */ new Set();
146
- function subscribe(listener) {
147
- listeners.add(listener);
148
- return () => listeners.delete(listener);
149
- }
150
- function emit() {
151
- listeners.forEach((listener) => listener());
152
- }
153
- function recordChatArtifact(event, conversationId) {
154
- const previous = artifacts[event.doc_ext_id];
155
- const artifact = {
156
- docExtId: event.doc_ext_id,
157
- title: event.title,
158
- content: event.content,
159
- // The backend schema lags the 'react' mode it also sends; the value passes through unchanged.
160
- mode: event.mode,
161
- isComplete: event.is_complete,
162
- version: event.version,
163
- createdAt: (/* @__PURE__ */ new Date()).toISOString(),
164
- messageExtId: event.message_ext_id ?? void 0,
165
- conversationId
166
- };
167
- artifacts = { ...artifacts, [artifact.docExtId]: artifact };
168
- if (!previous) order = [...order, artifact.docExtId];
169
- emit();
170
- }
171
- function clearChatArtifacts() {
172
- if (order.length === 0) return;
173
- artifacts = {};
174
- order = [];
175
- emit();
176
- }
177
- function getChatArtifacts() {
178
- return artifacts;
179
- }
180
- function getChatArtifact(documentId) {
181
- return documentId ? artifacts[documentId] : void 0;
182
- }
183
- function useChatArtifact(documentId) {
184
- return useSyncExternalStore(
185
- subscribe,
186
- () => getChatArtifact(documentId),
187
- () => void 0
188
- );
189
- }
190
- function useMessageChatArtifact(messageId) {
191
- return useSyncExternalStore(
192
- subscribe,
193
- () => messageId ? Object.values(artifacts).find((artifact) => artifact.messageExtId === messageId) : void 0,
194
- () => void 0
195
- );
196
- }
197
-
198
- export { DEFAULT_NOTIFY_TONE, MAX_SESSION_NOTIFICATIONS, clearChatArtifacts, configureNotify, getChatArtifact, getChatArtifacts, notify, persistNotifyHistory, recordChatArtifact, seedNotifications, selectUnread, useChatArtifact, useMessageChatArtifact, useNotify };
199
- //# sourceMappingURL=chunk-BF5KW5ZI.js.map
200
- //# sourceMappingURL=chunk-BF5KW5ZI.js.map
139
+ export {
140
+ DEFAULT_NOTIFY_TONE,
141
+ MAX_SESSION_NOTIFICATIONS,
142
+ configureNotify,
143
+ notify,
144
+ persistNotifyHistory,
145
+ seedNotifications,
146
+ selectUnread,
147
+ toast,
148
+ useNotify
149
+ };
150
+ //# sourceMappingURL=notify-store.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/notifications/notify-store.ts"],
4
+ "sourcesContent": ["/**\n * The one notification history: every `notify.*` call pops a transient toast (rendered by\n * <Toaster/>, on sonner) and, unless `{ record: false }`, records an entry. The same entries feed\n * the topbar bell (<NotificationBell/>), its unread badge and a host's notification page; backend\n * bridges reconcile their own slices into it with {@link syncSource}.\n *\n * notify.success('Saved') // toast + entry\n * notify.error('Upload failed', { record: false }) // toast only\n * notify.info('Opening workspace\u2026', { ambient: true }) // a log line: never badges\n *\n * sonner owns the transient toast lifecycle (stacking, timing, dismissal); this store owns the\n * history, the mute switch and what a host configures once (workspace glyph and link, see\n * {@link configureNotify}; persistence, see {@link persistNotifyHistory}). Brand-neutral: no seed\n * data, no app imports. For full sonner power the raw `toast` is re-exported.\n */\nimport { type ReactNode } from 'react'\nimport { renderToStaticMarkup } from 'react-dom/server'\n// This module IS the sanctioned toast engine home \u2014 the app-level rule that\n// steers callers to notify() doesn't apply here.\n// eslint-disable-next-line no-restricted-imports\nimport { toast } from 'sonner'\nimport { create } from 'zustand'\n\nexport { toast }\n\nexport type NotifyVariant = 'success' | 'error' | 'info' | 'warning'\n\nexport interface AppNotification {\n id: string\n title: string\n description?: string\n variant: NotifyVariant\n /** Epoch ms the entry was recorded. */\n ts: number\n read: boolean\n /** Optional in-app link the entry deep-links to (passed to the bell's onNavigate). */\n href?: string\n /** Optional click action \u2014 wins over `href` when both are present. Session\n * history only: never persisted, so a closure is safe here. */\n onSelect?: () => void\n /** The label of the action `onSelect` runs (\"Reply\", \"View\"). */\n actionLabel?: string\n /** Workspace the entry belongs to. */\n workspaceId?: string\n /** Markup of a rich (non-string) toast message, for a log that shows it as it was toasted. */\n html?: string\n /** Routine session activity (\"Opening workspace\u2026\", \"Saved\") \u2014 kept for the\n * log but not something that demands attention: excluded from the unread\n * badge and from the bell's list. */\n ambient?: boolean\n /** Where the entry comes from. Session entries (`notify.*`) have none; a\n * backend bridge stamps its own (e.g. 'server') so {@link syncSource} can\n * replace exactly its slice on every refetch without touching the rest. */\n source?: string\n}\n\nexport interface NotifyOptions {\n /** Shown under the title in the toast; a string description is also recorded. */\n description?: ReactNode\n /** Record an entry in the history (default true). False pops the toast only \u2014 for an event\n * whose entry arrives another way (a server-persisted notification synced by a bridge). */\n record?: boolean\n /** Pop the transient toast (default true unless muted). False records the entry only. */\n toast?: boolean\n /** Recorded title for a rich (non-string) toast title. Default: the string title, else the\n * rich title's text. */\n recordTitle?: string\n /** Recorded markup for a rich toast title (default: the title rendered to static markup). */\n html?: string\n href?: string\n /** Workspace the notification belongs to: its glyph shows in the toast and its link is the\n * entry's default `href` (both as configured with {@link configureNotify}). */\n workspaceId?: string\n duration?: number\n /** A toast action button (sonner). Clicking the entry runs it too. */\n action?: { label: ReactNode; onClick: () => void }\n /** Override the toast glyph (sonner). */\n icon?: ReactNode\n /** Extra class on the toast (sonner). */\n className?: string\n /** Record as routine session activity (see {@link AppNotification.ambient}): born read. */\n ambient?: boolean\n}\n\n/** Session entries kept (oldest dropped first) \u2014 a safety net against pathological growth; a\n * large upload can log many entries, so it is generous. Source slices are bounded by their source. */\nexport const MAX_SESSION_NOTIFICATIONS = 5000\n\ninterface NotifyState {\n notifications: AppNotification[]\n /** Toasts are muted: entries are still recorded \u2014 the history is what the user comes back to. */\n muted: boolean\n setMuted: (muted: boolean) => void\n markRead: (id: string) => void\n markAllRead: () => void\n removeNotification: (id: string) => void\n removeNotifications: (ids: readonly string[]) => void\n clearNotifications: () => void\n /** Replace the history (e.g. seed a demo/initial set). */\n seed: (items: AppNotification[]) => void\n /** Record an entry (used by `notify.*`; sonner renders the toast). */\n record: (note: AppNotification) => void\n /** Reconcile one source's slice with fresh truth (e.g. a backend list on\n * every refetch): entries stamped with `source` are replaced wholesale \u2014\n * including their read state, which the source owns \u2014 while entries from\n * other sources (session activity) stay untouched. Newest first. */\n syncSource: (source: string, items: AppNotification[]) => void\n}\n\nlet seq = 0\nconst uid = () => `n${Date.now().toString(36)}${(seq++).toString(36)}`\n\n/** Keep at most {@link MAX_SESSION_NOTIFICATIONS} session entries (newest first). */\nfunction capSession(items: AppNotification[]): AppNotification[] {\n let session = 0\n return items.filter((n) => n.source || ++session <= MAX_SESSION_NOTIFICATIONS)\n}\n\nexport const useNotify = create<NotifyState>((set) => ({\n notifications: [],\n muted: false,\n setMuted: (muted) => set({ muted }),\n markRead: (id) =>\n set((s) => ({\n notifications: s.notifications.map((n) => (n.id === id ? { ...n, read: true } : n)),\n })),\n markAllRead: () =>\n set((s) => ({ notifications: s.notifications.map((n) => ({ ...n, read: true })) })),\n removeNotification: (id) =>\n set((s) => ({ notifications: s.notifications.filter((n) => n.id !== id) })),\n removeNotifications: (ids) => {\n const drop = new Set(ids)\n set((s) => ({ notifications: s.notifications.filter((n) => !drop.has(n.id)) }))\n },\n clearNotifications: () => set({ notifications: [] }),\n seed: (items) => set({ notifications: items }),\n record: (note) => set((s) => ({ notifications: capSession([note, ...s.notifications]) })),\n syncSource: (source, items) =>\n set((s) => ({\n notifications: [\n ...items.map((n) => ({ ...n, source })),\n ...s.notifications.filter((n) => n.source !== source),\n ].sort((a, b) => b.ts - a.ts),\n })),\n}))\n\n/** What a host configures once for every `notify.*` call. */\nexport interface NotifyConfig {\n /** The toast glyph of a notification that names a workspace. */\n workspaceIcon?: (workspaceId: string) => ReactNode\n /** The default link of an entry that names a workspace. */\n workspaceHref?: (workspaceId: string) => string | undefined\n /** The default of {@link NotifyOptions.ambient} for calls that do not say: a host whose own\n * toasts are mostly confirmations (\"Saved\") records them as log lines, and passes\n * `ambient: false` for what should claim attention. Default false. */\n ambient?: boolean\n}\n\nlet config: NotifyConfig = {}\n\n/** Set the host's workspace glyph and link (merged into what is configured). */\nexport function configureNotify(next: NotifyConfig): void {\n config = { ...config, ...next }\n}\n\nfunction richMarkup(title: ReactNode): string | undefined {\n try {\n return renderToStaticMarkup(title)\n } catch {\n return undefined\n }\n}\n\nconst textOf = (html: string | undefined) =>\n (html ?? '')\n .replace(/<[^>]+>/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim()\n\n/** Ergonomic helper \u2014 `notify.success('Saved')` \u2014 toast (sonner) + optional entry. */\nfunction make(variant: NotifyVariant) {\n return (title: ReactNode, opts: NotifyOptions = {}): string => {\n const { workspaceId } = opts\n const ambient = opts.ambient ?? config.ambient ?? false\n if (opts.toast !== false && !useNotify.getState().muted) {\n toast[variant](title, {\n description: opts.description,\n duration: opts.duration,\n action: opts.action,\n icon: opts.icon ?? (workspaceId ? config.workspaceIcon?.(workspaceId) : undefined),\n className: opts.className,\n })\n }\n const id = uid()\n if (opts.record !== false) {\n const html =\n opts.html ?? (typeof title === 'string' || title == null ? undefined : richMarkup(title))\n useNotify.getState().record({\n id,\n // A rich toast still needs a READABLE title \u2014 \"Passage copied: gamma-services p.1\",\n // not \"Notification\" \u2014 so it comes from the rendered markup, tags stripped.\n title:\n opts.recordTitle ?? (typeof title === 'string' ? title : textOf(html) || 'Notification'),\n description: typeof opts.description === 'string' ? opts.description : undefined,\n variant,\n ts: Date.now(),\n // Ambient activity is a log line, not a claim on attention: it never wears an unread dot.\n read: ambient,\n // Clicking the entry goes where the notification points: its action (when it has one),\n // an explicit link, or the workspace it happened in.\n href: opts.href ?? (workspaceId ? config.workspaceHref?.(workspaceId) : undefined),\n onSelect: opts.action?.onClick,\n actionLabel: opts.action ? String(opts.action.label) : undefined,\n workspaceId,\n html,\n ambient,\n })\n }\n return id\n }\n}\nexport const notify = {\n success: make('success'),\n error: make('error'),\n info: make('info'),\n warning: make('warning'),\n}\n\n/** Replace the history \u2014 inject a seed/initial set. */\nexport function seedNotifications(items: AppNotification[]): void {\n useNotify.getState().seed(items)\n}\n\ninterface SavedHistory {\n muted?: boolean\n notifications?: AppNotification[]\n}\n\n/**\n * Keep the session history and the mute switch across reloads in `storage` under `key`: restores\n * them now and saves every change. Source slices are not saved (their source re-syncs them), and\n * neither are actions \u2014 a closure does not survive a reload. Returns the unsubscribe.\n */\nexport function persistNotifyHistory(\n key: string,\n storage: Pick<Storage, 'getItem' | 'setItem'> | undefined = globalThis.localStorage\n): () => void {\n if (!storage) return () => {}\n try {\n const saved = JSON.parse(storage.getItem(key) ?? 'null') as SavedHistory | null\n if (saved) {\n const known = new Set(useNotify.getState().notifications.map((n) => n.id))\n useNotify.setState((s) => ({\n muted: saved.muted ?? s.muted,\n notifications: capSession(\n [\n ...s.notifications,\n ...(saved.notifications ?? []).filter((n) => !n.source && !known.has(n.id)),\n ].sort((a, b) => b.ts - a.ts)\n ),\n }))\n }\n } catch {\n // Unreadable or blocked storage: start empty.\n }\n let saved: AppNotification[] = []\n let savedMuted: boolean | undefined\n return useNotify.subscribe((s) => {\n const session = s.notifications.filter((n) => !n.source)\n // A backend re-sync or a read change elsewhere leaves the session slice as it was.\n if (\n s.muted === savedMuted &&\n session.length === saved.length &&\n session.every((n, i) => n === saved[i])\n )\n return\n saved = session\n savedMuted = s.muted\n // JSON drops the undefined fields: an action's closure cannot be saved, nor its label alone.\n const notifications = session.map((n) => ({\n ...n,\n onSelect: undefined,\n actionLabel: undefined,\n }))\n try {\n storage.setItem(key, JSON.stringify({ muted: s.muted, notifications }))\n } catch {\n // Full or blocked storage: the in-memory history still works.\n }\n })\n}\n\n/** Unread count selector for the topbar bell \u2014 ambient session activity never\n * demands attention, so it never counts. */\nexport const selectUnread = (s: NotifyState): number =>\n s.notifications.filter((n) => !n.read && !n.ambient).length\n\n/** Default glyph colour per variant (raw palette, override via `toneClassNames`). */\nexport const DEFAULT_NOTIFY_TONE: Record<NotifyVariant, string> = {\n success: 'text-green-600',\n error: 'text-destructive',\n warning: 'text-amber-500',\n info: 'text-blue-500',\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["saved"]
7
+ }