@arbidocs/blocks 0.5.75 → 0.5.76

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 (175) hide show
  1. package/README.md +23 -0
  2. package/dist/{ConnectedDocumentViewer-U5TQ4LFJ.js → ConnectedDocumentViewer-4LRZ5N3L.js} +6 -6
  3. package/dist/{ConnectedDocumentViewer-U5TQ4LFJ.js.map → ConnectedDocumentViewer-4LRZ5N3L.js.map} +1 -1
  4. package/dist/{ConnectedDocumentViewer-ID2RG5MF.cjs → ConnectedDocumentViewer-FREQM2ES.cjs} +7 -7
  5. package/dist/{ConnectedDocumentViewer-ID2RG5MF.cjs.map → ConnectedDocumentViewer-FREQM2ES.cjs.map} +1 -1
  6. package/dist/{ConnectedNativeDocxComparison-PBMS77ZP.js → ConnectedNativeDocxComparison-P7OJ3UVK.js} +6 -6
  7. package/dist/{ConnectedNativeDocxComparison-PBMS77ZP.js.map → ConnectedNativeDocxComparison-P7OJ3UVK.js.map} +1 -1
  8. package/dist/{ConnectedNativeDocxComparison-R4OFGVHY.cjs → ConnectedNativeDocxComparison-RQIKQM5O.cjs} +7 -7
  9. package/dist/{ConnectedNativeDocxComparison-R4OFGVHY.cjs.map → ConnectedNativeDocxComparison-RQIKQM5O.cjs.map} +1 -1
  10. package/dist/{ConnectedNativeDocxEditor-27JZI2D5.js → ConnectedNativeDocxEditor-HX3FDJ2T.js} +5 -5
  11. package/dist/{ConnectedNativeDocxEditor-27JZI2D5.js.map → ConnectedNativeDocxEditor-HX3FDJ2T.js.map} +1 -1
  12. package/dist/{ConnectedNativeDocxEditor-774XRIP3.cjs → ConnectedNativeDocxEditor-XKQV7A37.cjs} +7 -7
  13. package/dist/{ConnectedNativeDocxEditor-774XRIP3.cjs.map → ConnectedNativeDocxEditor-XKQV7A37.cjs.map} +1 -1
  14. package/dist/{ConnectedStreamedWordArtifact-7TNIQTVE.cjs → ConnectedStreamedWordArtifact-CSRL4SCO.cjs} +7 -7
  15. package/dist/ConnectedStreamedWordArtifact-CSRL4SCO.cjs.map +1 -0
  16. package/dist/{ConnectedStreamedWordArtifact-XEFXYMKS.js → ConnectedStreamedWordArtifact-SSH6M5LN.js} +6 -6
  17. package/dist/ConnectedStreamedWordArtifact-SSH6M5LN.js.map +1 -0
  18. package/dist/{DocumentReviewCard-7OPL6PWG.cjs → DocumentReviewCard-3PZJPVQC.cjs} +14 -14
  19. package/dist/{DocumentReviewCard-7OPL6PWG.cjs.map → DocumentReviewCard-3PZJPVQC.cjs.map} +1 -1
  20. package/dist/{DocumentReviewCard-NDHCFYYT.js → DocumentReviewCard-KHMHG7A5.js} +9 -9
  21. package/dist/{DocumentReviewCard-NDHCFYYT.js.map → DocumentReviewCard-KHMHG7A5.js.map} +1 -1
  22. package/dist/{WorkspaceTableView-4INHJ7QK.js → WorkspaceTableView-4VMCTOFT.js} +5 -5
  23. package/dist/{WorkspaceTableView-4INHJ7QK.js.map → WorkspaceTableView-4VMCTOFT.js.map} +1 -1
  24. package/dist/{WorkspaceTableView-BTUSU3N3.cjs → WorkspaceTableView-Q44KNO3Z.cjs} +7 -7
  25. package/dist/{WorkspaceTableView-BTUSU3N3.cjs.map → WorkspaceTableView-Q44KNO3Z.cjs.map} +1 -1
  26. package/dist/agents/index.cjs +281 -281
  27. package/dist/agents/index.js +4 -4
  28. package/dist/{chunk-E3ILJRG4.cjs → chunk-2HECOUXC.cjs} +4 -3
  29. package/dist/chunk-2HECOUXC.cjs.map +1 -0
  30. package/dist/{chunk-AQPZ4QMV.cjs → chunk-3J2ASIM7.cjs} +3 -3
  31. package/dist/chunk-3J2ASIM7.cjs.map +1 -0
  32. package/dist/{chunk-QCFNPQWS.cjs → chunk-3LJUTIS6.cjs} +44 -44
  33. package/dist/{chunk-QCFNPQWS.cjs.map → chunk-3LJUTIS6.cjs.map} +1 -1
  34. package/dist/chunk-4B6HYQTW.cjs +20 -0
  35. package/dist/chunk-4B6HYQTW.cjs.map +1 -0
  36. package/dist/{chunk-4UMVAJJZ.js → chunk-6NEBHZIF.js} +4 -4
  37. package/dist/{chunk-4UMVAJJZ.js.map → chunk-6NEBHZIF.js.map} +1 -1
  38. package/dist/{chunk-IMIE5NOQ.js → chunk-7E5GV4R7.js} +4 -4
  39. package/dist/{chunk-IMIE5NOQ.js.map → chunk-7E5GV4R7.js.map} +1 -1
  40. package/dist/{chunk-LNXMSIKU.js → chunk-AWFEB4YJ.js} +8 -8
  41. package/dist/{chunk-LNXMSIKU.js.map → chunk-AWFEB4YJ.js.map} +1 -1
  42. package/dist/{chunk-JMQLTMJ7.js → chunk-B3BD5IJR.js} +16 -20
  43. package/dist/chunk-B3BD5IJR.js.map +1 -0
  44. package/dist/{chunk-5Q2U7GLI.cjs → chunk-CDW3W5U5.cjs} +4 -4
  45. package/dist/{chunk-5Q2U7GLI.cjs.map → chunk-CDW3W5U5.cjs.map} +1 -1
  46. package/dist/{chunk-SK5TP4DP.js → chunk-DBPPOJQM.js} +3 -3
  47. package/dist/{chunk-SK5TP4DP.js.map → chunk-DBPPOJQM.js.map} +1 -1
  48. package/dist/{chunk-NJ3YV3VM.cjs → chunk-DMYBHKNQ.cjs} +27 -27
  49. package/dist/{chunk-NJ3YV3VM.cjs.map → chunk-DMYBHKNQ.cjs.map} +1 -1
  50. package/dist/{chunk-563BHHHO.cjs → chunk-E6S6WHXL.cjs} +9 -9
  51. package/dist/{chunk-563BHHHO.cjs.map → chunk-E6S6WHXL.cjs.map} +1 -1
  52. package/dist/{chunk-BV34QPKE.js → chunk-EASXRDYQ.js} +3 -3
  53. package/dist/{chunk-BV34QPKE.js.map → chunk-EASXRDYQ.js.map} +1 -1
  54. package/dist/{chunk-JOFUAQTV.js → chunk-HWNVAQBX.js} +3 -3
  55. package/dist/{chunk-JOFUAQTV.js.map → chunk-HWNVAQBX.js.map} +1 -1
  56. package/dist/{chunk-PNWSEIWS.cjs → chunk-I3HK46DH.cjs} +4 -4
  57. package/dist/{chunk-PNWSEIWS.cjs.map → chunk-I3HK46DH.cjs.map} +1 -1
  58. package/dist/{chunk-GJKXYX47.js → chunk-IJ2CTMA7.js} +3 -3
  59. package/dist/{chunk-GJKXYX47.js.map → chunk-IJ2CTMA7.js.map} +1 -1
  60. package/dist/{chunk-7ZL6OVGO.cjs → chunk-IQFHOKQH.cjs} +23 -46
  61. package/dist/chunk-IQFHOKQH.cjs.map +1 -0
  62. package/dist/{chunk-7ZCM2GR2.js → chunk-IRCGXKLB.js} +3 -3
  63. package/dist/{chunk-7ZCM2GR2.js.map → chunk-IRCGXKLB.js.map} +1 -1
  64. package/dist/{chunk-G4GLDQLY.js → chunk-KG3W76BB.js} +3 -3
  65. package/dist/chunk-KG3W76BB.js.map +1 -0
  66. package/dist/{chunk-B66CICTP.cjs → chunk-KHLPBCRZ.cjs} +52 -52
  67. package/dist/{chunk-B66CICTP.cjs.map → chunk-KHLPBCRZ.cjs.map} +1 -1
  68. package/dist/{chunk-J4SEJSSV.js → chunk-KPIR4MJV.js} +6 -6
  69. package/dist/{chunk-J4SEJSSV.js.map → chunk-KPIR4MJV.js.map} +1 -1
  70. package/dist/{chunk-PA4EGGCI.js → chunk-KSHTODQZ.js} +3 -3
  71. package/dist/{chunk-PA4EGGCI.js.map → chunk-KSHTODQZ.js.map} +1 -1
  72. package/dist/{chunk-PT6D5B6L.cjs → chunk-MAUJVVFJ.cjs} +360 -410
  73. package/dist/chunk-MAUJVVFJ.cjs.map +1 -0
  74. package/dist/{chunk-MP7XCRHV.js → chunk-NRI5DKJE.js} +4 -3
  75. package/dist/chunk-NRI5DKJE.js.map +1 -0
  76. package/dist/{chunk-XXPDAENX.cjs → chunk-PGTDQBMX.cjs} +7 -7
  77. package/dist/{chunk-XXPDAENX.cjs.map → chunk-PGTDQBMX.cjs.map} +1 -1
  78. package/dist/{chunk-4JKK6S7U.cjs → chunk-S7G3A52F.cjs} +5 -5
  79. package/dist/{chunk-4JKK6S7U.cjs.map → chunk-S7G3A52F.cjs.map} +1 -1
  80. package/dist/{chunk-OUCWTKQT.js → chunk-SBFQF3BU.js} +4 -4
  81. package/dist/{chunk-OUCWTKQT.js.map → chunk-SBFQF3BU.js.map} +1 -1
  82. package/dist/{chunk-52VME6ZS.cjs → chunk-SIOBGNRY.cjs} +18 -18
  83. package/dist/{chunk-52VME6ZS.cjs.map → chunk-SIOBGNRY.cjs.map} +1 -1
  84. package/dist/chunk-SK3GBHPJ.js +15 -0
  85. package/dist/chunk-SK3GBHPJ.js.map +1 -0
  86. package/dist/{chunk-RADE22SM.cjs → chunk-T2OG3CPR.cjs} +4 -4
  87. package/dist/{chunk-RADE22SM.cjs.map → chunk-T2OG3CPR.cjs.map} +1 -1
  88. package/dist/{chunk-IGQJ6ET3.js → chunk-TWSOU6SE.js} +421 -501
  89. package/dist/chunk-TWSOU6SE.js.map +1 -0
  90. package/dist/{chunk-QRV4XYFJ.js → chunk-UCD7644N.js} +3 -3
  91. package/dist/{chunk-QRV4XYFJ.js.map → chunk-UCD7644N.js.map} +1 -1
  92. package/dist/{chunk-TQ4VGQHG.js → chunk-ULUCGL24.js} +3 -3
  93. package/dist/{chunk-TQ4VGQHG.js.map → chunk-ULUCGL24.js.map} +1 -1
  94. package/dist/{chunk-IRI6LPDX.cjs → chunk-UR4OSH2Q.cjs} +4 -4
  95. package/dist/{chunk-IRI6LPDX.cjs.map → chunk-UR4OSH2Q.cjs.map} +1 -1
  96. package/dist/{chunk-66QN6ZJR.cjs → chunk-URZAK3A3.cjs} +36 -36
  97. package/dist/{chunk-66QN6ZJR.cjs.map → chunk-URZAK3A3.cjs.map} +1 -1
  98. package/dist/{chunk-57S2PLCM.js → chunk-V2QWATXQ.js} +3 -3
  99. package/dist/{chunk-57S2PLCM.js.map → chunk-V2QWATXQ.js.map} +1 -1
  100. package/dist/{chunk-55JI2IGZ.cjs → chunk-VBLJNOVP.cjs} +4 -4
  101. package/dist/{chunk-55JI2IGZ.cjs.map → chunk-VBLJNOVP.cjs.map} +1 -1
  102. package/dist/{chunk-KFAFWPZK.cjs → chunk-VRMACPJR.cjs} +7 -7
  103. package/dist/{chunk-KFAFWPZK.cjs.map → chunk-VRMACPJR.cjs.map} +1 -1
  104. package/dist/{chunk-5Y6V7F6W.cjs → chunk-VWUNPAR2.cjs} +15 -19
  105. package/dist/chunk-VWUNPAR2.cjs.map +1 -0
  106. package/dist/{chunk-T3GTQXGP.js → chunk-W7CQ5MLR.js} +3 -3
  107. package/dist/{chunk-T3GTQXGP.js.map → chunk-W7CQ5MLR.js.map} +1 -1
  108. package/dist/{chunk-AOBNXZLS.cjs → chunk-Y3VXKSW7.cjs} +594 -674
  109. package/dist/chunk-Y3VXKSW7.cjs.map +1 -0
  110. package/dist/{chunk-RTYU6ZGO.cjs → chunk-YCABQ5W4.cjs} +4 -4
  111. package/dist/{chunk-RTYU6ZGO.cjs.map → chunk-YCABQ5W4.cjs.map} +1 -1
  112. package/dist/{chunk-EWHD3BY5.js → chunk-ZHHUEYSB.js} +25 -48
  113. package/dist/chunk-ZHHUEYSB.js.map +1 -0
  114. package/dist/{chunk-5PKIDR2Q.js → chunk-ZHJVABQ6.js} +361 -406
  115. package/dist/chunk-ZHJVABQ6.js.map +1 -0
  116. package/dist/connect/docx.cjs +11 -11
  117. package/dist/connect/docx.js +7 -7
  118. package/dist/connect/index.cjs +1448 -1367
  119. package/dist/connect/index.cjs.map +1 -1
  120. package/dist/connect/index.d.ts +2 -0
  121. package/dist/connect/index.js +545 -466
  122. package/dist/connect/index.js.map +1 -1
  123. package/dist/connect/viewer.cjs +5 -5
  124. package/dist/connect/viewer.js +4 -4
  125. package/dist/connection/account-cluster/ConnectedAccountCluster.d.ts +2 -1
  126. package/dist/connection/facts/useFactFilters.d.ts +46 -0
  127. package/dist/connection/files/fields/ConnectedTagForm.d.ts +1 -1
  128. package/dist/connection/report-problem/ReportProblemDialog.d.ts +10 -8
  129. package/dist/connection/report-problem/useReportProblem.d.ts +2 -6
  130. package/dist/connection/tags/ConnectedTagTable.d.ts +1 -1
  131. package/dist/connection/tags/ConnectedTagsPage.d.ts +3 -1
  132. package/dist/connection/tags/TagsPageSections.d.ts +5 -3
  133. package/dist/connection/tags/tagged-content.d.ts +10 -0
  134. package/dist/connection/threads/useThreadTagFilter.d.ts +10 -0
  135. package/dist/connection/tips/ConnectedTipBar.d.ts +2 -1
  136. package/dist/connection/tips/useContextualHints.d.ts +6 -1
  137. package/dist/embed/index.cjs +13 -12
  138. package/dist/embed/index.js +8 -7
  139. package/dist/facts/index.cjs +45 -45
  140. package/dist/facts/index.js +2 -2
  141. package/dist/files/index.cjs +226 -226
  142. package/dist/files/index.js +2 -2
  143. package/dist/index.cjs +423 -367
  144. package/dist/index.cjs.map +1 -1
  145. package/dist/index.js +76 -16
  146. package/dist/index.js.map +1 -1
  147. package/dist/settings/FilterChip.d.ts +2 -1
  148. package/dist/settings/TriStateFilterMenu.d.ts +1 -0
  149. package/dist/settings/index.cjs +158 -158
  150. package/dist/settings/index.js +2 -2
  151. package/dist/shell/index.cjs +14 -14
  152. package/dist/shell/index.js +1 -1
  153. package/dist/styles.css +1 -1
  154. package/dist/tags/TagDetail.d.ts +2 -2
  155. package/dist/tags/TagTable.d.ts +17 -3
  156. package/dist/tags/index.d.ts +1 -1
  157. package/dist/workflow-canvas/index.cjs +29 -29
  158. package/dist/workflow-canvas/index.js +12 -12
  159. package/node_modules/@arbidocs/coedit/package.json +1 -1
  160. package/package.json +5 -5
  161. package/dist/ConnectedStreamedWordArtifact-7TNIQTVE.cjs.map +0 -1
  162. package/dist/ConnectedStreamedWordArtifact-XEFXYMKS.js.map +0 -1
  163. package/dist/chunk-5PKIDR2Q.js.map +0 -1
  164. package/dist/chunk-5Y6V7F6W.cjs.map +0 -1
  165. package/dist/chunk-7ZL6OVGO.cjs.map +0 -1
  166. package/dist/chunk-AOBNXZLS.cjs.map +0 -1
  167. package/dist/chunk-AQPZ4QMV.cjs.map +0 -1
  168. package/dist/chunk-E3ILJRG4.cjs.map +0 -1
  169. package/dist/chunk-EWHD3BY5.js.map +0 -1
  170. package/dist/chunk-G4GLDQLY.js.map +0 -1
  171. package/dist/chunk-IGQJ6ET3.js.map +0 -1
  172. package/dist/chunk-JMQLTMJ7.js.map +0 -1
  173. package/dist/chunk-MP7XCRHV.js.map +0 -1
  174. package/dist/chunk-PT6D5B6L.cjs.map +0 -1
  175. package/dist/connection/tags/TagPlacement.d.ts +0 -16
@@ -2,9 +2,10 @@
2
2
  'use strict';
3
3
 
4
4
  var chunkJIOHDVWH_cjs = require('./chunk-JIOHDVWH.cjs');
5
- var chunk5Y6V7F6W_cjs = require('./chunk-5Y6V7F6W.cjs');
5
+ var chunkVWUNPAR2_cjs = require('./chunk-VWUNPAR2.cjs');
6
6
  var chunkD54JXTPG_cjs = require('./chunk-D54JXTPG.cjs');
7
- var chunk563BHHHO_cjs = require('./chunk-563BHHHO.cjs');
7
+ var chunkE6S6WHXL_cjs = require('./chunk-E6S6WHXL.cjs');
8
+ var chunkLKK52DEY_cjs = require('./chunk-LKK52DEY.cjs');
8
9
  var chunkVZOOGA47_cjs = require('./chunk-VZOOGA47.cjs');
9
10
  var chunkULWRNGGE_cjs = require('./chunk-ULWRNGGE.cjs');
10
11
  var react = require('react');
@@ -51,17 +52,6 @@ function useTipsPlacement({
51
52
  onHoverChange: setPaused
52
53
  };
53
54
  }
54
-
55
- // src/tips/visibility.ts
56
- var TIPS_VISIBILITY_OVERRIDE = "tips:visibility";
57
- function setHintsSessionOverride(layout, value) {
58
- layout.setTransientView(TIPS_VISIBILITY_OVERRIDE, value ?? void 0);
59
- }
60
- var WELCOME_REPLAY_VIEW = "tips:welcomeReplay";
61
- function startWelcomeReplay(layout) {
62
- setHintsSessionOverride(layout, true);
63
- layout.setTransientView(WELCOME_REPLAY_VIEW, true);
64
- }
65
55
  var SPARKLE_DELAYS = ["0s", "0.1s", "0.2s"];
66
56
  var SPLASH_CLASS = "fixed top-0 left-0 w-full h-full flex flex-col items-center justify-center bg-background bg-opacity-50 z-50";
67
57
  function useShowAfter(delayMs) {
@@ -166,7 +156,7 @@ function GridRowNavigator({
166
156
  onSelect(node.data);
167
157
  };
168
158
  return /* @__PURE__ */ jsxRuntime.jsx(
169
- chunk5Y6V7F6W_cjs.RowNavigatorControls,
159
+ chunkVWUNPAR2_cjs.RowNavigatorControls,
170
160
  {
171
161
  total,
172
162
  currentIndex,
@@ -409,9 +399,9 @@ function workspaceActivityHeadline(item) {
409
399
  return item.status ? `${run} (${item.status.replace(/_/g, " ")})` : run;
410
400
  }
411
401
  default: {
412
- const headline = chunk563BHHHO_cjs.taskActivityHeadline(
402
+ const headline = chunkE6S6WHXL_cjs.taskActivityHeadline(
413
403
  { kind: item.kind, detail: item.detail },
414
- chunk563BHHHO_cjs.DEFAULT_TASK_ACTIVITY_LABELS
404
+ chunkE6S6WHXL_cjs.DEFAULT_TASK_ACTIVITY_LABELS
415
405
  );
416
406
  return `${headline} in ${thread}`;
417
407
  }
@@ -804,7 +794,7 @@ var DEFAULT_TAG_TABLE_LABELS = {
804
794
  addRow: "Add row",
805
795
  addRowPlaceholder: "Name of the new row",
806
796
  add: "Add",
807
- export: "Export as Word document",
797
+ export: "Save as Word document",
808
798
  download: "Download .docx",
809
799
  exporting: "Exporting\u2026",
810
800
  empty: "No rows yet.",
@@ -812,10 +802,9 @@ var DEFAULT_TAG_TABLE_LABELS = {
812
802
  noColumns: "No columns yet: add one to give each row a value.",
813
803
  choose: "\u2014",
814
804
  yes: "Yes",
815
- editColumns: "Columns"
805
+ editColumns: "Columns",
806
+ moreActions: "More"
816
807
  };
817
- var ROW_LABEL_WIDTH = "w-[11rem]";
818
- var EVIDENCE_WIDTH = "w-[14rem]";
819
808
  var ROW_LABEL = "line-clamp-3 whitespace-normal break-words";
820
809
  function TagTableCell({
821
810
  row,
@@ -923,17 +912,17 @@ function TagLinkCell({
923
912
  {
924
913
  type: "button",
925
914
  onClick: () => onOpenTag(id),
926
- className: "inline-flex min-w-0 max-w-full items-center truncate rounded-md border border-border px-1.5 py-0.5 text-xs hover:border-primary/40 hover:text-primary",
915
+ className: "inline-flex min-w-0 max-w-full items-center focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
927
916
  "data-testid": `${testId}-link-${id}`,
928
- children: label(id)
917
+ children: /* @__PURE__ */ jsxRuntime.jsx(ui.TagEntity, { tag: { external_id: id, name: label(id) }, showTooltip: false, wrap: true })
929
918
  },
930
919
  id
931
920
  ) : /* @__PURE__ */ jsxRuntime.jsx(
932
921
  "span",
933
922
  {
934
- className: "inline-flex min-w-0 max-w-full truncate rounded-md border border-border px-1.5 py-0.5 text-xs",
923
+ className: "inline-flex min-w-0 max-w-full",
935
924
  "data-testid": `${testId}-link-${id}`,
936
- children: label(id)
925
+ children: /* @__PURE__ */ jsxRuntime.jsx(ui.TagEntity, { tag: { external_id: id, name: label(id) }, showTooltip: false, wrap: true })
937
926
  },
938
927
  id
939
928
  )
@@ -954,11 +943,25 @@ function TagLinkCell({
954
943
  title: `Open ${label(current)}`,
955
944
  "data-testid": `${testId}-open`,
956
945
  children: [
957
- label(current),
946
+ /* @__PURE__ */ jsxRuntime.jsx(
947
+ ui.TagEntity,
948
+ {
949
+ tag: { external_id: current, name: label(current) },
950
+ showTooltip: false,
951
+ wrap: true
952
+ }
953
+ ),
958
954
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUpRight, { className: "ml-0.5 inline size-3.5 align-[-2px] text-muted-foreground" })
959
955
  ]
960
956
  }
961
- ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "max-w-full px-1 text-sm break-words", children: label(current) })),
957
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
958
+ ui.TagEntity,
959
+ {
960
+ tag: { external_id: current, name: label(current) },
961
+ showTooltip: false,
962
+ wrap: true
963
+ }
964
+ )),
962
965
  /* @__PURE__ */ jsxRuntime.jsxs(
963
966
  "span",
964
967
  {
@@ -992,87 +995,55 @@ function TagLinkCell({
992
995
  );
993
996
  }
994
997
  var countText = (count2, one, many) => count2 === 1 ? one : count2 ? many.replace("{count}", String(count2)) : null;
995
- function Evidence({
998
+ function TagContentCounts({
996
999
  row,
997
1000
  l,
998
- onOpenDocument,
999
- onOpenFact,
1000
- onOpenThread,
1001
+ onOpenTaggedItems,
1001
1002
  onOpenRow,
1002
1003
  testId
1003
1004
  }) {
1004
1005
  if (isGap(row)) return null;
1005
1006
  const links = rowLinks(row);
1006
- const docs = links.docs ?? [];
1007
- const facts = links.facts ?? [];
1008
- const threads = links.threads ?? [];
1009
- const more = links.doc_count - docs.length + (links.fact_count - facts.length) + (links.thread_count - threads.length);
1010
- const chip = "inline-flex min-w-0 max-w-full items-center gap-1 truncate rounded-md border border-border px-1.5 py-0.5 text-xs hover:border-primary/40 hover:text-primary disabled:hover:border-border disabled:hover:text-inherit";
1011
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-wrap items-center gap-1", "data-testid": testId, children: [
1012
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mr-1 w-full text-xs text-muted-foreground", children: [
1013
- countText(links.doc_count, l.document, l.documents),
1014
- countText(links.fact_count, l.fact, l.facts),
1015
- countText(links.thread_count, l.thread, l.threads)
1016
- ].filter(Boolean).join(" \xB7 ") }),
1017
- docs.map((d) => /* @__PURE__ */ jsxRuntime.jsxs(
1018
- "button",
1019
- {
1020
- type: "button",
1021
- className: chip,
1022
- title: d.note ? `${d.file_name}: ${d.note}` : d.file_name,
1023
- disabled: !onOpenDocument,
1024
- onClick: () => onOpenDocument?.(d.doc_ext_id),
1025
- "data-testid": `${testId}-doc-${d.doc_ext_id}`,
1026
- children: [
1027
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "size-3 shrink-0" }),
1028
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: d.file_name })
1029
- ]
1030
- },
1031
- d.doc_ext_id
1032
- )),
1033
- facts.map((f) => /* @__PURE__ */ jsxRuntime.jsxs(
1034
- "button",
1035
- {
1036
- type: "button",
1037
- className: chip,
1038
- title: f.text,
1039
- disabled: !onOpenFact,
1040
- onClick: () => onOpenFact?.(f.fact_ext_id),
1041
- "data-testid": `${testId}-fact-${f.fact_ext_id}`,
1042
- children: [
1043
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Lightbulb, { className: "size-3 shrink-0" }),
1044
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: f.text })
1045
- ]
1046
- },
1047
- f.fact_ext_id
1048
- )),
1049
- threads.map((t) => /* @__PURE__ */ jsxRuntime.jsxs(
1007
+ const groups = [
1008
+ {
1009
+ kind: "documents",
1010
+ count: links.doc_count,
1011
+ label: countText(links.doc_count, l.document, l.documents),
1012
+ Icon: lucideReact.FileText
1013
+ },
1014
+ {
1015
+ kind: "facts",
1016
+ count: links.fact_count,
1017
+ label: countText(links.fact_count, l.fact, l.facts),
1018
+ Icon: lucideReact.Lightbulb
1019
+ },
1020
+ {
1021
+ kind: "threads",
1022
+ count: links.thread_count,
1023
+ label: countText(links.thread_count, l.thread, l.threads),
1024
+ Icon: lucideReact.MessagesSquare
1025
+ }
1026
+ ].filter((group) => group.count > 0);
1027
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center gap-x-2 gap-y-1", "data-testid": testId, children: groups.map(({ kind, label, Icon }, index) => /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-2", children: [
1028
+ index > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, className: "text-muted-foreground", children: " \xB7 " }),
1029
+ onOpenTaggedItems || onOpenRow ? /* @__PURE__ */ jsxRuntime.jsxs(
1050
1030
  "button",
1051
1031
  {
1052
1032
  type: "button",
1053
- className: chip,
1054
- title: t.title || l.untitledThread,
1055
- disabled: !onOpenThread,
1056
- onClick: () => onOpenThread?.(t.conversation_ext_id),
1057
- "data-testid": `${testId}-thread-${t.conversation_ext_id}`,
1033
+ className: "inline-flex items-center gap-1 text-sm text-primary hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
1034
+ "data-testid": `${testId}-${kind}`,
1035
+ title: `Show ${label} tagged \u201C${row.name}\u201D`,
1036
+ onClick: () => onOpenTaggedItems ? onOpenTaggedItems(row.external_id, kind) : onOpenRow?.(row.external_id),
1058
1037
  children: [
1059
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MessagesSquare, { className: "size-3 shrink-0" }),
1060
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: t.title || l.untitledThread })
1038
+ /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-3.5" }),
1039
+ label
1061
1040
  ]
1062
- },
1063
- t.conversation_ext_id
1064
- )),
1065
- more > 0 && (onOpenRow ? /* @__PURE__ */ jsxRuntime.jsx(
1066
- "button",
1067
- {
1068
- type: "button",
1069
- className: "text-xs text-primary hover:underline",
1070
- onClick: () => onOpenRow(row.external_id),
1071
- "data-testid": `${testId}-more`,
1072
- children: l.more.replace("{count}", String(more))
1073
1041
  }
1074
- ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", "data-testid": `${testId}-more`, children: l.more.replace("{count}", String(more)) }))
1075
- ] });
1042
+ ) : /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1 text-sm text-muted-foreground", children: [
1043
+ /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-3.5" }),
1044
+ label
1045
+ ] })
1046
+ ] }, kind)) });
1076
1047
  }
1077
1048
  function TagTable({
1078
1049
  table,
@@ -1080,21 +1051,20 @@ function TagTable({
1080
1051
  onChangeValue,
1081
1052
  onAddRow,
1082
1053
  onChangeColumns,
1083
- onOpenDocument,
1084
- onOpenFact,
1085
- onOpenThread,
1086
1054
  onOpenRow,
1055
+ onOpenTaggedItems,
1087
1056
  onExport,
1088
1057
  onDownload,
1089
1058
  people,
1090
1059
  tags,
1091
1060
  onOpenTag,
1092
1061
  actions,
1062
+ secondaryActions,
1093
1063
  labels,
1094
1064
  className,
1095
1065
  testId = "tag-table"
1096
1066
  }) {
1097
- const l = { ...DEFAULT_TAG_TABLE_LABELS, ...labels };
1067
+ const l = react.useMemo(() => ({ ...DEFAULT_TAG_TABLE_LABELS, ...labels }), [labels]);
1098
1068
  const columns = react.useMemo(() => table?.columns ?? [], [table]);
1099
1069
  const rows = table?.rows ?? [];
1100
1070
  const [editingColumns, setEditingColumns] = react.useState(false);
@@ -1112,58 +1082,185 @@ function TagTable({
1112
1082
  setAdding(false);
1113
1083
  }
1114
1084
  };
1085
+ const columnDefs = react.useMemo(
1086
+ () => [
1087
+ {
1088
+ colId: "name",
1089
+ headerName: l.row,
1090
+ field: "name",
1091
+ width: 176,
1092
+ minWidth: 160,
1093
+ pinned: "left",
1094
+ sortable: true,
1095
+ filter: false,
1096
+ autoHeight: true,
1097
+ cellClass: "px-3! py-2! leading-normal!",
1098
+ cellRenderer: ({ data: row }) => row ? onOpenRow ? /* @__PURE__ */ jsxRuntime.jsx(
1099
+ "button",
1100
+ {
1101
+ type: "button",
1102
+ className: ui.cn(
1103
+ ROW_LABEL,
1104
+ "text-left font-medium hover:text-primary hover:underline"
1105
+ ),
1106
+ title: row.name,
1107
+ onClick: () => onOpenRow(row.external_id),
1108
+ "data-testid": `${testId}-row-${row.external_id}-label`,
1109
+ children: /* @__PURE__ */ jsxRuntime.jsx(ui.TagEntity, { tag: row, showTooltip: false, wrap: true })
1110
+ }
1111
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1112
+ "span",
1113
+ {
1114
+ className: ui.cn(ROW_LABEL, "font-medium"),
1115
+ title: row.name,
1116
+ "data-testid": `${testId}-row-${row.external_id}-label`,
1117
+ children: /* @__PURE__ */ jsxRuntime.jsx(ui.TagEntity, { tag: row, showTooltip: false, wrap: true })
1118
+ }
1119
+ ) : null
1120
+ },
1121
+ {
1122
+ colId: "evidence",
1123
+ headerName: l.evidence,
1124
+ width: 250,
1125
+ minWidth: 224,
1126
+ flex: 1,
1127
+ sortable: true,
1128
+ filter: false,
1129
+ autoHeight: true,
1130
+ cellClass: "px-3! py-2! leading-normal!",
1131
+ valueGetter: ({ data }) => {
1132
+ if (!data) return 0;
1133
+ const links = rowLinks(data);
1134
+ return links.doc_count + links.fact_count + links.thread_count;
1135
+ },
1136
+ cellRenderer: ({ data: row }) => row ? /* @__PURE__ */ jsxRuntime.jsx(
1137
+ TagContentCounts,
1138
+ {
1139
+ row,
1140
+ l,
1141
+ onOpenRow,
1142
+ onOpenTaggedItems,
1143
+ testId: `${testId}-evidence-${row.external_id}`
1144
+ }
1145
+ ) : null
1146
+ },
1147
+ ...columns.map((column) => ({
1148
+ colId: column.id,
1149
+ headerName: column.name,
1150
+ flex: 1,
1151
+ minWidth: 150,
1152
+ sortable: true,
1153
+ filter: false,
1154
+ // These are native inline editors: let their caret, select and checkbox keys work.
1155
+ suppressKeyboardEvent: ({ event }) => event.target instanceof HTMLElement && Boolean(
1156
+ event.target.closest(
1157
+ 'input, select, textarea, button, [role="checkbox"], [role="combobox"]'
1158
+ )
1159
+ ),
1160
+ cellClass: "px-1.5! py-1! leading-normal!",
1161
+ valueGetter: ({ data }) => {
1162
+ if (!data) return null;
1163
+ const value = cellValue(data, column);
1164
+ if (value == null || value === "") return null;
1165
+ if (column.type === "number") return Number(value);
1166
+ if (column.type === "checkbox") return value ? 1 : 0;
1167
+ return cellText(
1168
+ value,
1169
+ column,
1170
+ (id) => people?.find((p) => p.value === id)?.label ?? tags?.find((t) => t.value === id)?.label
1171
+ );
1172
+ },
1173
+ cellRenderer: ({ data: row }) => row ? /* @__PURE__ */ jsxRuntime.jsx(
1174
+ TagTableCell,
1175
+ {
1176
+ row,
1177
+ column,
1178
+ people,
1179
+ tags,
1180
+ onOpenTag,
1181
+ onChange: onChangeValue,
1182
+ l,
1183
+ testId: `${testId}-cell-${row.external_id}-${column.id}`
1184
+ }
1185
+ ) : null
1186
+ }))
1187
+ ],
1188
+ [columns, l, people, tags, onOpenRow, onOpenTaggedItems, onOpenTag, onChangeValue, testId]
1189
+ );
1115
1190
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ui.cn("space-y-3", className), "data-testid": testId, children: [
1116
1191
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center gap-2", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-auto flex flex-wrap items-center gap-2", children: [
1117
1192
  actions,
1118
- onChangeColumns && /* @__PURE__ */ jsxRuntime.jsxs(
1119
- ui.Button,
1120
- {
1121
- variant: "outline",
1122
- size: "sm",
1123
- "aria-pressed": editingColumns,
1124
- onClick: () => setEditingColumns((v) => !v),
1125
- "data-testid": `${testId}-edit-columns`,
1126
- children: [
1127
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SlidersHorizontal, { className: "size-4" }),
1128
- l.editColumns
1129
- ]
1130
- }
1131
- ),
1132
- onDownload && /* @__PURE__ */ jsxRuntime.jsxs(
1133
- ui.Button,
1134
- {
1135
- variant: "outline",
1136
- size: "sm",
1137
- disabled: rows.length === 0,
1138
- onClick: () => void onDownload(),
1139
- "data-testid": `${testId}-download`,
1140
- children: [
1141
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Download, { className: "size-4" }),
1142
- l.download
1143
- ]
1144
- }
1145
- ),
1146
- onExport && /* @__PURE__ */ jsxRuntime.jsxs(
1147
- ui.Button,
1148
- {
1149
- variant: "outline",
1150
- size: "sm",
1151
- disabled: exporting || rows.length === 0,
1152
- onClick: async () => {
1153
- setExporting(true);
1154
- try {
1155
- await onExport();
1156
- } finally {
1157
- setExporting(false);
1158
- }
1159
- },
1160
- "data-testid": `${testId}-export`,
1161
- children: [
1162
- exporting ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-4 animate-spin" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileDown, { className: "size-4" }),
1163
- exporting ? l.exporting : l.export
1164
- ]
1165
- }
1166
- )
1193
+ (secondaryActions || onChangeColumns || onDownload || onExport) && /* @__PURE__ */ jsxRuntime.jsxs(ui.Popover, { children: [
1194
+ /* @__PURE__ */ jsxRuntime.jsx(ui.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
1195
+ ui.Button,
1196
+ {
1197
+ variant: "ghost",
1198
+ size: "sm",
1199
+ "aria-label": l.moreActions,
1200
+ "data-testid": `${testId}-more`,
1201
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "size-4" })
1202
+ }
1203
+ ) }),
1204
+ /* @__PURE__ */ jsxRuntime.jsxs(
1205
+ ui.PopoverContent,
1206
+ {
1207
+ align: "end",
1208
+ className: "flex w-auto min-w-48 flex-col items-stretch gap-1 p-2",
1209
+ children: [
1210
+ secondaryActions,
1211
+ onChangeColumns && /* @__PURE__ */ jsxRuntime.jsxs(
1212
+ ui.Button,
1213
+ {
1214
+ variant: "ghost",
1215
+ size: "sm",
1216
+ className: "justify-start",
1217
+ onClick: () => setEditingColumns((v) => !v),
1218
+ "data-testid": `${testId}-edit-columns`,
1219
+ children: [
1220
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SlidersHorizontal, { className: "size-4" }),
1221
+ " ",
1222
+ l.editColumns
1223
+ ]
1224
+ }
1225
+ ),
1226
+ onExport && /* @__PURE__ */ jsxRuntime.jsxs(
1227
+ ui.Button,
1228
+ {
1229
+ disabled: exporting || rows.length === 0,
1230
+ variant: "ghost",
1231
+ size: "sm",
1232
+ className: "justify-start",
1233
+ onClick: () => {
1234
+ setExporting(true);
1235
+ void Promise.resolve().then(() => onExport()).finally(() => setExporting(false));
1236
+ },
1237
+ "data-testid": `${testId}-export`,
1238
+ children: [
1239
+ exporting ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-4 animate-spin" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileDown, { className: "size-4" }),
1240
+ exporting ? l.exporting : l.export
1241
+ ]
1242
+ }
1243
+ ),
1244
+ onDownload && /* @__PURE__ */ jsxRuntime.jsxs(
1245
+ ui.Button,
1246
+ {
1247
+ disabled: rows.length === 0,
1248
+ variant: "ghost",
1249
+ size: "sm",
1250
+ className: "justify-start",
1251
+ onClick: () => void onDownload(),
1252
+ "data-testid": `${testId}-download`,
1253
+ children: [
1254
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Download, { className: "size-4" }),
1255
+ " ",
1256
+ l.download
1257
+ ]
1258
+ }
1259
+ )
1260
+ ]
1261
+ }
1262
+ )
1263
+ ] })
1167
1264
  ] }) }),
1168
1265
  editingColumns && onChangeColumns && /* @__PURE__ */ jsxRuntime.jsx(
1169
1266
  TagColumnsEditor,
@@ -1220,113 +1317,20 @@ function TagTable({
1220
1317
  " ",
1221
1318
  l.loading
1222
1319
  ] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "overflow-x-auto rounded-lg border border-border", children: [
1223
- /* @__PURE__ */ jsxRuntime.jsxs(
1224
- "table",
1320
+ /* @__PURE__ */ jsxRuntime.jsx(
1321
+ chunkLKK52DEY_cjs.GridView,
1225
1322
  {
1226
- className: "w-full min-w-[36rem] table-fixed border-collapse text-sm",
1227
- "data-testid": `${testId}-table`,
1228
- children: [
1229
- /* @__PURE__ */ jsxRuntime.jsx("thead", { className: "bg-muted/40", children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
1230
- /* @__PURE__ */ jsxRuntime.jsx(
1231
- "th",
1232
- {
1233
- className: ui.cn(
1234
- ROW_LABEL_WIDTH,
1235
- "sticky left-0 z-10 bg-muted/40 px-3 py-2 text-left font-medium"
1236
- ),
1237
- children: l.row
1238
- }
1239
- ),
1240
- columns.map((c) => /* @__PURE__ */ jsxRuntime.jsx(
1241
- "th",
1242
- {
1243
- className: "truncate px-3 py-2 text-left font-medium",
1244
- title: c.name,
1245
- "data-testid": `${testId}-column-${c.id}`,
1246
- children: c.name
1247
- },
1248
- c.id
1249
- )),
1250
- /* @__PURE__ */ jsxRuntime.jsx("th", { className: ui.cn(EVIDENCE_WIDTH, "px-3 py-2 text-left font-medium"), children: l.evidence })
1251
- ] }) }),
1252
- /* @__PURE__ */ jsxRuntime.jsxs("tbody", { children: [
1253
- rows.map((row) => {
1254
- const id = row.external_id;
1255
- return /* @__PURE__ */ jsxRuntime.jsxs(
1256
- "tr",
1257
- {
1258
- className: "border-t border-border align-top",
1259
- "data-testid": `${testId}-row-${id}`,
1260
- children: [
1261
- /* @__PURE__ */ jsxRuntime.jsx(
1262
- "th",
1263
- {
1264
- scope: "row",
1265
- className: ui.cn(
1266
- ROW_LABEL_WIDTH,
1267
- "sticky left-0 z-10 bg-background px-3 py-2 text-left font-medium"
1268
- ),
1269
- children: onOpenRow ? /* @__PURE__ */ jsxRuntime.jsx(
1270
- "button",
1271
- {
1272
- type: "button",
1273
- className: ui.cn(ROW_LABEL, "text-left hover:text-primary hover:underline"),
1274
- title: row.name,
1275
- onClick: () => onOpenRow(id),
1276
- "data-testid": `${testId}-row-${id}-label`,
1277
- children: row.name
1278
- }
1279
- ) : /* @__PURE__ */ jsxRuntime.jsx(
1280
- "span",
1281
- {
1282
- className: ROW_LABEL,
1283
- title: row.name,
1284
- "data-testid": `${testId}-row-${id}-label`,
1285
- children: row.name
1286
- }
1287
- )
1288
- }
1289
- ),
1290
- columns.map((c) => /* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-1.5 py-1", children: /* @__PURE__ */ jsxRuntime.jsx(
1291
- TagTableCell,
1292
- {
1293
- row,
1294
- column: c,
1295
- people,
1296
- tags,
1297
- onOpenTag,
1298
- onChange: onChangeValue,
1299
- l,
1300
- testId: `${testId}-cell-${id}-${c.id}`
1301
- }
1302
- ) }, c.id)),
1303
- /* @__PURE__ */ jsxRuntime.jsx("td", { className: "min-w-0 px-3 py-2", children: /* @__PURE__ */ jsxRuntime.jsx(
1304
- Evidence,
1305
- {
1306
- row,
1307
- l,
1308
- onOpenDocument,
1309
- onOpenFact,
1310
- onOpenThread,
1311
- onOpenRow,
1312
- testId: `${testId}-evidence-${id}`
1313
- }
1314
- ) })
1315
- ]
1316
- },
1317
- id
1318
- );
1319
- }),
1320
- rows.length === 0 && /* @__PURE__ */ jsxRuntime.jsx("tr", { children: /* @__PURE__ */ jsxRuntime.jsx(
1321
- "td",
1322
- {
1323
- colSpan: columns.length + 2,
1324
- className: "px-3 py-6 text-center text-sm text-muted-foreground",
1325
- children: l.empty
1326
- }
1327
- ) })
1328
- ] })
1329
- ]
1323
+ items: rows,
1324
+ columnDefs,
1325
+ getItemId: (row) => row.external_id,
1326
+ height: "auto",
1327
+ emptyState: { title: l.empty },
1328
+ gridOptions: {
1329
+ ensureDomOrder: true,
1330
+ domLayout: "autoHeight"
1331
+ },
1332
+ getRowTestId: (row) => `${testId}-row-${row.external_id}`,
1333
+ testId: `${testId}-table`
1330
1334
  }
1331
1335
  ),
1332
1336
  columns.length === 0 && rows.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "border-t border-border px-3 py-2 text-xs text-muted-foreground", children: l.noColumns })
@@ -1364,6 +1368,7 @@ function TagDetail({
1364
1368
  onOpenDocument,
1365
1369
  onOpenFact,
1366
1370
  onOpenThread,
1371
+ onOpenTaggedItems,
1367
1372
  noteLabel,
1368
1373
  noteIsValue = false,
1369
1374
  renderPassages,
@@ -1381,6 +1386,105 @@ function TagDetail({
1381
1386
  const threads = links.threads ?? [];
1382
1387
  const passages = (n) => n === 1 ? l.passage : l.passages.replace("{count}", String(n));
1383
1388
  return /* @__PURE__ */ jsxRuntime.jsxs(chunkD54JXTPG_cjs.DetailBody, { className, testId, children: [
1389
+ onOpenTaggedItems ? /* @__PURE__ */ jsxRuntime.jsx(
1390
+ TagContentCounts,
1391
+ {
1392
+ row,
1393
+ l: cellLabels,
1394
+ onOpenTaggedItems,
1395
+ testId: `${testId}-counts`
1396
+ }
1397
+ ) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1398
+ /* @__PURE__ */ jsxRuntime.jsx(
1399
+ chunkD54JXTPG_cjs.DetailSection,
1400
+ {
1401
+ title: l.documents,
1402
+ count: links.doc_count,
1403
+ shown: docs.length,
1404
+ showingLabel: l.showing,
1405
+ testId: `${testId}-documents`,
1406
+ children: docs.length ? /* @__PURE__ */ jsxRuntime.jsx(chunkD54JXTPG_cjs.DetailLinkList, { children: docs.map((d) => /* @__PURE__ */ jsxRuntime.jsx(
1407
+ chunkD54JXTPG_cjs.DetailLinkItem,
1408
+ {
1409
+ icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "size-4" }),
1410
+ onClick: onOpenDocument ? () => onOpenDocument(d.doc_ext_id) : void 0,
1411
+ testId: `${testId}-doc-${d.doc_ext_id}`,
1412
+ trailing: d.citations_count > 0 && !renderPassages && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-xs text-muted-foreground", children: passages(d.citations_count) }),
1413
+ after: d.citations_count > 0 && renderPassages && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 px-3 py-2 text-xs", children: renderPassages(d, passages(d.citations_count)) }),
1414
+ children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "min-w-0 flex-1", children: [
1415
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block truncate font-medium", children: d.file_name }),
1416
+ (d.note || noteIsValue) && /* @__PURE__ */ jsxRuntime.jsxs(
1417
+ "span",
1418
+ {
1419
+ className: ui.cn(
1420
+ "mt-0.5 flex min-w-0 items-baseline gap-2",
1421
+ noteIsValue ? "text-base text-foreground" : "text-muted-foreground"
1422
+ ),
1423
+ "data-testid": `${testId}-doc-${d.doc_ext_id}-note`,
1424
+ children: [
1425
+ noteLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-xs font-medium uppercase tracking-wide text-muted-foreground", children: noteLabel }),
1426
+ /* @__PURE__ */ jsxRuntime.jsx(
1427
+ "span",
1428
+ {
1429
+ className: ui.cn(
1430
+ "line-clamp-3 min-w-0 whitespace-pre-line",
1431
+ noteIsValue && "font-semibold",
1432
+ !d.note && "font-normal italic text-muted-foreground"
1433
+ ),
1434
+ children: d.note || l.noValue
1435
+ }
1436
+ )
1437
+ ]
1438
+ }
1439
+ )
1440
+ ] })
1441
+ },
1442
+ d.doc_ext_id
1443
+ )) }) : /* @__PURE__ */ jsxRuntime.jsx(chunkD54JXTPG_cjs.DetailEmpty, { children: l.noDocuments })
1444
+ }
1445
+ ),
1446
+ /* @__PURE__ */ jsxRuntime.jsx(
1447
+ chunkD54JXTPG_cjs.DetailSection,
1448
+ {
1449
+ title: l.facts,
1450
+ count: links.fact_count,
1451
+ shown: facts.length,
1452
+ showingLabel: l.showing,
1453
+ testId: `${testId}-facts`,
1454
+ children: facts.length ? /* @__PURE__ */ jsxRuntime.jsx(chunkD54JXTPG_cjs.DetailLinkList, { children: facts.map((f) => /* @__PURE__ */ jsxRuntime.jsx(
1455
+ chunkD54JXTPG_cjs.DetailLinkItem,
1456
+ {
1457
+ icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Lightbulb, { className: "size-4" }),
1458
+ onClick: onOpenFact ? () => onOpenFact(f.fact_ext_id) : void 0,
1459
+ testId: `${testId}-fact-${f.fact_ext_id}`,
1460
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "line-clamp-3 min-w-0 flex-1", children: f.text })
1461
+ },
1462
+ f.fact_ext_id
1463
+ )) }) : /* @__PURE__ */ jsxRuntime.jsx(chunkD54JXTPG_cjs.DetailEmpty, { children: l.noFacts })
1464
+ }
1465
+ ),
1466
+ /* @__PURE__ */ jsxRuntime.jsx(
1467
+ chunkD54JXTPG_cjs.DetailSection,
1468
+ {
1469
+ title: l.threads,
1470
+ count: links.thread_count,
1471
+ shown: threads.length,
1472
+ showingLabel: l.showing,
1473
+ testId: `${testId}-threads`,
1474
+ children: threads.length ? /* @__PURE__ */ jsxRuntime.jsx(chunkD54JXTPG_cjs.DetailLinkList, { children: threads.map((t) => /* @__PURE__ */ jsxRuntime.jsx(
1475
+ chunkD54JXTPG_cjs.DetailLinkItem,
1476
+ {
1477
+ icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MessagesSquare, { className: "size-4" }),
1478
+ onClick: onOpenThread ? () => onOpenThread(t.conversation_ext_id) : void 0,
1479
+ testId: `${testId}-thread-${t.conversation_ext_id}`,
1480
+ trailing: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-xs text-muted-foreground", children: l.threadUpdated.replace("{date}", formatDay(t.updated_at)) }),
1481
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate font-medium", children: t.title || l.untitledThread })
1482
+ },
1483
+ t.conversation_ext_id
1484
+ )) }) : /* @__PURE__ */ jsxRuntime.jsx(chunkD54JXTPG_cjs.DetailEmpty, { children: l.noThreads })
1485
+ }
1486
+ )
1487
+ ] }),
1384
1488
  fields.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkD54JXTPG_cjs.DetailSection, { title: l.fields, testId: `${testId}-fields`, children: /* @__PURE__ */ jsxRuntime.jsx(chunkD54JXTPG_cjs.DetailFields, { children: fields.map((field) => /* @__PURE__ */ jsxRuntime.jsx(chunkD54JXTPG_cjs.DetailField, { label: field.name, children: /* @__PURE__ */ jsxRuntime.jsx(
1385
1489
  TagTableCell,
1386
1490
  {
@@ -1393,96 +1497,7 @@ function TagDetail({
1393
1497
  l: cellLabels,
1394
1498
  testId: `${testId}-field-${field.id}`
1395
1499
  }
1396
- ) }, field.id)) }) }),
1397
- /* @__PURE__ */ jsxRuntime.jsx(
1398
- chunkD54JXTPG_cjs.DetailSection,
1399
- {
1400
- title: l.documents,
1401
- count: links.doc_count,
1402
- shown: docs.length,
1403
- showingLabel: l.showing,
1404
- testId: `${testId}-documents`,
1405
- children: docs.length ? /* @__PURE__ */ jsxRuntime.jsx(chunkD54JXTPG_cjs.DetailLinkList, { children: docs.map((d) => /* @__PURE__ */ jsxRuntime.jsx(
1406
- chunkD54JXTPG_cjs.DetailLinkItem,
1407
- {
1408
- icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "size-4" }),
1409
- onClick: onOpenDocument ? () => onOpenDocument(d.doc_ext_id) : void 0,
1410
- testId: `${testId}-doc-${d.doc_ext_id}`,
1411
- trailing: d.citations_count > 0 && !renderPassages && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-xs text-muted-foreground", children: passages(d.citations_count) }),
1412
- after: d.citations_count > 0 && renderPassages && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 px-3 py-2 text-xs", children: renderPassages(d, passages(d.citations_count)) }),
1413
- children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "min-w-0 flex-1", children: [
1414
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block truncate font-medium", children: d.file_name }),
1415
- (d.note || noteIsValue) && /* @__PURE__ */ jsxRuntime.jsxs(
1416
- "span",
1417
- {
1418
- className: ui.cn(
1419
- "mt-0.5 flex min-w-0 items-baseline gap-2",
1420
- noteIsValue ? "text-base text-foreground" : "text-muted-foreground"
1421
- ),
1422
- "data-testid": `${testId}-doc-${d.doc_ext_id}-note`,
1423
- children: [
1424
- noteLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-xs font-medium uppercase tracking-wide text-muted-foreground", children: noteLabel }),
1425
- /* @__PURE__ */ jsxRuntime.jsx(
1426
- "span",
1427
- {
1428
- className: ui.cn(
1429
- "line-clamp-3 min-w-0 whitespace-pre-line",
1430
- noteIsValue && "font-semibold",
1431
- !d.note && "font-normal italic text-muted-foreground"
1432
- ),
1433
- children: d.note || l.noValue
1434
- }
1435
- )
1436
- ]
1437
- }
1438
- )
1439
- ] })
1440
- },
1441
- d.doc_ext_id
1442
- )) }) : /* @__PURE__ */ jsxRuntime.jsx(chunkD54JXTPG_cjs.DetailEmpty, { children: l.noDocuments })
1443
- }
1444
- ),
1445
- /* @__PURE__ */ jsxRuntime.jsx(
1446
- chunkD54JXTPG_cjs.DetailSection,
1447
- {
1448
- title: l.facts,
1449
- count: links.fact_count,
1450
- shown: facts.length,
1451
- showingLabel: l.showing,
1452
- testId: `${testId}-facts`,
1453
- children: facts.length ? /* @__PURE__ */ jsxRuntime.jsx(chunkD54JXTPG_cjs.DetailLinkList, { children: facts.map((f) => /* @__PURE__ */ jsxRuntime.jsx(
1454
- chunkD54JXTPG_cjs.DetailLinkItem,
1455
- {
1456
- icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Lightbulb, { className: "size-4" }),
1457
- onClick: onOpenFact ? () => onOpenFact(f.fact_ext_id) : void 0,
1458
- testId: `${testId}-fact-${f.fact_ext_id}`,
1459
- children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "line-clamp-3 min-w-0 flex-1", children: f.text })
1460
- },
1461
- f.fact_ext_id
1462
- )) }) : /* @__PURE__ */ jsxRuntime.jsx(chunkD54JXTPG_cjs.DetailEmpty, { children: l.noFacts })
1463
- }
1464
- ),
1465
- /* @__PURE__ */ jsxRuntime.jsx(
1466
- chunkD54JXTPG_cjs.DetailSection,
1467
- {
1468
- title: l.threads,
1469
- count: links.thread_count,
1470
- shown: threads.length,
1471
- showingLabel: l.showing,
1472
- testId: `${testId}-threads`,
1473
- children: threads.length ? /* @__PURE__ */ jsxRuntime.jsx(chunkD54JXTPG_cjs.DetailLinkList, { children: threads.map((t) => /* @__PURE__ */ jsxRuntime.jsx(
1474
- chunkD54JXTPG_cjs.DetailLinkItem,
1475
- {
1476
- icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MessagesSquare, { className: "size-4" }),
1477
- onClick: onOpenThread ? () => onOpenThread(t.conversation_ext_id) : void 0,
1478
- testId: `${testId}-thread-${t.conversation_ext_id}`,
1479
- trailing: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-xs text-muted-foreground", children: l.threadUpdated.replace("{date}", formatDay(t.updated_at)) }),
1480
- children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate font-medium", children: t.title || l.untitledThread })
1481
- },
1482
- t.conversation_ext_id
1483
- )) }) : /* @__PURE__ */ jsxRuntime.jsx(chunkD54JXTPG_cjs.DetailEmpty, { children: l.noThreads })
1484
- }
1485
- )
1500
+ ) }, field.id)) }) })
1486
1501
  ] });
1487
1502
  }
1488
1503
 
@@ -1752,66 +1767,6 @@ function tagKindDescription(kind) {
1752
1767
  return `${ui.tagKindTitle(kind, { plural: true })}.`;
1753
1768
  }
1754
1769
  }
1755
- function TagPicker({ tags, selectedId, kinds, onSelect, onCreate }) {
1756
- const [open, setOpen] = react.useState(false);
1757
- const [kind, ...otherKinds] = kinds;
1758
- const noun = ui.tagKindNouns(kind);
1759
- const create = (name, as) => {
1760
- setOpen(false);
1761
- void onCreate?.(name, as);
1762
- };
1763
- const selected = tags.find((t) => t.external_id === selectedId);
1764
- const placeholder = onCreate ? `Find or create a ${noun.singular}\u2026` : `Find a ${noun.singular}\u2026`;
1765
- return /* @__PURE__ */ jsxRuntime.jsxs(ui.Popover, { open, onOpenChange: setOpen, children: [
1766
- /* @__PURE__ */ jsxRuntime.jsx(ui.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
1767
- "button",
1768
- {
1769
- type: "button",
1770
- className: "flex h-9 w-72 max-w-full items-center gap-2 rounded-md border border-input bg-background px-3 text-left text-sm hover:bg-muted/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
1771
- "data-testid": "tags-picker",
1772
- children: [
1773
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "size-4 shrink-0 text-muted-foreground" }),
1774
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: selected ? "min-w-0 flex-1 truncate" : "flex-1 text-muted-foreground", children: selected?.name ?? placeholder }),
1775
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "size-4 shrink-0 text-muted-foreground" })
1776
- ]
1777
- }
1778
- ) }),
1779
- open && /* @__PURE__ */ jsxRuntime.jsx(
1780
- ui.PopoverContent,
1781
- {
1782
- className: "w-[var(--radix-popover-trigger-width)] min-w-72 p-0",
1783
- align: "start",
1784
- sideOffset: 4,
1785
- "data-testid": "tags-picker-list",
1786
- children: /* @__PURE__ */ jsxRuntime.jsx(
1787
- chunk5Y6V7F6W_cjs.LabelPickerList,
1788
- {
1789
- options: tags.map((t) => ({
1790
- id: t.external_id,
1791
- name: t.name,
1792
- color: ui.getEntityColor(t.external_id, "medium")
1793
- })),
1794
- appliedIds: new Set(selectedId ? [selectedId] : []),
1795
- onToggle: (id) => {
1796
- setOpen(false);
1797
- onSelect(id);
1798
- },
1799
- onCreate: onCreate ? (name) => create(name, kind) : void 0,
1800
- moreCreates: onCreate ? otherKinds.map((other) => ({
1801
- label: (name) => `Create ${ui.tagKindNouns(other).singular} \u201C${name}\u201D`,
1802
- onCreate: (name) => create(name, other)
1803
- })) : void 0,
1804
- labels: {
1805
- searchPlaceholder: placeholder,
1806
- noLabels: `No ${noun.plural} yet`,
1807
- create: (name) => `Create ${noun.singular} \u201C${name}\u201D`
1808
- }
1809
- }
1810
- )
1811
- }
1812
- )
1813
- ] });
1814
- }
1815
1770
  var EXTRACT_LIMIT = 500;
1816
1771
  var isTopLevel = (d) => !d.parent_ext_id;
1817
1772
  function ExtractEntitiesDialog({
@@ -1941,14 +1896,11 @@ exports.GridRowNavigator = GridRowNavigator;
1941
1896
  exports.IDENTITY_NAME_MAX_LENGTH = IDENTITY_NAME_MAX_LENGTH;
1942
1897
  exports.LoadingIndicator = LoadingIndicator;
1943
1898
  exports.TAG_TABLE_DOCX_LANDSCAPE_AFTER = TAG_TABLE_DOCX_LANDSCAPE_AFTER;
1944
- exports.TIPS_VISIBILITY_OVERRIDE = TIPS_VISIBILITY_OVERRIDE;
1945
1899
  exports.TagColumnsEditor = TagColumnsEditor;
1946
1900
  exports.TagDetail = TagDetail;
1947
- exports.TagPicker = TagPicker;
1948
1901
  exports.TagTable = TagTable;
1949
1902
  exports.TagTableCell = TagTableCell;
1950
1903
  exports.Toolbar = Toolbar;
1951
- exports.WELCOME_REPLAY_VIEW = WELCOME_REPLAY_VIEW;
1952
1904
  exports.WorkspaceActivityList = WorkspaceActivityList;
1953
1905
  exports.cellText = cellText;
1954
1906
  exports.cellValue = cellValue;
@@ -1963,8 +1915,6 @@ exports.glossaryMarkdown = glossaryMarkdown;
1963
1915
  exports.isGap = isGap;
1964
1916
  exports.parseCell = parseCell;
1965
1917
  exports.rowLinks = rowLinks;
1966
- exports.setHintsSessionOverride = setHintsSessionOverride;
1967
- exports.startWelcomeReplay = startWelcomeReplay;
1968
1918
  exports.tagDetailLabels = tagDetailLabels;
1969
1919
  exports.tagKindDescription = tagKindDescription;
1970
1920
  exports.tagNoteLabel = tagNoteLabel;
@@ -1976,5 +1926,5 @@ exports.tagsPageNouns = tagsPageNouns;
1976
1926
  exports.useTipsPlacement = useTipsPlacement;
1977
1927
  exports.workspaceActivityHeadline = workspaceActivityHeadline;
1978
1928
  exports.workspaceActivityTarget = workspaceActivityTarget;
1979
- //# sourceMappingURL=chunk-PT6D5B6L.cjs.map
1980
- //# sourceMappingURL=chunk-PT6D5B6L.cjs.map
1929
+ //# sourceMappingURL=chunk-MAUJVVFJ.cjs.map
1930
+ //# sourceMappingURL=chunk-MAUJVVFJ.cjs.map