@arbidocs/blocks 0.4.159 → 0.4.161

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 (334) hide show
  1. package/README.md +48 -9
  2. package/dist/{ConnectedNativeDocxComparison-R6RU5TZE.cjs → ConnectedNativeDocxComparison-GLHOGUP6.cjs} +12 -11
  3. package/dist/{ConnectedNativeDocxComparison-R6RU5TZE.cjs.map → ConnectedNativeDocxComparison-GLHOGUP6.cjs.map} +1 -1
  4. package/dist/{ConnectedNativeDocxComparison-XMZ5KLD4.js → ConnectedNativeDocxComparison-LKIMKOTA.js} +11 -10
  5. package/dist/{ConnectedStreamedWordArtifact-IXRJ7MUE.js.map → ConnectedNativeDocxComparison-LKIMKOTA.js.map} +1 -1
  6. package/dist/{ConnectedNativeDocxEditor-NGUK2AX6.js → ConnectedNativeDocxEditor-6LNYWZ3P.js} +10 -9
  7. package/dist/{ConnectedNativeDocxEditor-NGUK2AX6.js.map → ConnectedNativeDocxEditor-6LNYWZ3P.js.map} +1 -1
  8. package/dist/{ConnectedNativeDocxEditor-LBATSM3M.cjs → ConnectedNativeDocxEditor-M3UGWL6K.cjs} +12 -11
  9. package/dist/{ConnectedNativeDocxEditor-LBATSM3M.cjs.map → ConnectedNativeDocxEditor-M3UGWL6K.cjs.map} +1 -1
  10. package/dist/{ConnectedStreamedWordArtifact-IXRJ7MUE.js → ConnectedStreamedWordArtifact-432HT7DK.js} +11 -10
  11. package/dist/{ConnectedNativeDocxComparison-XMZ5KLD4.js.map → ConnectedStreamedWordArtifact-432HT7DK.js.map} +1 -1
  12. package/dist/{ConnectedStreamedWordArtifact-CWFR6A37.cjs → ConnectedStreamedWordArtifact-COEXL5IT.cjs} +12 -11
  13. package/dist/ConnectedStreamedWordArtifact-COEXL5IT.cjs.map +1 -0
  14. package/dist/{FactTextEditor-YESAU2IJ.js → FactTextEditor-ABKKJOCY.js} +2 -2
  15. package/dist/FactTextEditor-ABKKJOCY.js.map +1 -0
  16. package/dist/{FactTextEditor-YUPBCTXK.cjs → FactTextEditor-GYN5RHJT.cjs} +2 -2
  17. package/dist/FactTextEditor-GYN5RHJT.cjs.map +1 -0
  18. package/dist/{WorkspaceTableView-EYLEUZZT.cjs → WorkspaceTableView-AQTF5F6T.cjs} +6 -5
  19. package/dist/WorkspaceTableView-AQTF5F6T.cjs.map +1 -0
  20. package/dist/{WorkspaceTableView-DWUE4VQF.js → WorkspaceTableView-PTB5BPVA.js} +4 -3
  21. package/dist/WorkspaceTableView-PTB5BPVA.js.map +1 -0
  22. package/dist/agents/index.cjs +263 -263
  23. package/dist/agents/index.js +6 -6
  24. package/dist/agents/skills/skillLibrary.d.ts +1 -1
  25. package/dist/{chunk-FPHTSNOE.js → chunk-2AKIMCDD.js} +3 -3
  26. package/dist/{chunk-FPHTSNOE.js.map → chunk-2AKIMCDD.js.map} +1 -1
  27. package/dist/{chunk-YNMO3DSR.js → chunk-2AMYT2HQ.js} +3 -3
  28. package/dist/{chunk-YNMO3DSR.js.map → chunk-2AMYT2HQ.js.map} +1 -1
  29. package/dist/{chunk-MSFQDELO.cjs → chunk-3CUORKDL.cjs} +4 -4
  30. package/dist/{chunk-MSFQDELO.cjs.map → chunk-3CUORKDL.cjs.map} +1 -1
  31. package/dist/{chunk-MNG7N6M2.js → chunk-3PQIWOTZ.js} +122 -57
  32. package/dist/chunk-3PQIWOTZ.js.map +1 -0
  33. package/dist/chunk-5C7DRQQE.cjs +1891 -0
  34. package/dist/chunk-5C7DRQQE.cjs.map +1 -0
  35. package/dist/{chunk-F57LNUSZ.js → chunk-5NWY3FXQ.js} +24 -57
  36. package/dist/chunk-5NWY3FXQ.js.map +1 -0
  37. package/dist/{chunk-ISHFVKVU.js → chunk-5WLORPGX.js} +4 -4
  38. package/dist/{chunk-ISHFVKVU.js.map → chunk-5WLORPGX.js.map} +1 -1
  39. package/dist/{chunk-FAXXN7KI.cjs → chunk-5Y6V7F6W.cjs} +53 -4
  40. package/dist/chunk-5Y6V7F6W.cjs.map +1 -0
  41. package/dist/{chunk-6QAAIDQQ.cjs → chunk-6UTIAHQG.cjs} +60 -60
  42. package/dist/{chunk-6QAAIDQQ.cjs.map → chunk-6UTIAHQG.cjs.map} +1 -1
  43. package/dist/{chunk-KCSIX7CY.js → chunk-6XIXNH26.js} +3 -3
  44. package/dist/{chunk-KCSIX7CY.js.map → chunk-6XIXNH26.js.map} +1 -1
  45. package/dist/{chunk-YBJ4QGNH.cjs → chunk-ANLTECZ6.cjs} +8 -8
  46. package/dist/{chunk-YBJ4QGNH.cjs.map → chunk-ANLTECZ6.cjs.map} +1 -1
  47. package/dist/{chunk-Q2XGM372.cjs → chunk-AR6A2PMV.cjs} +4 -4
  48. package/dist/{chunk-Q2XGM372.cjs.map → chunk-AR6A2PMV.cjs.map} +1 -1
  49. package/dist/{chunk-KBO75NLM.cjs → chunk-AYJZRBHG.cjs} +7 -7
  50. package/dist/{chunk-KBO75NLM.cjs.map → chunk-AYJZRBHG.cjs.map} +1 -1
  51. package/dist/{chunk-FM3IRQJW.cjs → chunk-AYKE6USO.cjs} +12 -12
  52. package/dist/chunk-AYKE6USO.cjs.map +1 -0
  53. package/dist/chunk-BGJZVJJM.cjs +63 -0
  54. package/dist/chunk-BGJZVJJM.cjs.map +1 -0
  55. package/dist/{chunk-ECW2R2KF.cjs → chunk-BPL5RLNN.cjs} +27 -27
  56. package/dist/{chunk-ECW2R2KF.cjs.map → chunk-BPL5RLNN.cjs.map} +1 -1
  57. package/dist/{chunk-CNHUJRQ4.cjs → chunk-EFEFLBRM.cjs} +21 -55
  58. package/dist/chunk-EFEFLBRM.cjs.map +1 -0
  59. package/dist/{chunk-ETZ5A3GU.js → chunk-EVO2UNX3.js} +3 -3
  60. package/dist/chunk-EVO2UNX3.js.map +1 -0
  61. package/dist/{chunk-P6RIBIVN.js → chunk-FMJGVAWX.js} +8 -9
  62. package/dist/chunk-FMJGVAWX.js.map +1 -0
  63. package/dist/chunk-H5542IOD.cjs +108 -0
  64. package/dist/chunk-H5542IOD.cjs.map +1 -0
  65. package/dist/{chunk-VF5EUAIV.js → chunk-H7PHANI4.js} +3 -3
  66. package/dist/chunk-H7PHANI4.js.map +1 -0
  67. package/dist/chunk-HQJL7FSY.js +58 -0
  68. package/dist/chunk-HQJL7FSY.js.map +1 -0
  69. package/dist/{chunk-OFV3PRF2.cjs → chunk-HRDVQERS.cjs} +7 -7
  70. package/dist/{chunk-OFV3PRF2.cjs.map → chunk-HRDVQERS.cjs.map} +1 -1
  71. package/dist/{chunk-3VULDTNL.cjs → chunk-HUNX4CQG.cjs} +4 -4
  72. package/dist/chunk-HUNX4CQG.cjs.map +1 -0
  73. package/dist/{chunk-2BHDRVVL.cjs → chunk-I6I34FDU.cjs} +38 -37
  74. package/dist/chunk-I6I34FDU.cjs.map +1 -0
  75. package/dist/chunk-IWVOZREF.js +12 -0
  76. package/dist/chunk-IWVOZREF.js.map +1 -0
  77. package/dist/chunk-J7YHBMBB.js +1834 -0
  78. package/dist/chunk-J7YHBMBB.js.map +1 -0
  79. package/dist/{chunk-SDOEHEJP.js → chunk-JMQLTMJ7.js} +53 -5
  80. package/dist/chunk-JMQLTMJ7.js.map +1 -0
  81. package/dist/{chunk-TF7HN5EU.js → chunk-JNE2XEXD.js} +12 -12
  82. package/dist/chunk-JNE2XEXD.js.map +1 -0
  83. package/dist/{chunk-QKR5LWDO.js → chunk-K7CZFNJ2.js} +7 -7
  84. package/dist/{chunk-QKR5LWDO.js.map → chunk-K7CZFNJ2.js.map} +1 -1
  85. package/dist/{chunk-4RPBUMHB.cjs → chunk-KMZO5W6D.cjs} +4 -4
  86. package/dist/chunk-KMZO5W6D.cjs.map +1 -0
  87. package/dist/{chunk-FTZ45WHY.js → chunk-KNCJSPXV.js} +5020 -4014
  88. package/dist/chunk-KNCJSPXV.js.map +1 -0
  89. package/dist/{chunk-3OCNUKGX.js → chunk-KQWC4YBX.js} +3 -3
  90. package/dist/{chunk-3OCNUKGX.js.map → chunk-KQWC4YBX.js.map} +1 -1
  91. package/dist/{chunk-TC3RQNEX.cjs → chunk-L4KWTDFE.cjs} +5 -5
  92. package/dist/chunk-L4KWTDFE.cjs.map +1 -0
  93. package/dist/{chunk-VTTZZ4FN.js → chunk-LH3JAZ33.js} +5 -5
  94. package/dist/chunk-LH3JAZ33.js.map +1 -0
  95. package/dist/{chunk-P2YM67Y5.cjs → chunk-LQYPOWKN.cjs} +14 -21
  96. package/dist/chunk-LQYPOWKN.cjs.map +1 -0
  97. package/dist/{chunk-RATEAOKT.js → chunk-NOXGEQQR.js} +7 -13
  98. package/dist/chunk-NOXGEQQR.js.map +1 -0
  99. package/dist/{chunk-NPLGB4LI.cjs → chunk-NUAC5GTQ.cjs} +5115 -4077
  100. package/dist/chunk-NUAC5GTQ.cjs.map +1 -0
  101. package/dist/chunk-NYECCTB3.js +101 -0
  102. package/dist/chunk-NYECCTB3.js.map +1 -0
  103. package/dist/{chunk-GC2FSPSQ.cjs → chunk-O5E3NKPI.cjs} +128 -58
  104. package/dist/chunk-O5E3NKPI.cjs.map +1 -0
  105. package/dist/{chunk-SZOFGU7W.js → chunk-O5XREO7H.js} +3 -3
  106. package/dist/{chunk-SZOFGU7W.js.map → chunk-O5XREO7H.js.map} +1 -1
  107. package/dist/{chunk-OOU4QLRK.cjs → chunk-OHCYJFV2.cjs} +9 -9
  108. package/dist/{chunk-OOU4QLRK.cjs.map → chunk-OHCYJFV2.cjs.map} +1 -1
  109. package/dist/{chunk-DEPF5LQI.js → chunk-OKRYNQPH.js} +3 -3
  110. package/dist/chunk-OKRYNQPH.js.map +1 -0
  111. package/dist/{chunk-KFMRBZQK.js → chunk-PCL7IEZO.js} +21 -20
  112. package/dist/chunk-PCL7IEZO.js.map +1 -0
  113. package/dist/chunk-RFB7B6XG.cjs +169 -0
  114. package/dist/chunk-RFB7B6XG.cjs.map +1 -0
  115. package/dist/{chunk-SZSJGZSO.js → chunk-SQQU3WRB.js} +714 -5
  116. package/dist/chunk-SQQU3WRB.js.map +1 -0
  117. package/dist/{chunk-OALEDG67.cjs → chunk-TNESYDBR.cjs} +5 -5
  118. package/dist/{chunk-OALEDG67.cjs.map → chunk-TNESYDBR.cjs.map} +1 -1
  119. package/dist/chunk-TTS353W2.js +163 -0
  120. package/dist/chunk-TTS353W2.js.map +1 -0
  121. package/dist/{chunk-CROGFB46.cjs → chunk-U7OUZHBH.cjs} +753 -2
  122. package/dist/chunk-U7OUZHBH.cjs.map +1 -0
  123. package/dist/{chunk-BQ77KSXU.js → chunk-UORU5S7Y.js} +3 -3
  124. package/dist/{chunk-BQ77KSXU.js.map → chunk-UORU5S7Y.js.map} +1 -1
  125. package/dist/{chunk-FYZXDZM7.js → chunk-VFF76GTB.js} +4 -4
  126. package/dist/{chunk-FYZXDZM7.js.map → chunk-VFF76GTB.js.map} +1 -1
  127. package/dist/{chunk-E4H5H2C3.cjs → chunk-VYTK2WJB.cjs} +4 -4
  128. package/dist/{chunk-E4H5H2C3.cjs.map → chunk-VYTK2WJB.cjs.map} +1 -1
  129. package/dist/{chunk-XI37A7HH.js → chunk-WKSP73RU.js} +3 -3
  130. package/dist/{chunk-XI37A7HH.js.map → chunk-WKSP73RU.js.map} +1 -1
  131. package/dist/chunk-WP4VIOOA.cjs +15 -0
  132. package/dist/chunk-WP4VIOOA.cjs.map +1 -0
  133. package/dist/{chunk-YF3QUHKN.cjs → chunk-X3XPXEIM.cjs} +14 -15
  134. package/dist/chunk-X3XPXEIM.cjs.map +1 -0
  135. package/dist/{chunk-VZPFYZZU.cjs → chunk-Z2HEBOA3.cjs} +8 -8
  136. package/dist/{chunk-VZPFYZZU.cjs.map → chunk-Z2HEBOA3.cjs.map} +1 -1
  137. package/dist/{chunk-Q7CQYYZW.cjs → chunk-ZMYW5M75.cjs} +5 -5
  138. package/dist/chunk-ZMYW5M75.cjs.map +1 -0
  139. package/dist/{chunk-7UENVUA6.js → chunk-ZW2AWACP.js} +3 -3
  140. package/dist/{chunk-7UENVUA6.js.map → chunk-ZW2AWACP.js.map} +1 -1
  141. package/dist/citations/index.cjs +10 -10
  142. package/dist/citations/index.js +2 -2
  143. package/dist/collaboration/contacts/contact-form.d.ts +47 -0
  144. package/dist/collaboration/contacts/index.d.ts +3 -1
  145. package/dist/collaboration/contacts/invite-plan.d.ts +46 -0
  146. package/dist/collaboration/contacts/parseEmails.d.ts +7 -0
  147. package/dist/collaboration/index.cjs +163 -83
  148. package/dist/collaboration/index.js +2 -2
  149. package/dist/components/ActionLink.d.ts +1 -1
  150. package/dist/components/TeamGrid.d.ts +1 -1
  151. package/dist/components/editorial/{ProfileCard.d.ts → EditorialProfileCard.d.ts} +2 -2
  152. package/dist/components/editorial/index.d.ts +1 -1
  153. package/dist/connect/docx.cjs +14 -13
  154. package/dist/connect/docx.d.ts +1 -1
  155. package/dist/connect/docx.js +10 -9
  156. package/dist/connect/index.cjs +22097 -14743
  157. package/dist/connect/index.cjs.map +1 -1
  158. package/dist/connect/index.d.ts +11 -7
  159. package/dist/connect/index.js +15203 -7912
  160. package/dist/connect/index.js.map +1 -1
  161. package/dist/connect/viewer.cjs +83 -138
  162. package/dist/connect/viewer.cjs.map +1 -1
  163. package/dist/connect/viewer.d.ts +3 -2
  164. package/dist/connect/viewer.js +25 -82
  165. package/dist/connect/viewer.js.map +1 -1
  166. package/dist/connection/ConnectedSettings.d.ts +3 -2
  167. package/dist/connection/ConnectionProvider.d.ts +5 -4
  168. package/dist/connection/StreamedArtifact.d.ts +1 -1
  169. package/dist/connection/billing/index.d.ts +3 -3
  170. package/dist/connection/billing/support.d.ts +4 -7
  171. package/dist/connection/contacts/ConnectedAddContacts.d.ts +9 -0
  172. package/dist/connection/contacts/ConnectedContactCardForm.d.ts +11 -0
  173. package/dist/connection/contacts/ConnectedContactToggle.d.ts +16 -0
  174. package/dist/connection/contacts/ConnectedContactsDirectory.d.ts +10 -0
  175. package/dist/connection/contacts/ImportVcf.d.ts +29 -0
  176. package/dist/connection/contacts/index.d.ts +5 -0
  177. package/dist/connection/defaultHost.d.ts +9 -0
  178. package/dist/connection/docx/ConnectedNativeDocxEditor.d.ts +3 -3
  179. package/dist/connection/docx/support.d.ts +10 -9
  180. package/dist/connection/files/bulk/ConnectedFilesBulkActions.d.ts +22 -0
  181. package/dist/connection/files/bulk/useDocumentBulkActions.d.ts +19 -0
  182. package/dist/connection/files/explorer/FileTiles.d.ts +6 -3
  183. package/dist/connection/files/fields/ConnectedBulkTagEditor.d.ts +16 -0
  184. package/dist/connection/files/fields/ConnectedFieldsEditor.d.ts +40 -0
  185. package/dist/connection/files/fields/ConnectedFieldsManager.d.ts +33 -0
  186. package/dist/connection/files/fields/ConnectedTagEditorDialog.d.ts +20 -0
  187. package/dist/connection/files/fields/ConnectedTagForm.d.ts +54 -0
  188. package/dist/connection/files/fields/DocumentFieldParts.d.ts +33 -0
  189. package/dist/connection/files/fields/DocumentUser.d.ts +11 -0
  190. package/dist/connection/files/fields/documentField.d.ts +48 -0
  191. package/dist/connection/files/fields/useFieldWrites.d.ts +20 -0
  192. package/dist/connection/files/fields/useFieldsApply.d.ts +49 -0
  193. package/dist/connection/files/fields/useMemberLookup.d.ts +3 -0
  194. package/dist/connection/files/grid/ConnectedTagEntity.d.ts +19 -0
  195. package/dist/connection/files/grid/cells.d.ts +85 -0
  196. package/dist/connection/files/grid/documentColumns.d.ts +66 -0
  197. package/dist/connection/files/grid/documentGridBus.d.ts +48 -0
  198. package/dist/connection/files/grid/documentStatus.d.ts +43 -0
  199. package/dist/connection/files/grid/familyMeta.d.ts +21 -0
  200. package/dist/connection/files/grid/tagColumn.d.ts +23 -0
  201. package/dist/connection/files/grid/useDocumentGridSync.d.ts +48 -0
  202. package/dist/connection/files/grid/useDocumentTable.d.ts +30 -0
  203. package/dist/connection/files/index.d.ts +36 -2
  204. package/dist/connection/files/move/ConnectedMoveToFolder.d.ts +31 -0
  205. package/dist/connection/files/page/ConnectedFilesPage.d.ts +86 -0
  206. package/dist/connection/files/page/DocumentsFilterBarActions.d.ts +39 -0
  207. package/dist/connection/files/page/DocumentsUploadButton.d.ts +25 -0
  208. package/dist/connection/files/page/PersistedGridView.d.ts +6 -0
  209. package/dist/connection/files/page/ProgressiveLoadingChip.d.ts +12 -0
  210. package/dist/connection/files/page/useDocumentNavigation.d.ts +20 -0
  211. package/dist/connection/files/review/ConnectedAiReview.d.ts +40 -0
  212. package/dist/connection/files/review/reviewProgress.d.ts +2 -0
  213. package/dist/connection/files/store.d.ts +96 -0
  214. package/dist/connection/files/useDocumentFilters.d.ts +54 -0
  215. package/dist/connection/files/views/ViewSelector.d.ts +33 -0
  216. package/dist/connection/files/views/tableViews.d.ts +22 -0
  217. package/dist/connection/files/views/useTableViews.d.ts +22 -0
  218. package/dist/connection/mail/ConnectedMailbox.d.ts +2 -2
  219. package/dist/connection/messenger/ChatAttachments.d.ts +15 -0
  220. package/dist/connection/messenger/ConnectedChatThread.d.ts +21 -0
  221. package/dist/connection/messenger/ConnectedGroupMembers.d.ts +20 -0
  222. package/dist/connection/messenger/ConnectedMessenger.d.ts +52 -0
  223. package/dist/connection/messenger/index.d.ts +6 -0
  224. package/dist/connection/messenger/types.d.ts +103 -0
  225. package/dist/connection/messenger/useMessengerRows.d.ts +19 -0
  226. package/dist/connection/tags/ConnectedTagsPage.d.ts +2 -35
  227. package/dist/connection/viewer/ConnectedDocumentToolsProvider.d.ts +19 -2
  228. package/dist/connection/viewer/ConnectedDocumentViewer.d.ts +1 -1
  229. package/dist/connection/viewer/support.d.ts +21 -15
  230. package/dist/connection/workspaceData.d.ts +134 -8
  231. package/dist/facts/index.cjs +3 -3
  232. package/dist/facts/index.js +2 -2
  233. package/dist/files/bulk/BulkActionsBar.d.ts +9 -5
  234. package/dist/files/cells/DocumentNameCell.d.ts +4 -2
  235. package/dist/files/cells/MultiSelectCellEditor.d.ts +13 -0
  236. package/dist/files/cells/RelatedDocsCell.d.ts +2 -1
  237. package/dist/files/cells/index.d.ts +1 -0
  238. package/dist/files/documentColumns.d.ts +15 -0
  239. package/dist/files/folders/DocumentsFolderButton.d.ts +26 -0
  240. package/dist/files/folders/FolderTreePicker.d.ts +16 -0
  241. package/dist/files/folders/index.d.ts +2 -0
  242. package/dist/files/index.cjs +430 -434
  243. package/dist/files/index.d.ts +4 -1
  244. package/dist/files/index.js +5 -5
  245. package/dist/files/navigator/DocumentSearchList.d.ts +19 -0
  246. package/dist/files/navigator/ExplorerFileNavigator.d.ts +23 -0
  247. package/dist/files/navigator/NavDocumentPicker.d.ts +15 -0
  248. package/dist/files/navigator/NavigatorPickerBar.d.ts +26 -0
  249. package/dist/files/navigator/index.d.ts +5 -0
  250. package/dist/files/navigator/types.d.ts +7 -0
  251. package/dist/files/tags/BulkTagEditor.d.ts +2 -1
  252. package/dist/files/tags/index.d.ts +0 -2
  253. package/dist/files/visibility.d.ts +6 -5
  254. package/dist/home/StartTiles.d.ts +1 -1
  255. package/dist/home/index.cjs +30 -30
  256. package/dist/home/index.js +5 -5
  257. package/dist/index.cjs +684 -694
  258. package/dist/index.cjs.map +1 -1
  259. package/dist/index.d.ts +2 -1
  260. package/dist/index.js +22 -134
  261. package/dist/index.js.map +1 -1
  262. package/dist/provider/{BlocksProvider.d.ts → environment.d.ts} +8 -10
  263. package/dist/provider/host.d.ts +44 -0
  264. package/dist/retrieval/index.cjs +4 -4
  265. package/dist/retrieval/index.js +2 -2
  266. package/dist/shell/index.cjs +44 -44
  267. package/dist/shell/index.js +3 -3
  268. package/dist/shell/types.d.ts +1 -1
  269. package/dist/site/index.cjs +61 -61
  270. package/dist/site/index.js +2 -2
  271. package/dist/studio/index.cjs +86 -87
  272. package/dist/studio/index.cjs.map +1 -1
  273. package/dist/studio/index.js +15 -16
  274. package/dist/studio/index.js.map +1 -1
  275. package/dist/workflow-canvas/index.cjs +28 -27
  276. package/dist/workflow-canvas/index.cjs.map +1 -1
  277. package/dist/workflow-canvas/index.js +11 -10
  278. package/dist/workflow-canvas/index.js.map +1 -1
  279. package/dist/workspaces/WorkspaceCard.d.ts +1 -1
  280. package/dist/workspaces/index.cjs +20 -20
  281. package/dist/workspaces/index.js +4 -4
  282. package/node_modules/@arbidocs/coedit/package.json +1 -1
  283. package/package.json +5 -5
  284. package/dist/ConnectedStreamedWordArtifact-CWFR6A37.cjs.map +0 -1
  285. package/dist/FactTextEditor-YESAU2IJ.js.map +0 -1
  286. package/dist/FactTextEditor-YUPBCTXK.cjs.map +0 -1
  287. package/dist/WorkspaceTableView-DWUE4VQF.js.map +0 -1
  288. package/dist/WorkspaceTableView-EYLEUZZT.cjs.map +0 -1
  289. package/dist/chunk-2BHDRVVL.cjs.map +0 -1
  290. package/dist/chunk-3VULDTNL.cjs.map +0 -1
  291. package/dist/chunk-4RPBUMHB.cjs.map +0 -1
  292. package/dist/chunk-5ZIYPZYE.js +0 -2748
  293. package/dist/chunk-5ZIYPZYE.js.map +0 -1
  294. package/dist/chunk-6I6CVX5G.cjs +0 -22
  295. package/dist/chunk-6I6CVX5G.cjs.map +0 -1
  296. package/dist/chunk-7NL6WJER.cjs +0 -682
  297. package/dist/chunk-7NL6WJER.cjs.map +0 -1
  298. package/dist/chunk-CB4TIDEX.cjs +0 -54
  299. package/dist/chunk-CB4TIDEX.cjs.map +0 -1
  300. package/dist/chunk-CNHUJRQ4.cjs.map +0 -1
  301. package/dist/chunk-CROGFB46.cjs.map +0 -1
  302. package/dist/chunk-DEPF5LQI.js.map +0 -1
  303. package/dist/chunk-ETZ5A3GU.js.map +0 -1
  304. package/dist/chunk-EYJMMGXF.js +0 -19
  305. package/dist/chunk-EYJMMGXF.js.map +0 -1
  306. package/dist/chunk-F57LNUSZ.js.map +0 -1
  307. package/dist/chunk-FAXXN7KI.cjs.map +0 -1
  308. package/dist/chunk-FM3IRQJW.cjs.map +0 -1
  309. package/dist/chunk-FTZ45WHY.js.map +0 -1
  310. package/dist/chunk-GC2FSPSQ.cjs.map +0 -1
  311. package/dist/chunk-KDLX5AA7.js +0 -49
  312. package/dist/chunk-KDLX5AA7.js.map +0 -1
  313. package/dist/chunk-KFMRBZQK.js.map +0 -1
  314. package/dist/chunk-MNG7N6M2.js.map +0 -1
  315. package/dist/chunk-NPLGB4LI.cjs.map +0 -1
  316. package/dist/chunk-P2YM67Y5.cjs.map +0 -1
  317. package/dist/chunk-P6RIBIVN.js.map +0 -1
  318. package/dist/chunk-Q7CQYYZW.cjs.map +0 -1
  319. package/dist/chunk-QJFJ5JBF.cjs +0 -2838
  320. package/dist/chunk-QJFJ5JBF.cjs.map +0 -1
  321. package/dist/chunk-RATEAOKT.js.map +0 -1
  322. package/dist/chunk-SDOEHEJP.js.map +0 -1
  323. package/dist/chunk-SZSJGZSO.js.map +0 -1
  324. package/dist/chunk-TC3RQNEX.cjs.map +0 -1
  325. package/dist/chunk-TF7HN5EU.js.map +0 -1
  326. package/dist/chunk-VF5EUAIV.js.map +0 -1
  327. package/dist/chunk-VTTZZ4FN.js.map +0 -1
  328. package/dist/chunk-WK6FVIF7.js +0 -654
  329. package/dist/chunk-WK6FVIF7.js.map +0 -1
  330. package/dist/chunk-YF3QUHKN.cjs.map +0 -1
  331. package/dist/connection/ArbiAppProvider.d.ts +0 -16
  332. package/dist/connection/files/support.d.ts +0 -40
  333. package/dist/files/tags/DocTagPopover.d.ts +0 -113
  334. package/dist/files/tags/TagManager.d.ts +0 -54
@@ -0,0 +1,1891 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var chunkNUAC5GTQ_cjs = require('./chunk-NUAC5GTQ.cjs');
5
+ var chunk5Y6V7F6W_cjs = require('./chunk-5Y6V7F6W.cjs');
6
+ var chunkMHVNT4J3_cjs = require('./chunk-MHVNT4J3.cjs');
7
+ var chunkULWRNGGE_cjs = require('./chunk-ULWRNGGE.cjs');
8
+ var lucideReact = require('lucide-react');
9
+ var ui = require('@arbidocs/react/ui');
10
+ var jsxRuntime = require('react/jsx-runtime');
11
+ var react = require('react');
12
+
13
+ var DEFAULT_EXPORT_LABELS = {
14
+ export: "Export, copy or move",
15
+ selected: (count) => `${count} selected`,
16
+ exportMethod: "Where to",
17
+ downloadToComputer: "Download as files",
18
+ downloadDescription: "A ZIP with the files (every version), one data file per kind (JSON) and a manifest",
19
+ copyToWorkspace: "Copy to another workspace",
20
+ copyDescription: "Re-encrypted for the target workspace; nothing changes here",
21
+ moveToWorkspace: "Move to another workspace",
22
+ moveDescription: "Copied first, then removed from here \u2014 only what you may delete here",
23
+ exportColumns: "Document table (index.csv)",
24
+ columnsVisible: "Visible columns (from current table view)",
25
+ columnsAll: "All columns (including hidden)",
26
+ columnsFiles: "None (files and data only)",
27
+ columnsHelp: "Which document columns go into index.csv",
28
+ selectTargetWorkspace: "Select Target Workspace",
29
+ noOtherWorkspaces: "No other workspaces available",
30
+ member: "member",
31
+ members: "members",
32
+ result: "Result",
33
+ noItemDetail: "The server returned no per-item detail.",
34
+ done: "Done",
35
+ cancel: "Cancel"
36
+ };
37
+ function ExportModalTitle({
38
+ workspace,
39
+ entityIcon,
40
+ entityPlural,
41
+ selectedCount,
42
+ labels
43
+ }) {
44
+ const l = { ...DEFAULT_EXPORT_LABELS, ...labels };
45
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-col gap-1", children: [
46
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
47
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: l.export }),
48
+ selectedCount > 0 && /* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { className: "bg-accent px-2.5 py-0.5 text-accent-foreground hover:bg-accent", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold", children: l.selected(selectedCount) }) })
49
+ ] }),
50
+ workspace && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 items-center gap-1.5 text-sm font-normal text-muted-foreground", children: [
51
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0", children: workspace.icon }),
52
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", title: workspace.name, children: workspace.name }),
53
+ /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", children: "/" }),
54
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0", children: entityIcon }),
55
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: entityPlural })
56
+ ] })
57
+ ] });
58
+ }
59
+ function ExportMethodChooser({
60
+ mode,
61
+ onModeChange,
62
+ columnsMode,
63
+ onColumnsModeChange,
64
+ showColumns = true,
65
+ moveDisabledReason,
66
+ labels,
67
+ columnsTestId
68
+ }) {
69
+ const l = { ...DEFAULT_EXPORT_LABELS, ...labels };
70
+ const card = "flex cursor-pointer items-start space-x-3 rounded-lg bg-muted p-4 transition-colors hover:bg-accent";
71
+ const options = [
72
+ {
73
+ value: "download",
74
+ icon: lucideReact.Download,
75
+ title: l.downloadToComputer,
76
+ description: l.downloadDescription
77
+ },
78
+ { value: "copy", icon: lucideReact.Copy, title: l.copyToWorkspace, description: l.copyDescription },
79
+ {
80
+ value: "move",
81
+ icon: lucideReact.FolderInput,
82
+ title: l.moveToWorkspace,
83
+ description: moveDisabledReason ?? l.moveDescription,
84
+ disabledReason: moveDisabledReason
85
+ }
86
+ ];
87
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkULWRNGGE_cjs.ModalSection, { children: [
88
+ /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalSectionTitle, { children: l.exportMethod }),
89
+ /* @__PURE__ */ jsxRuntime.jsx(
90
+ ui.RadioGroup,
91
+ {
92
+ value: mode,
93
+ onValueChange: (v) => onModeChange(v),
94
+ className: "space-y-3",
95
+ children: options.map((option) => {
96
+ const Icon = option.icon;
97
+ const disabled = !!option.disabledReason;
98
+ return /* @__PURE__ */ jsxRuntime.jsxs(
99
+ "div",
100
+ {
101
+ className: ui.cn(card, disabled && "cursor-not-allowed opacity-60 hover:bg-muted"),
102
+ children: [
103
+ /* @__PURE__ */ jsxRuntime.jsx(
104
+ ui.RadioGroupItem,
105
+ {
106
+ value: option.value,
107
+ id: `export-mode-${option.value}`,
108
+ className: "mt-1",
109
+ disabled
110
+ }
111
+ ),
112
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", onClick: () => !disabled && onModeChange(option.value), children: [
113
+ /* @__PURE__ */ jsxRuntime.jsxs(
114
+ ui.Label,
115
+ {
116
+ htmlFor: `export-mode-${option.value}`,
117
+ className: "flex cursor-pointer items-center gap-2 font-medium",
118
+ children: [
119
+ /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-4" }),
120
+ option.title
121
+ ]
122
+ }
123
+ ),
124
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-sm text-muted-foreground", children: option.description }),
125
+ option.value === "download" && mode === "download" && showColumns && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3", onClick: (e) => e.stopPropagation(), children: [
126
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm font-medium text-foreground", children: l.exportColumns }),
127
+ /* @__PURE__ */ jsxRuntime.jsxs(
128
+ "select",
129
+ {
130
+ value: columnsMode,
131
+ onChange: (e) => onColumnsModeChange(e.target.value),
132
+ className: "mt-1.5 w-full rounded-md border border-input bg-background px-3 py-2 text-sm pointer-coarse:min-h-11",
133
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(columnsTestId, { testId: "export-columns-selector" }),
134
+ children: [
135
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "visible", children: l.columnsVisible }),
136
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "all", children: l.columnsAll }),
137
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "files", children: l.columnsFiles })
138
+ ]
139
+ }
140
+ ),
141
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1.5 text-sm text-muted-foreground", children: l.columnsHelp })
142
+ ] })
143
+ ] })
144
+ ]
145
+ },
146
+ option.value
147
+ );
148
+ })
149
+ }
150
+ )
151
+ ] });
152
+ }
153
+ function ExportWorkspacePicker({
154
+ workspaces,
155
+ selectedId,
156
+ onSelect,
157
+ labels,
158
+ testId
159
+ }) {
160
+ const l = { ...DEFAULT_EXPORT_LABELS, ...labels };
161
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkULWRNGGE_cjs.ModalSection, { children: [
162
+ /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalSectionTitle, { children: l.selectTargetWorkspace }),
163
+ /* @__PURE__ */ jsxRuntime.jsx(ui.ScrollArea, { className: "h-[300px] rounded-lg bg-muted", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2 p-2", children: workspaces.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "py-4 text-center text-sm text-muted-foreground", children: l.noOtherWorkspaces }) : workspaces.map((w) => /* @__PURE__ */ jsxRuntime.jsxs(
164
+ "button",
165
+ {
166
+ type: "button",
167
+ onClick: () => onSelect(w.id),
168
+ "aria-pressed": selectedId === w.id,
169
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testId?.(w.id), { testId: `export-workspace-${w.id}` }),
170
+ className: ui.cn(
171
+ "w-full rounded-lg p-3 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
172
+ selectedId === w.id ? "bg-accent ring-1 ring-primary/40" : "bg-background hover:bg-accent/60"
173
+ ),
174
+ children: [
175
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2 flex items-start gap-3", children: [
176
+ w.icon,
177
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
178
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate font-medium", children: w.name }),
179
+ w.description && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 truncate text-sm text-muted-foreground", children: w.description })
180
+ ] })
181
+ ] }),
182
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between border-t border-border pt-2", children: [
183
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 text-sm text-muted-foreground", children: [
184
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Users, { className: "size-3" }),
185
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
186
+ w.memberCount,
187
+ " ",
188
+ w.memberCount === 1 ? l.member : l.members
189
+ ] })
190
+ ] }),
191
+ w.members
192
+ ] })
193
+ ]
194
+ },
195
+ w.id
196
+ )) }) })
197
+ ] });
198
+ }
199
+ var RESULT_ICON = { success: lucideReact.CheckCircle2, warning: lucideReact.AlertTriangle, error: lucideReact.XCircle };
200
+ var RESULT_ICON_CLASS = {
201
+ success: "text-green-text",
202
+ warning: "text-yellow-text",
203
+ error: "text-red-text"
204
+ };
205
+ function ExportResultsReport({
206
+ summary,
207
+ rows,
208
+ onDone,
209
+ labels,
210
+ testIds
211
+ }) {
212
+ const l = { ...DEFAULT_EXPORT_LABELS, ...labels };
213
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkULWRNGGE_cjs.ModalSection, { "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.root, { testId: "export-results" }), children: [
214
+ /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalSectionTitle, { children: l.result }),
215
+ /* @__PURE__ */ jsxRuntime.jsx(
216
+ "p",
217
+ {
218
+ className: "text-sm text-muted-foreground",
219
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.summary, { testId: "export-results-summary" }),
220
+ children: summary
221
+ }
222
+ ),
223
+ /* @__PURE__ */ jsxRuntime.jsx(ui.ScrollArea, { className: "mt-3 h-[280px] rounded-lg bg-muted", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 p-2", children: [
224
+ rows.map((row) => {
225
+ const Icon = RESULT_ICON[row.tone];
226
+ return /* @__PURE__ */ jsxRuntime.jsxs(
227
+ "div",
228
+ {
229
+ className: "flex items-start gap-2 rounded-md px-2 py-1.5",
230
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.row?.(row.id), {
231
+ testId: `export-result-${row.id}`
232
+ }),
233
+ children: [
234
+ /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: ui.cn("mt-0.5 size-4 shrink-0", RESULT_ICON_CLASS[row.tone]) }),
235
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
236
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
237
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-sm", children: row.name }),
238
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-xs uppercase tracking-wide text-muted-foreground", children: row.kind })
239
+ ] }),
240
+ row.detail && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 break-words text-sm text-muted-foreground", children: row.detail })
241
+ ] })
242
+ ]
243
+ },
244
+ row.id
245
+ );
246
+ }),
247
+ rows.length === 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "py-4 text-center text-sm text-muted-foreground", children: l.noItemDetail })
248
+ ] }) }),
249
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsx(
250
+ ui.Button,
251
+ {
252
+ onClick: onDone,
253
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.done, { testId: "export-results-done-button" }),
254
+ children: l.done
255
+ }
256
+ ) })
257
+ ] });
258
+ }
259
+ function ExportFooter({
260
+ onCancel,
261
+ onSubmit,
262
+ submitLabel,
263
+ submitDisabled,
264
+ labels,
265
+ testIds
266
+ }) {
267
+ const l = { ...DEFAULT_EXPORT_LABELS, ...labels };
268
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "sticky bottom-0 flex flex-col-reverse sm:flex-row sm:justify-end gap-2 border-t border-border bg-background p-4", children: [
269
+ /* @__PURE__ */ jsxRuntime.jsx(
270
+ ui.Button,
271
+ {
272
+ variant: "outline",
273
+ onClick: onCancel,
274
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.cancel, { testId: "export-cancel-button" }),
275
+ children: l.cancel
276
+ }
277
+ ),
278
+ /* @__PURE__ */ jsxRuntime.jsx(
279
+ ui.Button,
280
+ {
281
+ onClick: onSubmit,
282
+ disabled: submitDisabled,
283
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.submit, { testId: "export-submit-button" }),
284
+ children: submitLabel
285
+ }
286
+ )
287
+ ] });
288
+ }
289
+ var DEFAULT_TRANSFER_LABELS = {
290
+ what: "What",
291
+ scopeSelection: (count) => `The ${count} selected`,
292
+ scopeLabel: "Everything with a label",
293
+ scopeAll: "Everything in this workspace",
294
+ chooseLabel: "Label",
295
+ include: "Include",
296
+ references: "Documents they cite",
297
+ referencesInclude: "Bring them along",
298
+ referencesLink: "Leave them here (the citation keeps pointing here)",
299
+ referencesHelp: "Notes, conversations and automations can cite documents outside your selection.",
300
+ conflicts: "Already in the target",
301
+ conflictSkip: "Skip it (same-named file or automation, identical note)",
302
+ conflictKeepBoth: 'Keep both \u2014 the copy is renamed "name (2)"',
303
+ summary: "This will include",
304
+ summaryLoading: "Working out what is included\u2026",
305
+ hide: "Close \u2014 it keeps going",
306
+ cancelJob: "Stop",
307
+ resume: "Resume"
308
+ };
309
+ function TransferScopeChooser({
310
+ scope,
311
+ onScopeChange,
312
+ selectedCount,
313
+ labelOptions,
314
+ labelId,
315
+ onLabelChange,
316
+ labels
317
+ }) {
318
+ const l = { ...DEFAULT_TRANSFER_LABELS, ...labels };
319
+ const choices = [
320
+ { value: "selection", title: l.scopeSelection(selectedCount), hidden: selectedCount === 0 },
321
+ { value: "label", title: l.scopeLabel, disabled: labelOptions.length === 0 },
322
+ { value: "all", title: l.scopeAll }
323
+ ];
324
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkULWRNGGE_cjs.ModalSection, { "data-testid": "transfer-scope", children: [
325
+ /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalSectionTitle, { children: l.what }),
326
+ /* @__PURE__ */ jsxRuntime.jsx(
327
+ ui.RadioGroup,
328
+ {
329
+ value: scope,
330
+ onValueChange: (v) => onScopeChange(v),
331
+ className: "space-y-2",
332
+ children: choices.filter((c) => !c.hidden).map((c) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
333
+ /* @__PURE__ */ jsxRuntime.jsx(
334
+ ui.RadioGroupItem,
335
+ {
336
+ value: c.value,
337
+ id: `transfer-scope-${c.value}`,
338
+ disabled: c.disabled,
339
+ "data-testid": `transfer-scope-${c.value}`
340
+ }
341
+ ),
342
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: `transfer-scope-${c.value}`, className: "cursor-pointer", children: c.title }),
343
+ c.value === "label" && scope === "label" && /* @__PURE__ */ jsxRuntime.jsx(
344
+ "select",
345
+ {
346
+ "aria-label": l.chooseLabel,
347
+ value: labelId ?? "",
348
+ onChange: (e) => onLabelChange(e.target.value),
349
+ className: "min-w-0 flex-1 rounded-md border border-input bg-background px-2 py-1 text-sm pointer-coarse:min-h-11",
350
+ "data-testid": "transfer-scope-label-select",
351
+ children: labelOptions.map((option) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: option.id, children: option.name }, option.id))
352
+ }
353
+ )
354
+ ] }, c.value))
355
+ }
356
+ )
357
+ ] });
358
+ }
359
+ function TransferKindsPicker({
360
+ options,
361
+ selected,
362
+ onToggle,
363
+ labels
364
+ }) {
365
+ const l = { ...DEFAULT_TRANSFER_LABELS, ...labels };
366
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkULWRNGGE_cjs.ModalSection, { "data-testid": "transfer-kinds", children: [
367
+ /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalSectionTitle, { children: l.include }),
368
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-2 sm:grid-cols-2", children: options.map((option) => {
369
+ const id = `transfer-kind-${option.kind}`;
370
+ return /* @__PURE__ */ jsxRuntime.jsxs(
371
+ "div",
372
+ {
373
+ className: "flex items-center gap-2 rounded-md bg-muted px-3 py-2",
374
+ children: [
375
+ /* @__PURE__ */ jsxRuntime.jsx(
376
+ ui.Checkbox,
377
+ {
378
+ id,
379
+ checked: selected.includes(option.kind),
380
+ onCheckedChange: (checked) => onToggle(option.kind, checked === true),
381
+ "data-testid": id
382
+ }
383
+ ),
384
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: id, className: "flex-1 cursor-pointer", children: option.label }),
385
+ option.count !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(
386
+ "span",
387
+ {
388
+ className: "text-sm tabular-nums text-muted-foreground",
389
+ "data-testid": `${id}-count`,
390
+ children: option.count
391
+ }
392
+ )
393
+ ]
394
+ },
395
+ option.kind
396
+ );
397
+ }) })
398
+ ] });
399
+ }
400
+ function ChoiceRows({
401
+ title,
402
+ value,
403
+ onChange,
404
+ choices,
405
+ help,
406
+ testId
407
+ }) {
408
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkULWRNGGE_cjs.ModalSection, { "data-testid": testId, children: [
409
+ /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalSectionTitle, { children: title }),
410
+ help && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-sm text-muted-foreground", children: help }),
411
+ /* @__PURE__ */ jsxRuntime.jsx(ui.RadioGroup, { value, onValueChange: (v) => onChange(v), className: "space-y-2", children: choices.map((c) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
412
+ /* @__PURE__ */ jsxRuntime.jsx(
413
+ ui.RadioGroupItem,
414
+ {
415
+ value: c.value,
416
+ id: `${testId}-${c.value}`,
417
+ "data-testid": `${testId}-${c.value}`
418
+ }
419
+ ),
420
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: `${testId}-${c.value}`, className: "cursor-pointer", children: c.title })
421
+ ] }, c.value)) })
422
+ ] });
423
+ }
424
+ function TransferReferencesChooser({
425
+ value,
426
+ onChange,
427
+ labels
428
+ }) {
429
+ const l = { ...DEFAULT_TRANSFER_LABELS, ...labels };
430
+ return /* @__PURE__ */ jsxRuntime.jsx(
431
+ ChoiceRows,
432
+ {
433
+ title: l.references,
434
+ help: l.referencesHelp,
435
+ value,
436
+ onChange,
437
+ testId: "transfer-references",
438
+ choices: [
439
+ { value: "include", title: l.referencesInclude },
440
+ { value: "link", title: l.referencesLink }
441
+ ]
442
+ }
443
+ );
444
+ }
445
+ function TransferConflictChooser({
446
+ value,
447
+ onChange,
448
+ labels
449
+ }) {
450
+ const l = { ...DEFAULT_TRANSFER_LABELS, ...labels };
451
+ return /* @__PURE__ */ jsxRuntime.jsx(
452
+ ChoiceRows,
453
+ {
454
+ title: l.conflicts,
455
+ value,
456
+ onChange,
457
+ testId: "transfer-conflict",
458
+ choices: [
459
+ { value: "skip", title: l.conflictSkip },
460
+ { value: "keep_both", title: l.conflictKeepBoth }
461
+ ]
462
+ }
463
+ );
464
+ }
465
+ function TransferPlanSummary({
466
+ lines,
467
+ warnings,
468
+ isLoading,
469
+ labels
470
+ }) {
471
+ const l = { ...DEFAULT_TRANSFER_LABELS, ...labels };
472
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkULWRNGGE_cjs.ModalSection, { "data-testid": "transfer-plan-summary", children: [
473
+ /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalSectionTitle, { children: l.summary }),
474
+ isLoading && lines.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "flex items-center gap-2 text-sm text-muted-foreground", children: [
475
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-4 animate-spin" }),
476
+ l.summaryLoading
477
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-1 text-sm", children: lines.map((line) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start gap-2", children: [
478
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Info, { className: "mt-0.5 size-4 shrink-0 text-muted-foreground" }),
479
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: line })
480
+ ] }, line)) }),
481
+ warnings.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-2 space-y-1 text-sm", "data-testid": "transfer-plan-warnings", children: warnings.map((warning) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start gap-2", children: [
482
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, { className: "mt-0.5 size-4 shrink-0 text-yellow-text" }),
483
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: warning })
484
+ ] }, warning)) })
485
+ ] });
486
+ }
487
+ function TransferProgressView({
488
+ title,
489
+ processed,
490
+ total,
491
+ phaseLabel,
492
+ onHide,
493
+ onCancel,
494
+ isCancelling,
495
+ labels
496
+ }) {
497
+ const l = { ...DEFAULT_TRANSFER_LABELS, ...labels };
498
+ const percent = total > 0 ? Math.min(100, Math.round(processed / total * 100)) : 0;
499
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkULWRNGGE_cjs.ModalSection, { "data-testid": "transfer-progress", children: [
500
+ /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalSectionTitle, { children: title }),
501
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Progress, { value: percent, className: "h-2" }),
502
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "mt-2 text-sm text-muted-foreground", "data-testid": "transfer-progress-text", children: [
503
+ phaseLabel,
504
+ " \xB7 ",
505
+ processed,
506
+ " / ",
507
+ total
508
+ ] }),
509
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 flex justify-end gap-2", children: [
510
+ onCancel && /* @__PURE__ */ jsxRuntime.jsx(
511
+ ui.Button,
512
+ {
513
+ variant: "outline",
514
+ onClick: onCancel,
515
+ disabled: isCancelling,
516
+ "data-testid": "transfer-cancel-button",
517
+ children: l.cancelJob
518
+ }
519
+ ),
520
+ onHide && /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { onClick: onHide, "data-testid": "transfer-hide-button", children: l.hide })
521
+ ] })
522
+ ] });
523
+ }
524
+ function TransferResumeBanner({
525
+ message,
526
+ onResume,
527
+ isResuming,
528
+ labels
529
+ }) {
530
+ const l = { ...DEFAULT_TRANSFER_LABELS, ...labels };
531
+ return /* @__PURE__ */ jsxRuntime.jsxs(
532
+ "div",
533
+ {
534
+ className: ui.cn("flex items-center gap-3 rounded-lg bg-muted p-3 text-sm"),
535
+ "data-testid": "transfer-resume-banner",
536
+ children: [
537
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, { className: "size-4 shrink-0 text-yellow-text" }),
538
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1", children: message }),
539
+ /* @__PURE__ */ jsxRuntime.jsxs(
540
+ ui.Button,
541
+ {
542
+ size: "sm",
543
+ onClick: onResume,
544
+ disabled: isResuming,
545
+ "data-testid": "transfer-resume-button",
546
+ children: [
547
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RotateCcw, { className: "size-4" }),
548
+ l.resume
549
+ ]
550
+ }
551
+ )
552
+ ]
553
+ }
554
+ );
555
+ }
556
+ var DEFAULT_VIEWER_LABELS = {
557
+ shared: "Shared",
558
+ useAsReference: "Use as reference",
559
+ useAsReferenceTitle: "Use as reference for a new image generation",
560
+ crop: "Crop",
561
+ cropTitle: "Crop and save as a new version",
562
+ previousPage: "Previous page",
563
+ nextPage: "Next page",
564
+ zoom: (level) => `Zoom ${level}. Click to zoom in further, then back to fit the page width.`,
565
+ pageInput: "Page number input",
566
+ pageOfTitle: "Click to go to page",
567
+ pageOf: (page, total) => `Page ${page} of ${total}. Click to navigate.`,
568
+ previewUnavailable: "Preview not available",
569
+ cannotPreview: (extension) => `${extension} files cannot be previewed in the browser.`,
570
+ downloadToOpen: "Download to open",
571
+ download: "Download"
572
+ };
573
+ var ViewerFrame = ({
574
+ header,
575
+ compareRow,
576
+ contentId,
577
+ children,
578
+ footer,
579
+ frameRef,
580
+ className,
581
+ testIds
582
+ }) => /* @__PURE__ */ jsxRuntime.jsxs(
583
+ "div",
584
+ {
585
+ ref: frameRef,
586
+ className: ui.cn("flex h-full w-full flex-col", className),
587
+ "data-slot": "viewer-frame",
588
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.root, { testId: "document-viewer" }),
589
+ children: [
590
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "sticky top-0 z-10 bg-background", children: [
591
+ header,
592
+ compareRow && /* @__PURE__ */ jsxRuntime.jsx(
593
+ "div",
594
+ {
595
+ className: "flex flex-wrap items-center gap-1.5 border-t border-border px-3 py-1.5",
596
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.compareRow, { testId: "compare-indicator-row" }),
597
+ children: compareRow
598
+ }
599
+ )
600
+ ] }),
601
+ /* @__PURE__ */ jsxRuntime.jsx(
602
+ "div",
603
+ {
604
+ className: "flex-1 overflow-hidden",
605
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.content, { testId: `document-viewer-content-${contentId}` }),
606
+ children
607
+ }
608
+ ),
609
+ footer
610
+ ]
611
+ }
612
+ );
613
+ function ViewerMessage({ children, testId }) {
614
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full items-center justify-center", "data-testid": testId, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", children }) });
615
+ }
616
+ function ViewerTitle({
617
+ title,
618
+ shared,
619
+ versionLabel,
620
+ shrink,
621
+ labels,
622
+ sharedTestId
623
+ }) {
624
+ const l = { ...DEFAULT_VIEWER_LABELS, ...labels };
625
+ return /* @__PURE__ */ jsxRuntime.jsxs(
626
+ "span",
627
+ {
628
+ className: ui.cn(
629
+ "inline-flex min-w-0 items-center gap-1.5 px-1 py-1 text-sm font-medium",
630
+ shrink ? "shrink" : "shrink-0"
631
+ ),
632
+ title,
633
+ children: [
634
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: title }),
635
+ shared && /* @__PURE__ */ jsxRuntime.jsx(
636
+ "span",
637
+ {
638
+ title: l.shared,
639
+ className: "flex shrink-0 items-center",
640
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(sharedTestId, { testId: "document-title-shared-indicator" }),
641
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Share2, { "aria-label": l.shared, className: "size-3.5 text-muted-foreground" })
642
+ }
643
+ ),
644
+ versionLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-xs font-normal text-muted-foreground", children: versionLabel })
645
+ ]
646
+ }
647
+ );
648
+ }
649
+ function ViewerImageActions({
650
+ compact,
651
+ onUseAsReference,
652
+ onCrop,
653
+ labels,
654
+ testIds
655
+ }) {
656
+ const l = { ...DEFAULT_VIEWER_LABELS, ...labels };
657
+ const size = compact ? "icon" : "sm";
658
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
659
+ onUseAsReference && /* @__PURE__ */ jsxRuntime.jsxs(
660
+ ui.Button,
661
+ {
662
+ onClick: onUseAsReference,
663
+ variant: "outline",
664
+ size,
665
+ title: l.useAsReferenceTitle,
666
+ "aria-label": l.useAsReference,
667
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.useAsReference, {
668
+ testId: "image-use-as-reference-button"
669
+ }),
670
+ className: "pointer-coarse:min-h-11",
671
+ children: [
672
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ImagePlus, { className: "size-4" }),
673
+ !compact && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1", children: l.useAsReference })
674
+ ]
675
+ }
676
+ ),
677
+ /* @__PURE__ */ jsxRuntime.jsxs(
678
+ ui.Button,
679
+ {
680
+ onClick: onCrop,
681
+ variant: "outline",
682
+ size,
683
+ title: l.cropTitle,
684
+ "aria-label": l.crop,
685
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.crop, { testId: "image-crop-button" }),
686
+ className: "pointer-coarse:min-h-11",
687
+ children: [
688
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Crop, { className: "size-4" }),
689
+ !compact && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1", children: l.crop })
690
+ ]
691
+ }
692
+ )
693
+ ] });
694
+ }
695
+ function PdfPageNav({
696
+ canPrev,
697
+ canNext,
698
+ onPrev,
699
+ onNext,
700
+ counter,
701
+ labels,
702
+ testIds
703
+ }) {
704
+ const l = { ...DEFAULT_VIEWER_LABELS, ...labels };
705
+ return /* @__PURE__ */ jsxRuntime.jsxs(
706
+ "div",
707
+ {
708
+ className: "absolute bottom-4 left-1/2 z-10 flex -translate-x-1/2 items-center gap-1 rounded-lg border border-border bg-background/95 px-2 py-1.5 shadow-lg backdrop-blur",
709
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.overlay, { testId: "pdf-page-nav-overlay" }),
710
+ children: [
711
+ /* @__PURE__ */ jsxRuntime.jsx(
712
+ ui.Button,
713
+ {
714
+ variant: "ghost",
715
+ size: "icon",
716
+ className: "size-7 shrink-0 pointer-coarse:size-11",
717
+ onClick: onPrev,
718
+ disabled: !canPrev,
719
+ "aria-label": l.previousPage,
720
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.prev, { testId: "pdf-page-nav-prev" }),
721
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "size-4" })
722
+ }
723
+ ),
724
+ counter,
725
+ /* @__PURE__ */ jsxRuntime.jsx(
726
+ ui.Button,
727
+ {
728
+ variant: "ghost",
729
+ size: "icon",
730
+ className: "size-7 shrink-0 pointer-coarse:size-11",
731
+ onClick: onNext,
732
+ disabled: !canNext,
733
+ "aria-label": l.nextPage,
734
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.next, { testId: "pdf-page-nav-next" }),
735
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "size-4" })
736
+ }
737
+ )
738
+ ]
739
+ }
740
+ );
741
+ }
742
+ function ViewerZoomControl({ zoom, onCycle, labels, testIds }) {
743
+ const l = { ...DEFAULT_VIEWER_LABELS, ...labels };
744
+ const level = `${Math.round(zoom * 100)}%`;
745
+ const isZoomed = Math.abs(zoom - 1) > 0.02;
746
+ return /* @__PURE__ */ jsxRuntime.jsxs(
747
+ ui.Button,
748
+ {
749
+ type: "button",
750
+ variant: "ghost",
751
+ onClick: onCycle,
752
+ title: `Zoom ${level}`,
753
+ "aria-label": l.zoom(level),
754
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.button, { testId: "viewer-zoom-button" }),
755
+ className: "absolute right-3 bottom-4 z-10 h-9 min-w-9 items-center justify-center gap-1 rounded-full border border-border bg-background/95 px-2 shadow-md backdrop-blur pointer-coarse:h-11 pointer-coarse:min-w-11 pointer-coarse:px-2.5",
756
+ children: [
757
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ZoomIn, { className: "size-4" }),
758
+ isZoomed && /* @__PURE__ */ jsxRuntime.jsx(
759
+ "span",
760
+ {
761
+ className: "text-xs font-medium tabular-nums",
762
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.level, { testId: "viewer-zoom-level" }),
763
+ children: level
764
+ }
765
+ )
766
+ ]
767
+ }
768
+ );
769
+ }
770
+ function ViewerControlBar({ children, controls }) {
771
+ return (
772
+ // It fills what its pane leaves below any bars above it (a ViewerPane is a column), never
773
+ // the pane's whole height: that would push the body past the pane by the bars' height.
774
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-0 flex-1 flex-col", children: [
775
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative min-h-0 flex-1", children }),
776
+ controls && /* @__PURE__ */ jsxRuntime.jsx(
777
+ "div",
778
+ {
779
+ "data-testid": "viewer-control-bar",
780
+ className: "relative h-22 shrink-0 border-t border-border bg-background",
781
+ children: controls
782
+ }
783
+ )
784
+ ] })
785
+ );
786
+ }
787
+ var DEFAULT_HTML_VIEWER_LABELS = {
788
+ viewerRegion: "Parsed document viewer",
789
+ pageOfTotal: (page, total) => `Page ${page} of ${total}`,
790
+ documentContent: "Document content",
791
+ page: (n) => `Page ${n}`,
792
+ noContent: "No Content Available",
793
+ noContentDescription: "This document has not been parsed yet or contains no content",
794
+ citedSuffix: "cited",
795
+ previousCited: "Previous cited passage",
796
+ nextCited: "Next cited passage",
797
+ previousLabelPassage: "Previous passage with this label",
798
+ nextLabelPassage: "Next passage with this label",
799
+ sharedWithMembers: "Shared with workspace members",
800
+ privateToYou: "Private to you",
801
+ shared: "Shared",
802
+ private: "Private"
803
+ };
804
+ function HtmlViewerRoot({ children, className }) {
805
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: ui.cn("relative h-full w-full", className), "data-slot": "html-viewer", children });
806
+ }
807
+ function HtmlViewerSurface({
808
+ children,
809
+ surfaceRef,
810
+ hidden,
811
+ onMouseUp,
812
+ className,
813
+ labels,
814
+ testId
815
+ }) {
816
+ const l = { ...DEFAULT_HTML_VIEWER_LABELS, ...labels };
817
+ return /* @__PURE__ */ jsxRuntime.jsx(
818
+ "div",
819
+ {
820
+ ref: surfaceRef,
821
+ className: ui.cn(
822
+ "flex h-full w-full flex-col items-center overflow-y-auto bg-muted p-4 pb-20",
823
+ hidden && "hidden",
824
+ className
825
+ ),
826
+ role: "region",
827
+ "aria-label": l.viewerRegion,
828
+ "data-slot": "html-viewer-surface",
829
+ style: { touchAction: "pan-x pan-y" },
830
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "parsed-viewer" }),
831
+ onMouseUp,
832
+ children
833
+ }
834
+ );
835
+ }
836
+ function HtmlPage({
837
+ pageNumber,
838
+ totalPages,
839
+ isRendered,
840
+ placeholderHeight,
841
+ zoom = 1,
842
+ children,
843
+ labels
844
+ }) {
845
+ const l = { ...DEFAULT_HTML_VIEWER_LABELS, ...labels };
846
+ return /* @__PURE__ */ jsxRuntime.jsx(
847
+ "div",
848
+ {
849
+ id: pageNumber ? `page-${pageNumber}` : void 0,
850
+ "data-page-number": pageNumber ?? void 0,
851
+ "data-slot": "html-page",
852
+ className: ui.cn(
853
+ // shrink-0: a page is a flex item of the scrolling surface and must never be squeezed.
854
+ "mb-6 w-full max-w-4xl shrink-0",
855
+ isRendered && "rounded-lg border border-border bg-background p-8"
856
+ ),
857
+ role: "article",
858
+ "aria-label": pageNumber ? l.pageOfTotal(pageNumber, totalPages) : l.documentContent,
859
+ children: isRendered ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
860
+ pageNumber ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4 flex items-center justify-center border-b border-border pb-4", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-medium text-muted-foreground", children: l.page(pageNumber) }) }) : null,
861
+ /* @__PURE__ */ jsxRuntime.jsx(
862
+ "div",
863
+ {
864
+ className: "prose prose-sm max-w-none prose-p:my-0 prose-headings:my-0 [&_img]:max-w-full [&_pre]:overflow-x-auto [&_table]:block [&_table]:max-w-full [&_table]:overflow-x-auto",
865
+ style: zoom === 1 ? void 0 : { fontSize: `${zoom}rem` },
866
+ children
867
+ }
868
+ )
869
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(
870
+ "div",
871
+ {
872
+ className: "flex items-center justify-center rounded-md border border-border bg-muted",
873
+ style: { height: placeholderHeight },
874
+ children: pageNumber ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", children: l.page(pageNumber) }) : null
875
+ }
876
+ )
877
+ }
878
+ );
879
+ }
880
+ function HtmlViewerEmpty({ labels }) {
881
+ const l = { ...DEFAULT_HTML_VIEWER_LABELS, ...labels };
882
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full items-center justify-center text-muted-foreground", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center", children: [
883
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-base font-medium", children: l.noContent }),
884
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm", children: l.noContentDescription })
885
+ ] }) });
886
+ }
887
+ var HtmlPassage = react.memo(function HtmlPassage2({
888
+ chunkId,
889
+ highlight,
890
+ isHit,
891
+ hitTestId,
892
+ isSelected,
893
+ runIsStart,
894
+ runIsEnd,
895
+ isClickable,
896
+ onSelect,
897
+ isTagged,
898
+ activeTagColor,
899
+ runMarker,
900
+ tagMark,
901
+ mark,
902
+ children
903
+ }) {
904
+ const hasId = !!chunkId;
905
+ const rounding = !isSelected ? "rounded" : [runIsStart ? "rounded-t" : "rounded-t-none", runIsEnd ? "rounded-b" : "rounded-b-none"].join(
906
+ " "
907
+ );
908
+ return /* @__PURE__ */ jsxRuntime.jsxs(
909
+ "div",
910
+ {
911
+ id: chunkId,
912
+ "data-slot": "html-passage",
913
+ "data-chunk-id": chunkId,
914
+ "data-run-start": isSelected && runIsStart || void 0,
915
+ "data-tagged": isTagged || void 0,
916
+ "data-tag-active": activeTagColor ? true : void 0,
917
+ "data-testid": isHit ? chunkMHVNT4J3_cjs.testIdOr(hitTestId, { testId: "highlighted-chunk" }) : null,
918
+ onClick: hasId && onSelect ? (e) => {
919
+ if (e.target.closest('[data-slot="mark"], [data-slot="mark-menu"]'))
920
+ return;
921
+ onSelect(e.shiftKey);
922
+ } : void 0,
923
+ className: ui.cn(
924
+ "group relative block px-1 py-0.5",
925
+ rounding,
926
+ highlight === "strong" ? "bg-ai-soft text-foreground ring-1 ring-ai-accent/40" : highlight === "light" ? "bg-ai-soft/60 text-foreground hover:bg-ai-soft" : hasId && "hover:bg-muted/50",
927
+ hasId && isClickable && "cursor-pointer select-none"
928
+ ),
929
+ style: activeTagColor && !highlight ? {
930
+ backgroundColor: `${activeTagColor}22`,
931
+ boxShadow: `inset 3px 0 0 0 ${activeTagColor}`
932
+ } : void 0,
933
+ children: [
934
+ children,
935
+ tagMark && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -left-3 top-1.5 z-10", children: tagMark }),
936
+ runMarker ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -top-2.5 left-1 z-10", "data-run-marker": true, children: runMarker }) : null,
937
+ mark && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -top-2.5 right-0 z-10 opacity-0 transition-opacity duration-200 group-hover:opacity-100 group-focus-within:opacity-100 pointer-coarse:opacity-70 [&:has([aria-expanded=true])]:opacity-100", children: mark })
938
+ ]
939
+ }
940
+ );
941
+ });
942
+ var stepButton = "px-1 text-muted-foreground hover:text-foreground pointer-coarse:min-h-11 pointer-coarse:min-w-11";
943
+ function PassageStepper({
944
+ position,
945
+ total,
946
+ onStep,
947
+ testId,
948
+ className,
949
+ prevLabel,
950
+ nextLabel,
951
+ suffix
952
+ }) {
953
+ return /* @__PURE__ */ jsxRuntime.jsxs(
954
+ "span",
955
+ {
956
+ className: ui.cn(
957
+ "inline-flex items-center gap-1 rounded-md border border-border bg-background/95 px-1.5 py-0.5",
958
+ className
959
+ ),
960
+ "data-slot": "passage-stepper",
961
+ "data-testid": testId,
962
+ children: [
963
+ /* @__PURE__ */ jsxRuntime.jsx(
964
+ "button",
965
+ {
966
+ type: "button",
967
+ onClick: () => onStep(-1),
968
+ "aria-label": prevLabel,
969
+ className: stepButton,
970
+ children: "\u2039"
971
+ }
972
+ ),
973
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs tabular-nums text-muted-foreground", children: [
974
+ Math.min(position, total),
975
+ "/",
976
+ total,
977
+ suffix ? ` ${suffix}` : ""
978
+ ] }),
979
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", onClick: () => onStep(1), "aria-label": nextLabel, className: stepButton, children: "\u203A" })
980
+ ]
981
+ }
982
+ );
983
+ }
984
+ function CitedRunNav({
985
+ labels,
986
+ testId,
987
+ ...props
988
+ }) {
989
+ const l = { ...DEFAULT_HTML_VIEWER_LABELS, ...labels };
990
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute left-1/2 top-2 z-20 -translate-x-1/2", "data-slot": "cited-run-nav", children: /* @__PURE__ */ jsxRuntime.jsx(
991
+ PassageStepper,
992
+ {
993
+ ...props,
994
+ suffix: l.citedSuffix,
995
+ prevLabel: l.previousCited,
996
+ nextLabel: l.nextCited,
997
+ testId: chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "note-run-nav" })
998
+ }
999
+ ) });
1000
+ }
1001
+ function DocTagBar({
1002
+ chips,
1003
+ visibility,
1004
+ step,
1005
+ activeId = null,
1006
+ onSelect,
1007
+ labels,
1008
+ testIds
1009
+ }) {
1010
+ const l = { ...DEFAULT_HTML_VIEWER_LABELS, ...labels };
1011
+ if (chips.length === 0 && !visibility) return null;
1012
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1013
+ "div",
1014
+ {
1015
+ className: "absolute left-2 right-2 top-2 z-20 flex flex-wrap items-center gap-1",
1016
+ "data-slot": "doc-tag-bar",
1017
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.root, { testId: "doc-tag-bar" }),
1018
+ children: [
1019
+ chips.map((c) => {
1020
+ const isActive = c.id === activeId;
1021
+ const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1022
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Tags, { className: "size-3 shrink-0" }),
1023
+ c.name,
1024
+ c.passageCount > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tabular-nums opacity-90", children: c.passageCount }),
1025
+ c.hasNote && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.StickyNote, { className: "size-3 opacity-90" })
1026
+ ] });
1027
+ const chipClass = "inline-flex items-center gap-1.5 rounded-full border border-transparent px-2 py-0.5 text-xs text-white";
1028
+ return onSelect ? /* @__PURE__ */ jsxRuntime.jsx(
1029
+ "button",
1030
+ {
1031
+ type: "button",
1032
+ onClick: () => onSelect(isActive ? null : c.id),
1033
+ "aria-pressed": isActive,
1034
+ title: c.title,
1035
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.chip?.(c.id), { testId: `doc-tag-chip-${c.id}` }),
1036
+ "data-active": isActive || void 0,
1037
+ className: ui.cn(chipClass, "cursor-pointer", !isActive && "opacity-70 hover:opacity-100"),
1038
+ style: { backgroundColor: c.color },
1039
+ children: content
1040
+ },
1041
+ c.id
1042
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1043
+ "span",
1044
+ {
1045
+ title: c.title,
1046
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.chip?.(c.id), { testId: `doc-tag-chip-${c.id}` }),
1047
+ className: chipClass,
1048
+ style: { backgroundColor: c.color },
1049
+ children: content
1050
+ },
1051
+ c.id
1052
+ );
1053
+ }),
1054
+ step && step.total > 0 && /* @__PURE__ */ jsxRuntime.jsx(
1055
+ PassageStepper,
1056
+ {
1057
+ className: "ml-1",
1058
+ position: step.position,
1059
+ total: step.total,
1060
+ onStep: step.onStep,
1061
+ testId: chunkMHVNT4J3_cjs.testIdOr(testIds?.nav, { testId: "doc-tag-nav" }),
1062
+ prevLabel: l.previousLabelPassage,
1063
+ nextLabel: l.nextLabelPassage
1064
+ }
1065
+ ),
1066
+ visibility && /* @__PURE__ */ jsxRuntime.jsxs(
1067
+ "span",
1068
+ {
1069
+ title: visibility === "shared" ? l.sharedWithMembers : l.privateToYou,
1070
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.visibility, { testId: "doc-visibility-chip" }),
1071
+ className: ui.cn(
1072
+ "ml-auto inline-flex shrink-0 items-center gap-1.5 rounded-full px-2 py-0.5 text-xs",
1073
+ visibility === "shared" ? "bg-accent text-accent-foreground" : "bg-muted text-muted-foreground"
1074
+ ),
1075
+ children: [
1076
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Share2, { className: "size-3 shrink-0" }),
1077
+ visibility === "shared" ? l.shared : l.private
1078
+ ]
1079
+ }
1080
+ )
1081
+ ]
1082
+ }
1083
+ );
1084
+ }
1085
+ function isDocumentLabel(tag) {
1086
+ if (tag.kind !== "label") return false;
1087
+ const onDocs = (tag.doctag_count ?? 0) > 0;
1088
+ const onFacts = (tag.facttag_count ?? 0) > 0;
1089
+ return onDocs || !onFacts;
1090
+ }
1091
+ function summariseDocTags(doctags, workspaceTags) {
1092
+ const byTag = new Map(doctags.map((dt) => [dt.tag_ext_id, dt]));
1093
+ return workspaceTags.filter((t) => byTag.has(t.external_id)).map((t) => {
1094
+ const dt = byTag.get(t.external_id);
1095
+ return {
1096
+ tagExtId: t.external_id,
1097
+ name: t.name,
1098
+ chunkIds: (dt.citations ?? []).flatMap((d) => (d.chunks ?? []).map((c) => c.chunk_id)),
1099
+ hasNote: !!dt.note
1100
+ };
1101
+ });
1102
+ }
1103
+ function DocumentLabelBar({
1104
+ summaries,
1105
+ activeTagExtId = null,
1106
+ cursor = 0,
1107
+ onSelect,
1108
+ onStep
1109
+ }) {
1110
+ const chips = react.useMemo(
1111
+ () => summaries.map((s) => {
1112
+ const marked = s.chunkIds.length;
1113
+ return {
1114
+ id: s.tagExtId,
1115
+ name: s.name,
1116
+ color: ui.getEntityColor(s.tagExtId, "medium"),
1117
+ passageCount: marked,
1118
+ hasNote: s.hasNote,
1119
+ title: marked ? `${s.name} \u2014 ${marked} passage${marked === 1 ? "" : "s"}${s.hasNote ? ", annotated" : ""}` : `${s.name} \u2014 applies to the document, no passages marked`
1120
+ };
1121
+ }),
1122
+ [summaries]
1123
+ );
1124
+ const active = summaries.find((s) => s.tagExtId === activeTagExtId);
1125
+ return /* @__PURE__ */ jsxRuntime.jsx(
1126
+ DocTagBar,
1127
+ {
1128
+ chips,
1129
+ activeId: activeTagExtId,
1130
+ onSelect,
1131
+ step: onStep && active && active.chunkIds.length > 0 ? { position: cursor + 1, total: active.chunkIds.length, onStep } : void 0
1132
+ }
1133
+ );
1134
+ }
1135
+ function ViewerTabBar({ tabs, activeId, onChange, className }) {
1136
+ return /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: ui.cn("flex shrink-0 items-center", className), role: "group", children: tabs.map((tab) => {
1137
+ const isActive = tab.id === activeId;
1138
+ return /* @__PURE__ */ jsxRuntime.jsxs(ui.Tooltip, { children: [
1139
+ /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
1140
+ "button",
1141
+ {
1142
+ type: "button",
1143
+ onClick: () => onChange(tab.id),
1144
+ "aria-label": tab.tooltip,
1145
+ "aria-pressed": isActive,
1146
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(tab.testId, { testId: `${tab.id}-tab` }),
1147
+ className: ui.cn(
1148
+ "shrink-0 border-b-2 px-3 py-2 font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11",
1149
+ tab.label && "inline-flex items-center gap-1.5 text-sm",
1150
+ isActive ? "border-primary text-primary" : "border-transparent text-muted-foreground hover:border-border hover:text-foreground"
1151
+ ),
1152
+ children: [
1153
+ tab.icon,
1154
+ tab.label && /* @__PURE__ */ jsxRuntime.jsx("span", { children: tab.label })
1155
+ ]
1156
+ }
1157
+ ) }),
1158
+ /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipContent, { side: "bottom", children: tab.tooltip })
1159
+ ] }, tab.id);
1160
+ }) }) });
1161
+ }
1162
+ function ViewerPageCounter({ page, total, onGoTo, labels }) {
1163
+ const l = { ...DEFAULT_VIEWER_LABELS, ...labels };
1164
+ const [isEditing, setIsEditing] = react.useState(false);
1165
+ const [input, setInput] = react.useState("");
1166
+ const inputRef = react.useRef(null);
1167
+ if (total <= 0) return null;
1168
+ const commit = () => {
1169
+ const n = parseInt(input, 10);
1170
+ if (!isNaN(n) && n >= 1 && n <= total) onGoTo(n);
1171
+ setIsEditing(false);
1172
+ };
1173
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 items-center gap-1 rounded-md bg-muted px-2 py-1", children: [
1174
+ isEditing ? /* @__PURE__ */ jsxRuntime.jsx(
1175
+ "input",
1176
+ {
1177
+ ref: inputRef,
1178
+ autoFocus: true,
1179
+ type: "text",
1180
+ value: input,
1181
+ onFocus: (e) => e.currentTarget.select(),
1182
+ onChange: (e) => setInput(e.target.value),
1183
+ onKeyDown: (e) => {
1184
+ if (e.key === "Enter") commit();
1185
+ else if (e.key === "Escape") setIsEditing(false);
1186
+ },
1187
+ onBlur: commit,
1188
+ className: "w-8 rounded border border-border bg-background px-1 py-0.5 text-center text-sm font-medium focus:outline-none",
1189
+ "aria-label": l.pageInput
1190
+ }
1191
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1192
+ "button",
1193
+ {
1194
+ type: "button",
1195
+ onClick: () => {
1196
+ setInput(String(page));
1197
+ setIsEditing(true);
1198
+ },
1199
+ className: "min-w-[2rem] cursor-text rounded border border-border bg-background px-1 py-0.5 text-sm font-medium transition-colors hover:bg-muted pointer-coarse:min-h-11 pointer-coarse:min-w-11",
1200
+ title: l.pageOfTitle,
1201
+ "aria-label": l.pageOf(page, total),
1202
+ children: page
1203
+ }
1204
+ ),
1205
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm text-muted-foreground", children: [
1206
+ "/ ",
1207
+ total
1208
+ ] })
1209
+ ] });
1210
+ }
1211
+ function ViewerPreviewUnavailable({
1212
+ extension,
1213
+ onDownload,
1214
+ labels
1215
+ }) {
1216
+ const l = { ...DEFAULT_VIEWER_LABELS, ...labels };
1217
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-4 p-8 text-center", children: [
1218
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-4xl text-muted-foreground", "aria-hidden": true, children: "\u{1F4C4}" }),
1219
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1220
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 font-medium", children: l.previewUnavailable }),
1221
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-4 text-sm text-muted-foreground", children: l.cannotPreview(extension) }),
1222
+ /* @__PURE__ */ jsxRuntime.jsxs(ui.Button, { variant: "outline", size: "sm", onClick: onDownload, children: [
1223
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Download, { className: "mr-2 size-4" }),
1224
+ l.downloadToOpen
1225
+ ] })
1226
+ ] })
1227
+ ] });
1228
+ }
1229
+ function ViewerLoadError({
1230
+ message,
1231
+ onDownload,
1232
+ labels,
1233
+ testId
1234
+ }) {
1235
+ const l = { ...DEFAULT_VIEWER_LABELS, ...labels };
1236
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1237
+ "div",
1238
+ {
1239
+ className: "flex h-full flex-col items-center justify-center gap-3 p-8 text-center",
1240
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "pdf-load-error" }),
1241
+ children: [
1242
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: message }),
1243
+ /* @__PURE__ */ jsxRuntime.jsxs(ui.Button, { variant: "outline", size: "sm", onClick: onDownload, children: [
1244
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Download, { className: "mr-2 size-4" }),
1245
+ l.download
1246
+ ] })
1247
+ ]
1248
+ }
1249
+ );
1250
+ }
1251
+ var DEFAULT_TAG_PASSAGE_PANEL_LABELS = {
1252
+ title: "Tag Passage",
1253
+ page: (n) => `Page ${n}`,
1254
+ close: "Close",
1255
+ empty: "No tags available. Create one to start tagging passages.",
1256
+ viewTagged: "View all passages with this tag",
1257
+ notePlaceholder: "Add a note for this tag...",
1258
+ cancel: "Cancel",
1259
+ save: "Save",
1260
+ addNote: "Add note...",
1261
+ createField: "+ Create new field"
1262
+ };
1263
+ function TagPassagePanel({
1264
+ pageNumber,
1265
+ preview,
1266
+ groups,
1267
+ isEmpty,
1268
+ isBusy,
1269
+ editingNoteTagId,
1270
+ noteValue,
1271
+ onNoteChange,
1272
+ onToggle,
1273
+ onViewTagged,
1274
+ onStartNote,
1275
+ onSaveNote,
1276
+ onCancelNote,
1277
+ onCreate,
1278
+ onClose,
1279
+ labels,
1280
+ testIds
1281
+ }) {
1282
+ const l = { ...DEFAULT_TAG_PASSAGE_PANEL_LABELS, ...labels };
1283
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1284
+ "div",
1285
+ {
1286
+ className: "fixed right-0 top-0 z-50 flex h-full w-80 max-w-full flex-col border-l border-border bg-background shadow-lg",
1287
+ "data-slot": "tag-passage-panel",
1288
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.root, { testId: "chunk-tag-panel" }),
1289
+ children: [
1290
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between border-b border-border p-4", children: [
1291
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1292
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-sm font-semibold", children: l.title }),
1293
+ pageNumber && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", children: l.page(pageNumber) })
1294
+ ] }),
1295
+ /* @__PURE__ */ jsxRuntime.jsx(
1296
+ ui.Button,
1297
+ {
1298
+ variant: "ghost",
1299
+ size: "icon",
1300
+ onClick: onClose,
1301
+ "aria-label": l.close,
1302
+ className: "pointer-coarse:size-11",
1303
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.close, { testId: "chunk-tag-panel-close" }),
1304
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "size-4" })
1305
+ }
1306
+ )
1307
+ ] }),
1308
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-b border-border bg-muted p-4", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "line-clamp-4 text-sm text-muted-foreground", children: preview }) }),
1309
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 overflow-y-auto", children: isEmpty ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-4 text-center text-sm text-muted-foreground", children: l.empty }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "py-2", children: groups.map((group) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-2", children: [
1310
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-muted px-4 py-2 text-sm font-medium uppercase tracking-wider text-muted-foreground", children: group.title }),
1311
+ group.tags.map((tag) => {
1312
+ const hasNote = !!tag.note;
1313
+ const isEditing = editingNoteTagId === tag.id;
1314
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1315
+ "div",
1316
+ {
1317
+ className: "border-b border-border last:border-b-0",
1318
+ "data-testid": chunkMHVNT4J3_cjs.prefixedTestId(testIds?.row, tag.id, {
1319
+ testId: `chunk-tag-row-${tag.id}`
1320
+ }),
1321
+ children: [
1322
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center transition-colors hover:bg-muted", children: [
1323
+ /* @__PURE__ */ jsxRuntime.jsxs(
1324
+ "button",
1325
+ {
1326
+ onClick: () => onToggle(tag.id),
1327
+ disabled: isBusy,
1328
+ className: "flex flex-1 items-center gap-3 px-4 py-3 disabled:opacity-50 pointer-coarse:min-h-11",
1329
+ children: [
1330
+ /* @__PURE__ */ jsxRuntime.jsx(
1331
+ "div",
1332
+ {
1333
+ className: "flex size-5 shrink-0 items-center justify-center rounded border-2",
1334
+ style: {
1335
+ borderColor: tag.color,
1336
+ backgroundColor: tag.isApplied ? tag.color : "transparent"
1337
+ },
1338
+ children: tag.isApplied && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "size-3 text-white", strokeWidth: 3 })
1339
+ }
1340
+ ),
1341
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
1342
+ tag.badge,
1343
+ hasNote && !isEditing && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.StickyNote, { className: "size-3.5 text-muted-foreground" })
1344
+ ] }),
1345
+ isBusy && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-4 shrink-0 animate-spin" })
1346
+ ]
1347
+ }
1348
+ ),
1349
+ tag.isApplied && onViewTagged && /* @__PURE__ */ jsxRuntime.jsx(
1350
+ "button",
1351
+ {
1352
+ onClick: () => onViewTagged(tag.id),
1353
+ className: "mr-3 shrink-0 rounded p-1 hover:bg-muted pointer-coarse:min-h-11 pointer-coarse:min-w-11",
1354
+ title: l.viewTagged,
1355
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.viewTagged, {
1356
+ testId: "view-tagged-chunks-button"
1357
+ }),
1358
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "size-4 text-muted-foreground" })
1359
+ }
1360
+ )
1361
+ ] }),
1362
+ tag.isApplied && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 pb-3", children: isEditing ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
1363
+ /* @__PURE__ */ jsxRuntime.jsx(
1364
+ ui.Textarea,
1365
+ {
1366
+ value: noteValue,
1367
+ onChange: (e) => onNoteChange(e.target.value),
1368
+ placeholder: l.notePlaceholder,
1369
+ className: "min-h-[60px] text-sm",
1370
+ autoFocus: true
1371
+ }
1372
+ ),
1373
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2", children: [
1374
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { variant: "ghost", size: "sm", onClick: onCancelNote, children: l.cancel }),
1375
+ /* @__PURE__ */ jsxRuntime.jsx(
1376
+ ui.Button,
1377
+ {
1378
+ size: "sm",
1379
+ onClick: () => onSaveNote(tag.id),
1380
+ disabled: isBusy,
1381
+ children: l.save
1382
+ }
1383
+ )
1384
+ ] })
1385
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(
1386
+ "button",
1387
+ {
1388
+ onClick: () => onStartNote(tag.id),
1389
+ className: ui.cn(
1390
+ "w-full rounded-md bg-muted px-2 py-1.5 text-left text-sm pointer-coarse:min-h-11",
1391
+ hasNote ? "text-foreground" : "text-muted-foreground"
1392
+ ),
1393
+ children: tag.note || l.addNote
1394
+ }
1395
+ ) })
1396
+ ]
1397
+ },
1398
+ tag.id
1399
+ );
1400
+ })
1401
+ ] }, group.id)) }) }),
1402
+ onCreate && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-t border-border p-4", children: /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { variant: "outline", size: "sm", className: "w-full", onClick: onCreate, children: l.createField }) })
1403
+ ]
1404
+ }
1405
+ );
1406
+ }
1407
+ function FilesPageTitle({
1408
+ label = "Files",
1409
+ count,
1410
+ isFiltered,
1411
+ isProcessing,
1412
+ onClick,
1413
+ filteredLabel = "filtered",
1414
+ className,
1415
+ testId,
1416
+ countTestId
1417
+ }) {
1418
+ const body = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1419
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: label }),
1420
+ /* @__PURE__ */ jsxRuntime.jsx(
1421
+ "span",
1422
+ {
1423
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(countTestId, { testId: "tab-count" }),
1424
+ className: "inline-flex h-6 min-w-6 items-center justify-center rounded-full bg-muted px-2 text-xs font-medium tabular-nums text-muted-foreground",
1425
+ children: count
1426
+ }
1427
+ ),
1428
+ isFiltered && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-normal text-muted-foreground", children: filteredLabel }),
1429
+ isProcessing && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-3.5 animate-spin text-muted-foreground", "aria-hidden": true })
1430
+ ] });
1431
+ const classes = ui.cn(
1432
+ "inline-flex min-w-0 items-center gap-2 text-xl font-semibold leading-8 text-foreground",
1433
+ className
1434
+ );
1435
+ return /* @__PURE__ */ jsxRuntime.jsx("h1", { "data-slot": "files-page-title", className: "m-0 min-w-0 font-semibold", children: onClick ? /* @__PURE__ */ jsxRuntime.jsx(
1436
+ "button",
1437
+ {
1438
+ type: "button",
1439
+ onClick,
1440
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "documents-tab" }),
1441
+ className: ui.cn(
1442
+ classes,
1443
+ "rounded-md pointer-coarse:-mx-2 pointer-coarse:min-h-11 pointer-coarse:px-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
1444
+ ),
1445
+ children: body
1446
+ }
1447
+ ) : /* @__PURE__ */ jsxRuntime.jsx("span", { "data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "documents-tab" }), className: classes, children: body }) });
1448
+ }
1449
+ var DEFAULT_IMPORT_LABELS = {
1450
+ stop: "Stop",
1451
+ stopping: "Stopping\u2026",
1452
+ importNow: "Import now",
1453
+ settings: "Settings",
1454
+ importingOf: (processed, total, noun) => `Importing ${processed} of ${total} ${noun}\u2026`,
1455
+ importing: (processed, noun) => `Importing ${processed} ${noun}\u2026`,
1456
+ foldersSelected: (count) => `Folders: ${count} selected`,
1457
+ folders: (names) => `Folders: ${names}`,
1458
+ moreFolders: (count) => ` +${count} more`,
1459
+ connect: "Connect",
1460
+ reconnect: "Reconnect",
1461
+ reconnecting: "Reconnecting\u2026",
1462
+ disconnect: "Disconnect",
1463
+ disconnecting: "Disconnecting\u2026",
1464
+ reconnectHint: (reconnectLabel) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1465
+ "Couldn\u2019t reach this account. Click ",
1466
+ reconnectLabel,
1467
+ " \u2014 if it keeps happening, log out and back in to refresh the connection."
1468
+ ] })
1469
+ };
1470
+ function ImportList({ className, ...props }) {
1471
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "import-list", className: ui.cn("divide-y divide-border", className), ...props });
1472
+ }
1473
+ function ImportRow({ logo, name, actions, children, testId, className }) {
1474
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-slot": "import-row", "data-testid": testId, className: ui.cn("py-3", className), children: [
1475
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2.5", children: [
1476
+ logo,
1477
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1 truncate text-sm font-medium text-foreground", children: name }),
1478
+ actions
1479
+ ] }),
1480
+ children
1481
+ ] });
1482
+ }
1483
+ function ImportHint({ className, ...props }) {
1484
+ return /* @__PURE__ */ jsxRuntime.jsx(
1485
+ "p",
1486
+ {
1487
+ "data-slot": "import-hint",
1488
+ className: ui.cn("ml-[34px] mt-1 text-xs text-muted-foreground", className),
1489
+ ...props
1490
+ }
1491
+ );
1492
+ }
1493
+ function ImportActionButton({
1494
+ className,
1495
+ children,
1496
+ variant = "outline",
1497
+ ...props
1498
+ }) {
1499
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1500
+ ui.Button,
1501
+ {
1502
+ variant,
1503
+ size: "sm",
1504
+ className: ui.cn("ml-auto h-7 shrink-0 gap-1.5 pointer-coarse:h-11", className),
1505
+ "data-slot": "import-action",
1506
+ ...props,
1507
+ children: [
1508
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ExternalLink, { className: "h-3.5 w-3.5" }),
1509
+ children
1510
+ ]
1511
+ }
1512
+ );
1513
+ }
1514
+ function ImportRunActions({
1515
+ isRunning,
1516
+ isStopping,
1517
+ isBusy,
1518
+ importDisabled,
1519
+ importTitle,
1520
+ onImport,
1521
+ onStop,
1522
+ onSettings,
1523
+ settingsLabel,
1524
+ importButton,
1525
+ settingsButton,
1526
+ stopButton,
1527
+ labels
1528
+ }) {
1529
+ const l = { ...DEFAULT_IMPORT_LABELS, ...labels };
1530
+ if (isRunning) {
1531
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1532
+ ui.Button,
1533
+ {
1534
+ variant: "outline",
1535
+ size: "sm",
1536
+ className: "ml-auto h-7 gap-1.5 pointer-coarse:h-11",
1537
+ onClick: onStop,
1538
+ disabled: isStopping,
1539
+ "data-testid": stopButton?.testId,
1540
+ children: [
1541
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Square, { className: "h-3 w-3" }),
1542
+ isStopping ? l.stopping : l.stop
1543
+ ]
1544
+ }
1545
+ );
1546
+ }
1547
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-auto flex shrink-0 items-center gap-1.5", children: [
1548
+ /* @__PURE__ */ jsxRuntime.jsxs(
1549
+ ui.Button,
1550
+ {
1551
+ variant: "default",
1552
+ size: "sm",
1553
+ className: "h-7 gap-1.5 pointer-coarse:h-11",
1554
+ onClick: onImport,
1555
+ disabled: isBusy || importDisabled,
1556
+ "data-testid": importButton?.testId,
1557
+ title: importTitle,
1558
+ children: [
1559
+ isBusy ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCw, { className: "h-3.5 w-3.5" }),
1560
+ l.importNow
1561
+ ]
1562
+ }
1563
+ ),
1564
+ /* @__PURE__ */ jsxRuntime.jsxs(
1565
+ ui.Button,
1566
+ {
1567
+ variant: "outline",
1568
+ size: "sm",
1569
+ className: "h-7 gap-1.5 px-2 text-muted-foreground pointer-coarse:h-11",
1570
+ onClick: onSettings,
1571
+ disabled: isBusy,
1572
+ "aria-label": settingsLabel,
1573
+ "data-testid": settingsButton?.testId,
1574
+ children: [
1575
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings, { className: "h-4 w-4" }),
1576
+ l.settings
1577
+ ]
1578
+ }
1579
+ )
1580
+ ] });
1581
+ }
1582
+ function ImportSummary({ children, aside, className }) {
1583
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1584
+ "div",
1585
+ {
1586
+ "data-slot": "import-summary",
1587
+ className: ui.cn("mt-2.5 flex items-start justify-between gap-3", className),
1588
+ children: [
1589
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ml-[34px] text-sm leading-snug text-muted-foreground", children }),
1590
+ aside
1591
+ ]
1592
+ }
1593
+ );
1594
+ }
1595
+ function ImportAside({ className, ...props }) {
1596
+ return /* @__PURE__ */ jsxRuntime.jsx(
1597
+ "div",
1598
+ {
1599
+ "data-slot": "import-aside",
1600
+ className: ui.cn(
1601
+ "min-w-0 max-w-[55%] text-right text-sm leading-snug text-muted-foreground",
1602
+ className
1603
+ ),
1604
+ ...props
1605
+ }
1606
+ );
1607
+ }
1608
+ function ImportProgress({ processed, total, noun, testId, labels }) {
1609
+ const l = { ...DEFAULT_IMPORT_LABELS, ...labels };
1610
+ const known = total != null && total > 0;
1611
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-slot": "import-progress", className: "mt-2 space-y-1", "data-testid": testId, children: [
1612
+ known && /* @__PURE__ */ jsxRuntime.jsx(ui.Progress, { value: Math.min(100, Math.round(processed / total * 100)), className: "h-1.5" }),
1613
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-right text-sm leading-snug text-muted-foreground", children: known ? l.importingOf(processed, total, noun) : l.importing(processed, noun) })
1614
+ ] });
1615
+ }
1616
+ var FOLDER_SUMMARY_LIMIT = 3;
1617
+ function FolderSummary({ names, testId, labels }) {
1618
+ const l = { ...DEFAULT_IMPORT_LABELS, ...labels };
1619
+ const known = names.filter((n) => !!n);
1620
+ if (known.length === 0) {
1621
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-testid": testId, children: l.foldersSelected(names.length) });
1622
+ }
1623
+ const shown = known.slice(0, FOLDER_SUMMARY_LIMIT);
1624
+ const hidden = names.length - shown.length;
1625
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "break-words", title: known.join(", "), "data-testid": testId, children: [
1626
+ l.folders(shown.join(", ")),
1627
+ hidden > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "whitespace-nowrap", children: l.moreFolders(hidden) })
1628
+ ] });
1629
+ }
1630
+ function ImportFamilySection({
1631
+ label,
1632
+ identity,
1633
+ action,
1634
+ isActionPending,
1635
+ onAction,
1636
+ testId,
1637
+ actionButton,
1638
+ children,
1639
+ labels
1640
+ }) {
1641
+ const l = { ...DEFAULT_IMPORT_LABELS, ...labels };
1642
+ const [idle, pending] = {
1643
+ connect: [l.connect, l.connect],
1644
+ reconnect: [l.reconnect, l.reconnecting],
1645
+ disconnect: [l.disconnect, l.disconnecting]
1646
+ }[action];
1647
+ const Icon = action === "disconnect" ? lucideReact.Unplug : lucideReact.ExternalLink;
1648
+ const isPending = action !== "connect" && !!isActionPending;
1649
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { "data-slot": "import-family", "data-testid": testId, children: [
1650
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1 flex items-center gap-2", children: [
1651
+ /* @__PURE__ */ jsxRuntime.jsxs("h3", { className: "min-w-0 truncate text-sm font-semibold uppercase tracking-wide text-muted-foreground", children: [
1652
+ label,
1653
+ identity && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ml-1.5 text-sm font-normal normal-case tracking-normal", children: [
1654
+ "(",
1655
+ identity,
1656
+ ")"
1657
+ ] })
1658
+ ] }),
1659
+ /* @__PURE__ */ jsxRuntime.jsxs(
1660
+ ui.Button,
1661
+ {
1662
+ variant: action === "disconnect" ? "ghost" : "outline",
1663
+ size: "sm",
1664
+ className: ui.cn(
1665
+ "h-6 shrink-0 gap-1 px-2 text-xs pointer-coarse:h-11",
1666
+ action === "disconnect" && "text-muted-foreground [&:hover]:text-destructive"
1667
+ ),
1668
+ onClick: onAction,
1669
+ disabled: isPending,
1670
+ "data-testid": actionButton?.testId,
1671
+ children: [
1672
+ /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "h-3 w-3" }),
1673
+ isPending ? pending : idle
1674
+ ]
1675
+ }
1676
+ )
1677
+ ] }),
1678
+ action === "reconnect" && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-1 text-xs text-muted-foreground", children: l.reconnectHint(/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: l.reconnect })) }),
1679
+ children
1680
+ ] });
1681
+ }
1682
+ function ImportPanel({ className, ...props }) {
1683
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "import-panel", className: ui.cn("space-y-5", className), ...props });
1684
+ }
1685
+ var STATUS_ICONS = {
1686
+ active: { Icon: lucideReact.LoaderCircle, color: "text-blue-text", spin: true },
1687
+ queued: { Icon: lucideReact.Hourglass, color: "text-yellow-text", spin: false },
1688
+ failed: { Icon: lucideReact.AlertCircle, color: "text-red-text", spin: false },
1689
+ skipped: { Icon: lucideReact.CircleSlash, color: "text-muted-foreground", spin: false },
1690
+ completed: { Icon: lucideReact.CheckCircle, color: "text-green-text", spin: false }
1691
+ };
1692
+ function TaskSection({
1693
+ title,
1694
+ count,
1695
+ status,
1696
+ tooltip,
1697
+ headerAction,
1698
+ defaultExpanded = true,
1699
+ children,
1700
+ testIds
1701
+ }) {
1702
+ const [isExpanded, setIsExpanded] = react.useState(defaultExpanded);
1703
+ const hasItems = count > 0;
1704
+ const { Icon, color, spin } = STATUS_ICONS[status];
1705
+ const headingInner = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
1706
+ /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: ui.cn("h-4 w-4", color, hasItems ? spin && "animate-spin" : "opacity-50") }),
1707
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "whitespace-nowrap", children: title }),
1708
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { variant: "outline", className: "badge-count ml-2 border-border", children: count })
1709
+ ] });
1710
+ const heading = tooltip ? /* @__PURE__ */ jsxRuntime.jsxs(ui.Tooltip, { children: [
1711
+ /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipTrigger, { asChild: true, children: headingInner }),
1712
+ /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipContent, { className: "max-w-xs", children: tooltip })
1713
+ ] }) : headingInner;
1714
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-slot": "task-section", "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.root, { testId: "task-section" }), children: [
1715
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3 flex items-center justify-between", children: [
1716
+ hasItems ? /* @__PURE__ */ jsxRuntime.jsxs(
1717
+ "button",
1718
+ {
1719
+ onClick: () => setIsExpanded(!isExpanded),
1720
+ "aria-expanded": isExpanded,
1721
+ className: "flex cursor-pointer items-center gap-2 text-left font-medium transition-colors hover:text-primary pointer-coarse:min-h-11",
1722
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.toggle, { testId: "task-section-toggle" }),
1723
+ children: [
1724
+ /* @__PURE__ */ jsxRuntime.jsx(
1725
+ lucideReact.ChevronRight,
1726
+ {
1727
+ className: ui.cn("h-4 w-4 transition-transform", isExpanded && "rotate-90")
1728
+ }
1729
+ ),
1730
+ heading
1731
+ ]
1732
+ }
1733
+ ) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 font-medium text-muted-foreground", children: [
1734
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "h-4 w-4 flex-shrink-0" }),
1735
+ heading
1736
+ ] }),
1737
+ headerAction
1738
+ ] }),
1739
+ hasItems && isExpanded && children
1740
+ ] });
1741
+ }
1742
+ function BulkLabelSelectView({
1743
+ options,
1744
+ appliedIds,
1745
+ mixedIds,
1746
+ onToggle,
1747
+ onCreate,
1748
+ disabled,
1749
+ isCompact
1750
+ }) {
1751
+ return /* @__PURE__ */ jsxRuntime.jsxs(ui.Popover, { children: [
1752
+ /* @__PURE__ */ jsxRuntime.jsx(ui.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
1753
+ ui.Button,
1754
+ {
1755
+ variant: "outline",
1756
+ size: "sm",
1757
+ disabled,
1758
+ className: "h-7 gap-1.5 px-2 text-yellow-text hover:text-yellow-text hover:bg-yellow-bg border-yellow-border",
1759
+ "data-testid": "bulk-label-button",
1760
+ "aria-label": "Labels",
1761
+ children: [
1762
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SquareCheckBig, { className: "size-4" }),
1763
+ !isCompact && /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Labels" })
1764
+ ]
1765
+ }
1766
+ ) }),
1767
+ /* @__PURE__ */ jsxRuntime.jsx(ui.PopoverContent, { className: "w-[220px] p-0", align: "start", side: "top", sideOffset: 4, children: /* @__PURE__ */ jsxRuntime.jsx(
1768
+ chunk5Y6V7F6W_cjs.LabelPickerList,
1769
+ {
1770
+ options,
1771
+ appliedIds,
1772
+ mixedIds,
1773
+ onToggle,
1774
+ onCreate
1775
+ }
1776
+ ) })
1777
+ ] });
1778
+ }
1779
+ var STATUS = {
1780
+ completed: { Icon: lucideReact.CheckCircle, title: "Ready", tone: "text-green-text" },
1781
+ empty: { Icon: lucideReact.FileX, title: "Empty", tone: "text-yellow-text" },
1782
+ "low-content": { Icon: lucideReact.AlertTriangle, title: "Low Content", tone: "text-yellow-text" },
1783
+ processing: { Icon: lucideReact.Loader2, title: "Indexing", tone: "text-muted-foreground", spin: true },
1784
+ queued: { Icon: lucideReact.Hourglass, title: "Queued", tone: "text-yellow-text" }
1785
+ };
1786
+ function DocStatusIcon({
1787
+ status,
1788
+ onClick,
1789
+ failedStage,
1790
+ errorMessage,
1791
+ className
1792
+ }) {
1793
+ if (!status) return null;
1794
+ const key = status.toLowerCase();
1795
+ if (key === "failed") {
1796
+ return /* @__PURE__ */ jsxRuntime.jsx(
1797
+ chunkNUAC5GTQ_cjs.FailedStageIcon,
1798
+ {
1799
+ stage: failedStage,
1800
+ errorMessage,
1801
+ className: ui.cn("size-3 text-red-text", onClick && "cursor-pointer", className),
1802
+ onClick: onClick ? (e) => {
1803
+ e.stopPropagation();
1804
+ onClick();
1805
+ } : void 0
1806
+ }
1807
+ );
1808
+ }
1809
+ const entry = STATUS[key];
1810
+ if (!entry) return null;
1811
+ const { Icon } = entry;
1812
+ const glyph = /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: ui.cn("size-3", entry.tone, entry.spin && "animate-spin", className) });
1813
+ if (!onClick) {
1814
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { title: entry.title, "data-slot": "doc-status-icon", "data-status": key, children: glyph });
1815
+ }
1816
+ return /* @__PURE__ */ jsxRuntime.jsx(
1817
+ "button",
1818
+ {
1819
+ type: "button",
1820
+ title: entry.title,
1821
+ "aria-label": entry.title,
1822
+ "data-slot": "doc-status-icon",
1823
+ "data-status": key,
1824
+ onClick: (e) => {
1825
+ e.stopPropagation();
1826
+ onClick();
1827
+ },
1828
+ className: "cursor-pointer rounded hover:opacity-80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
1829
+ children: glyph
1830
+ }
1831
+ );
1832
+ }
1833
+
1834
+ exports.BulkLabelSelectView = BulkLabelSelectView;
1835
+ exports.CitedRunNav = CitedRunNav;
1836
+ exports.DEFAULT_EXPORT_LABELS = DEFAULT_EXPORT_LABELS;
1837
+ exports.DEFAULT_HTML_VIEWER_LABELS = DEFAULT_HTML_VIEWER_LABELS;
1838
+ exports.DEFAULT_IMPORT_LABELS = DEFAULT_IMPORT_LABELS;
1839
+ exports.DEFAULT_TAG_PASSAGE_PANEL_LABELS = DEFAULT_TAG_PASSAGE_PANEL_LABELS;
1840
+ exports.DEFAULT_TRANSFER_LABELS = DEFAULT_TRANSFER_LABELS;
1841
+ exports.DEFAULT_VIEWER_LABELS = DEFAULT_VIEWER_LABELS;
1842
+ exports.DocStatusIcon = DocStatusIcon;
1843
+ exports.DocTagBar = DocTagBar;
1844
+ exports.DocumentLabelBar = DocumentLabelBar;
1845
+ exports.ExportFooter = ExportFooter;
1846
+ exports.ExportMethodChooser = ExportMethodChooser;
1847
+ exports.ExportModalTitle = ExportModalTitle;
1848
+ exports.ExportResultsReport = ExportResultsReport;
1849
+ exports.ExportWorkspacePicker = ExportWorkspacePicker;
1850
+ exports.FilesPageTitle = FilesPageTitle;
1851
+ exports.FolderSummary = FolderSummary;
1852
+ exports.HtmlPage = HtmlPage;
1853
+ exports.HtmlPassage = HtmlPassage;
1854
+ exports.HtmlViewerEmpty = HtmlViewerEmpty;
1855
+ exports.HtmlViewerRoot = HtmlViewerRoot;
1856
+ exports.HtmlViewerSurface = HtmlViewerSurface;
1857
+ exports.ImportActionButton = ImportActionButton;
1858
+ exports.ImportAside = ImportAside;
1859
+ exports.ImportFamilySection = ImportFamilySection;
1860
+ exports.ImportHint = ImportHint;
1861
+ exports.ImportList = ImportList;
1862
+ exports.ImportPanel = ImportPanel;
1863
+ exports.ImportProgress = ImportProgress;
1864
+ exports.ImportRow = ImportRow;
1865
+ exports.ImportRunActions = ImportRunActions;
1866
+ exports.ImportSummary = ImportSummary;
1867
+ exports.PassageStepper = PassageStepper;
1868
+ exports.PdfPageNav = PdfPageNav;
1869
+ exports.TagPassagePanel = TagPassagePanel;
1870
+ exports.TaskSection = TaskSection;
1871
+ exports.TransferConflictChooser = TransferConflictChooser;
1872
+ exports.TransferKindsPicker = TransferKindsPicker;
1873
+ exports.TransferPlanSummary = TransferPlanSummary;
1874
+ exports.TransferProgressView = TransferProgressView;
1875
+ exports.TransferReferencesChooser = TransferReferencesChooser;
1876
+ exports.TransferResumeBanner = TransferResumeBanner;
1877
+ exports.TransferScopeChooser = TransferScopeChooser;
1878
+ exports.ViewerControlBar = ViewerControlBar;
1879
+ exports.ViewerFrame = ViewerFrame;
1880
+ exports.ViewerImageActions = ViewerImageActions;
1881
+ exports.ViewerLoadError = ViewerLoadError;
1882
+ exports.ViewerMessage = ViewerMessage;
1883
+ exports.ViewerPageCounter = ViewerPageCounter;
1884
+ exports.ViewerPreviewUnavailable = ViewerPreviewUnavailable;
1885
+ exports.ViewerTabBar = ViewerTabBar;
1886
+ exports.ViewerTitle = ViewerTitle;
1887
+ exports.ViewerZoomControl = ViewerZoomControl;
1888
+ exports.isDocumentLabel = isDocumentLabel;
1889
+ exports.summariseDocTags = summariseDocTags;
1890
+ //# sourceMappingURL=chunk-5C7DRQQE.cjs.map
1891
+ //# sourceMappingURL=chunk-5C7DRQQE.cjs.map