@arbidocs/blocks 0.4.164 → 0.4.166

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 (114) hide show
  1. package/dist/{ConnectedNativeDocxComparison-SAYKB52H.js → ConnectedNativeDocxComparison-MSX6OCMN.js} +6 -6
  2. package/dist/{ConnectedStreamedWordArtifact-2T6ZBLUV.js.map → ConnectedNativeDocxComparison-MSX6OCMN.js.map} +1 -1
  3. package/dist/{ConnectedNativeDocxComparison-4LSTT6MZ.cjs → ConnectedNativeDocxComparison-S4XHG3XN.cjs} +7 -7
  4. package/dist/{ConnectedNativeDocxComparison-4LSTT6MZ.cjs.map → ConnectedNativeDocxComparison-S4XHG3XN.cjs.map} +1 -1
  5. package/dist/{ConnectedNativeDocxEditor-OGZ3UPSY.cjs → ConnectedNativeDocxEditor-4G7LNREO.cjs} +7 -7
  6. package/dist/{ConnectedNativeDocxEditor-OGZ3UPSY.cjs.map → ConnectedNativeDocxEditor-4G7LNREO.cjs.map} +1 -1
  7. package/dist/{ConnectedNativeDocxEditor-G6RTBKEB.js → ConnectedNativeDocxEditor-CTWKXXQQ.js} +5 -5
  8. package/dist/{ConnectedNativeDocxEditor-G6RTBKEB.js.map → ConnectedNativeDocxEditor-CTWKXXQQ.js.map} +1 -1
  9. package/dist/{ConnectedStreamedWordArtifact-5SIOSURE.cjs → ConnectedStreamedWordArtifact-DQGOIULU.cjs} +7 -7
  10. package/dist/ConnectedStreamedWordArtifact-DQGOIULU.cjs.map +1 -0
  11. package/dist/{ConnectedStreamedWordArtifact-2T6ZBLUV.js → ConnectedStreamedWordArtifact-HIILV2RB.js} +6 -6
  12. package/dist/{ConnectedNativeDocxComparison-SAYKB52H.js.map → ConnectedStreamedWordArtifact-HIILV2RB.js.map} +1 -1
  13. package/dist/NativeDocxEditor-T2PJIZMU.cjs +1 -1
  14. package/dist/NativeDocxEditor-TBTBD6TC.js +1 -1
  15. package/dist/{WorkspaceTableView-EJKJZ6R4.js → WorkspaceTableView-CJ3QPV2X.js} +6 -6
  16. package/dist/{WorkspaceTableView-EJKJZ6R4.js.map → WorkspaceTableView-CJ3QPV2X.js.map} +1 -1
  17. package/dist/{WorkspaceTableView-G22XS4ZK.cjs → WorkspaceTableView-VEW6SMZ6.cjs} +8 -8
  18. package/dist/{WorkspaceTableView-G22XS4ZK.cjs.map → WorkspaceTableView-VEW6SMZ6.cjs.map} +1 -1
  19. package/dist/agents/index.cjs +238 -238
  20. package/dist/agents/index.js +4 -4
  21. package/dist/calls/index.cjs +3 -3
  22. package/dist/calls/index.js +2 -2
  23. package/dist/{chunk-LPUQHIVP.cjs → chunk-3VW7ZXQ6.cjs} +4 -4
  24. package/dist/{chunk-LPUQHIVP.cjs.map → chunk-3VW7ZXQ6.cjs.map} +1 -1
  25. package/dist/{chunk-3EYPVHSY.js → chunk-4MFSGPEH.js} +3 -3
  26. package/dist/{chunk-3EYPVHSY.js.map → chunk-4MFSGPEH.js.map} +1 -1
  27. package/dist/{chunk-Y3AXV27O.cjs → chunk-5C7DRQQE.cjs} +5 -5
  28. package/dist/{chunk-Y3AXV27O.cjs.map → chunk-5C7DRQQE.cjs.map} +1 -1
  29. package/dist/{chunk-IZ6SDB2Q.js → chunk-6E5XJC6L.js} +3 -3
  30. package/dist/{chunk-IZ6SDB2Q.js.map → chunk-6E5XJC6L.js.map} +1 -1
  31. package/dist/{chunk-UJEH5REK.cjs → chunk-AODZXDEE.cjs} +3 -3
  32. package/dist/{chunk-UJEH5REK.cjs.map → chunk-AODZXDEE.cjs.map} +1 -1
  33. package/dist/{chunk-F5RV6Z4T.cjs → chunk-APNFKXQ5.cjs} +48 -48
  34. package/dist/{chunk-F5RV6Z4T.cjs.map → chunk-APNFKXQ5.cjs.map} +1 -1
  35. package/dist/{chunk-W7M5QVJ3.js → chunk-DIPB7UR2.js} +5 -5
  36. package/dist/{chunk-W7M5QVJ3.js.map → chunk-DIPB7UR2.js.map} +1 -1
  37. package/dist/{chunk-ZAVEMQ37.cjs → chunk-DWZXSPMB.cjs} +3 -3
  38. package/dist/{chunk-ZAVEMQ37.cjs.map → chunk-DWZXSPMB.cjs.map} +1 -1
  39. package/dist/{chunk-ITMHL3HI.cjs → chunk-ECQR3VPP.cjs} +4 -4
  40. package/dist/{chunk-ITMHL3HI.cjs.map → chunk-ECQR3VPP.cjs.map} +1 -1
  41. package/dist/{chunk-L5GDCJPP.js → chunk-J7YHBMBB.js} +4 -4
  42. package/dist/{chunk-L5GDCJPP.js.map → chunk-J7YHBMBB.js.map} +1 -1
  43. package/dist/{chunk-XHJAYCPQ.js → chunk-JTJCCL2E.js} +3 -3
  44. package/dist/{chunk-XHJAYCPQ.js.map → chunk-JTJCCL2E.js.map} +1 -1
  45. package/dist/{chunk-XYYOZATD.js → chunk-KBOA5UFJ.js} +3 -3
  46. package/dist/{chunk-XYYOZATD.js.map → chunk-KBOA5UFJ.js.map} +1 -1
  47. package/dist/{chunk-YRI5HWSS.js → chunk-KNCJSPXV.js} +3 -3
  48. package/dist/{chunk-YRI5HWSS.js.map → chunk-KNCJSPXV.js.map} +1 -1
  49. package/dist/{chunk-FN5LMFMI.js → chunk-KS5VQKI2.js} +3 -3
  50. package/dist/{chunk-FN5LMFMI.js.map → chunk-KS5VQKI2.js.map} +1 -1
  51. package/dist/{chunk-H55HBIBH.js → chunk-MXD2R4HR.js} +3 -3
  52. package/dist/{chunk-H55HBIBH.js.map → chunk-MXD2R4HR.js.map} +1 -1
  53. package/dist/{chunk-5D5YDIBC.cjs → chunk-NUAC5GTQ.cjs} +3 -3
  54. package/dist/{chunk-5D5YDIBC.cjs.map → chunk-NUAC5GTQ.cjs.map} +1 -1
  55. package/dist/{chunk-NVVBRQN2.cjs → chunk-PTSTVYQD.cjs} +3 -3
  56. package/dist/{chunk-NVVBRQN2.cjs.map → chunk-PTSTVYQD.cjs.map} +1 -1
  57. package/dist/{chunk-YEYN3GHT.js → chunk-RMJ6DH7F.js} +3 -3
  58. package/dist/{chunk-YEYN3GHT.js.map → chunk-RMJ6DH7F.js.map} +1 -1
  59. package/dist/{chunk-NMU6VW4D.cjs → chunk-SG3OH7ZM.cjs} +4 -4
  60. package/dist/{chunk-NMU6VW4D.cjs.map → chunk-SG3OH7ZM.cjs.map} +1 -1
  61. package/dist/{chunk-CVDIWVSU.js → chunk-SQQU3WRB.js} +3 -3
  62. package/dist/{chunk-CVDIWVSU.js.map → chunk-SQQU3WRB.js.map} +1 -1
  63. package/dist/{chunk-G2Z2KARY.cjs → chunk-SYTZ3UAU.cjs} +5 -5
  64. package/dist/{chunk-G2Z2KARY.cjs.map → chunk-SYTZ3UAU.cjs.map} +1 -1
  65. package/dist/{chunk-D7BUC2GM.js → chunk-TWVXDRLH.js} +3 -3
  66. package/dist/{chunk-D7BUC2GM.js.map → chunk-TWVXDRLH.js.map} +1 -1
  67. package/dist/{chunk-OISSVUGI.cjs → chunk-U7OUZHBH.cjs} +3 -3
  68. package/dist/{chunk-OISSVUGI.cjs.map → chunk-U7OUZHBH.cjs.map} +1 -1
  69. package/dist/{chunk-ECERC6TI.js → chunk-VHJHY7TT.js} +3 -3
  70. package/dist/{chunk-ECERC6TI.js.map → chunk-VHJHY7TT.js.map} +1 -1
  71. package/dist/{chunk-UUN2WGGM.cjs → chunk-XGFNZTPO.cjs} +3 -3
  72. package/dist/{chunk-UUN2WGGM.cjs.map → chunk-XGFNZTPO.cjs.map} +1 -1
  73. package/dist/{chunk-DX5Y2NO5.cjs → chunk-YNSSIULM.cjs} +5 -5
  74. package/dist/{chunk-DX5Y2NO5.cjs.map → chunk-YNSSIULM.cjs.map} +1 -1
  75. package/dist/collaboration/index.cjs +71 -71
  76. package/dist/collaboration/index.js +2 -2
  77. package/dist/connect/docx.cjs +9 -9
  78. package/dist/connect/docx.js +5 -5
  79. package/dist/connect/index.cjs +654 -654
  80. package/dist/connect/index.cjs.map +1 -1
  81. package/dist/connect/index.js +15 -15
  82. package/dist/connect/index.js.map +1 -1
  83. package/dist/connect/viewer.cjs +61 -61
  84. package/dist/connect/viewer.js +10 -10
  85. package/dist/connection/ConnectedWorkflowsTable.d.ts +1 -0
  86. package/dist/connection/workspace-list/useConnectedWorkspaceList.d.ts +2 -0
  87. package/dist/connection/workspace-settings/useConnectedWorkspaceSettings.d.ts +4 -0
  88. package/dist/document-tools/index.cjs +20 -20
  89. package/dist/document-tools/index.js +3 -3
  90. package/dist/docx/index.cjs +1 -1
  91. package/dist/docx/index.js +1 -1
  92. package/dist/facts/index.cjs +2 -2
  93. package/dist/facts/index.js +2 -2
  94. package/dist/files/index.cjs +224 -224
  95. package/dist/files/index.js +4 -4
  96. package/dist/home/index.cjs +2 -2
  97. package/dist/home/index.js +2 -2
  98. package/dist/index.cjs +413 -413
  99. package/dist/index.js +8 -8
  100. package/dist/retrieval/index.cjs +1 -1
  101. package/dist/retrieval/index.js +1 -1
  102. package/dist/settings/index.cjs +158 -158
  103. package/dist/settings/index.js +3 -3
  104. package/dist/shell/index.cjs +2 -2
  105. package/dist/shell/index.js +2 -2
  106. package/dist/studio/index.cjs +2 -2
  107. package/dist/studio/index.js +2 -2
  108. package/dist/workflow-canvas/index.cjs +16 -16
  109. package/dist/workflow-canvas/index.js +4 -4
  110. package/node_modules/@arbidocs/coedit/package.json +1 -1
  111. package/node_modules/@docx-editor.dev/core/dist/chunk-LWDSDCMO.js +1 -1
  112. package/node_modules/@docx-editor.dev/core/dist/chunk-RCHS4ZEH.cjs +1 -1
  113. package/package.json +5 -5
  114. package/dist/ConnectedStreamedWordArtifact-5SIOSURE.cjs.map +0 -1
@@ -1,17 +1,17 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkDX5Y2NO5_cjs = require('../chunk-DX5Y2NO5.cjs');
4
+ var chunkYNSSIULM_cjs = require('../chunk-YNSSIULM.cjs');
5
5
  var chunk3CUORKDL_cjs = require('../chunk-3CUORKDL.cjs');
6
6
  var chunkJUUOJP7I_cjs = require('../chunk-JUUOJP7I.cjs');
7
7
  var chunkOHCYJFV2_cjs = require('../chunk-OHCYJFV2.cjs');
8
8
  var chunkOU3RGQFX_cjs = require('../chunk-OU3RGQFX.cjs');
9
9
  require('../chunk-REH7PX3N.cjs');
10
- var chunkUUN2WGGM_cjs = require('../chunk-UUN2WGGM.cjs');
10
+ var chunkXGFNZTPO_cjs = require('../chunk-XGFNZTPO.cjs');
11
11
  var chunkAYJZRBHG_cjs = require('../chunk-AYJZRBHG.cjs');
12
- var chunkNVVBRQN2_cjs = require('../chunk-NVVBRQN2.cjs');
12
+ var chunkPTSTVYQD_cjs = require('../chunk-PTSTVYQD.cjs');
13
13
  var chunkH5542IOD_cjs = require('../chunk-H5542IOD.cjs');
14
- var chunk5D5YDIBC_cjs = require('../chunk-5D5YDIBC.cjs');
14
+ var chunkNUAC5GTQ_cjs = require('../chunk-NUAC5GTQ.cjs');
15
15
  require('../chunk-223D4727.cjs');
16
16
  var chunkBGJZVJJM_cjs = require('../chunk-BGJZVJJM.cjs');
17
17
  var chunkAYKE6USO_cjs = require('../chunk-AYKE6USO.cjs');
@@ -23,13 +23,13 @@ require('../chunk-JPWPR6QU.cjs');
23
23
  var chunkLMQOTLG4_cjs = require('../chunk-LMQOTLG4.cjs');
24
24
  var chunk2WLXQGWC_cjs = require('../chunk-2WLXQGWC.cjs');
25
25
  var chunk5FYU7ZIU_cjs = require('../chunk-5FYU7ZIU.cjs');
26
- var chunkG2Z2KARY_cjs = require('../chunk-G2Z2KARY.cjs');
26
+ var chunkSYTZ3UAU_cjs = require('../chunk-SYTZ3UAU.cjs');
27
27
  var chunkXAJIKT6Y_cjs = require('../chunk-XAJIKT6Y.cjs');
28
28
  var chunkGOWXP5KT_cjs = require('../chunk-GOWXP5KT.cjs');
29
29
  var chunkQZTNTP75_cjs = require('../chunk-QZTNTP75.cjs');
30
30
  require('../chunk-PCB2BPN3.cjs');
31
31
  require('../chunk-NWNVWO6L.cjs');
32
- var chunkOISSVUGI_cjs = require('../chunk-OISSVUGI.cjs');
32
+ var chunkU7OUZHBH_cjs = require('../chunk-U7OUZHBH.cjs');
33
33
  require('../chunk-7G2LJMUG.cjs');
34
34
  var chunk5Y6V7F6W_cjs = require('../chunk-5Y6V7F6W.cjs');
35
35
  var chunkV46W7YLI_cjs = require('../chunk-V46W7YLI.cjs');
@@ -41,7 +41,7 @@ var chunkQT3A4PFC_cjs = require('../chunk-QT3A4PFC.cjs');
41
41
  var chunkKMZO5W6D_cjs = require('../chunk-KMZO5W6D.cjs');
42
42
  var chunkVPPX5XUF_cjs = require('../chunk-VPPX5XUF.cjs');
43
43
  var chunkRC25WMVB_cjs = require('../chunk-RC25WMVB.cjs');
44
- var chunkUJEH5REK_cjs = require('../chunk-UJEH5REK.cjs');
44
+ var chunkAODZXDEE_cjs = require('../chunk-AODZXDEE.cjs');
45
45
  var chunkRFIBUWLF_cjs = require('../chunk-RFIBUWLF.cjs');
46
46
  var chunkZV4DNZ5N_cjs = require('../chunk-ZV4DNZ5N.cjs');
47
47
  var chunkTNESYDBR_cjs = require('../chunk-TNESYDBR.cjs');
@@ -58,11 +58,8 @@ var chunkQVBZESYQ_cjs = require('../chunk-QVBZESYQ.cjs');
58
58
  require('../chunk-ADOKTJHV.cjs');
59
59
  var chunkLLYZGH3L_cjs = require('../chunk-LLYZGH3L.cjs');
60
60
  var chunkBIXHB4LV_cjs = require('../chunk-BIXHB4LV.cjs');
61
- var chunkZAVEMQ37_cjs = require('../chunk-ZAVEMQ37.cjs');
61
+ var chunkDWZXSPMB_cjs = require('../chunk-DWZXSPMB.cjs');
62
62
  var chunkMEMWZ72Y_cjs = require('../chunk-MEMWZ72Y.cjs');
63
- var chunkZMYW5M75_cjs = require('../chunk-ZMYW5M75.cjs');
64
- var chunkEFEFLBRM_cjs = require('../chunk-EFEFLBRM.cjs');
65
- var chunkULWRNGGE_cjs = require('../chunk-ULWRNGGE.cjs');
66
63
  var chunk5A2QQAF5_cjs = require('../chunk-5A2QQAF5.cjs');
67
64
  require('../chunk-B6MVQCXW.cjs');
68
65
  var chunkJKB7WT7L_cjs = require('../chunk-JKB7WT7L.cjs');
@@ -73,6 +70,9 @@ require('../chunk-7UTB4PHM.cjs');
73
70
  var chunkFX3K6LNZ_cjs = require('../chunk-FX3K6LNZ.cjs');
74
71
  require('../chunk-PPCATBOY.cjs');
75
72
  require('../chunk-MHVNT4J3.cjs');
73
+ var chunkZMYW5M75_cjs = require('../chunk-ZMYW5M75.cjs');
74
+ var chunkEFEFLBRM_cjs = require('../chunk-EFEFLBRM.cjs');
75
+ var chunkULWRNGGE_cjs = require('../chunk-ULWRNGGE.cjs');
76
76
  var chunkKDG6FER6_cjs = require('../chunk-KDG6FER6.cjs');
77
77
  require('../chunk-DES3K4SD.cjs');
78
78
  var reactQuery = require('@tanstack/react-query');
@@ -169,7 +169,7 @@ function ConnectedWorkspaceActivity({
169
169
  [feed.data]
170
170
  );
171
171
  return /* @__PURE__ */ jsxRuntime.jsx(
172
- chunkG2Z2KARY_cjs.WorkspaceActivityList,
172
+ chunkSYTZ3UAU_cjs.WorkspaceActivityList,
173
173
  {
174
174
  ...listProps,
175
175
  items,
@@ -597,7 +597,7 @@ function NotificationCenter({
597
597
  }
598
598
  ];
599
599
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-full bg-background", "data-testid": "notifications-page", children: [
600
- /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.DraggableHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(
600
+ /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.DraggableHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(
601
601
  chunkMEMWZ72Y_cjs.TabHeader,
602
602
  {
603
603
  tabs,
@@ -847,7 +847,7 @@ function ConnectedWorkspaceNotificationMenu({
847
847
  }, [error, notify14]);
848
848
  if (!workspaceId) return null;
849
849
  return /* @__PURE__ */ jsxRuntime.jsx(
850
- chunkG2Z2KARY_cjs.WorkspaceNotificationMenu,
850
+ chunkSYTZ3UAU_cjs.WorkspaceNotificationMenu,
851
851
  {
852
852
  ...menuProps,
853
853
  level,
@@ -866,7 +866,7 @@ function ConnectedThreadFollow({
866
866
  enabled: live
867
867
  });
868
868
  if (!conversationId) return null;
869
- const Control = as === "menu-item" ? chunkG2Z2KARY_cjs.ThreadFollowMenuItem : chunkG2Z2KARY_cjs.ThreadFollowButton;
869
+ const Control = as === "menu-item" ? chunkSYTZ3UAU_cjs.ThreadFollowMenuItem : chunkSYTZ3UAU_cjs.ThreadFollowButton;
870
870
  return /* @__PURE__ */ jsxRuntime.jsx(
871
871
  Control,
872
872
  {
@@ -939,7 +939,7 @@ function ConnectedSkillUpload({ onDone, labels, className }) {
939
939
  onChange: (e) => {
940
940
  const file = e.target.files?.[0];
941
941
  e.target.value = "";
942
- if (file) void add(() => chunkUJEH5REK_cjs.importSkillFile(file));
942
+ if (file) void add(() => chunkAODZXDEE_cjs.importSkillFile(file));
943
943
  }
944
944
  }
945
945
  ),
@@ -964,7 +964,7 @@ function ConnectedSkillUpload({ onDone, labels, className }) {
964
964
  className: "space-y-2",
965
965
  onSubmit: (e) => {
966
966
  e.preventDefault();
967
- if (url.trim()) void add(() => chunkUJEH5REK_cjs.importSkillFromUrl(url));
967
+ if (url.trim()) void add(() => chunkAODZXDEE_cjs.importSkillFromUrl(url));
968
968
  },
969
969
  children: [
970
970
  /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "skills-add-url", children: l.fromLink }),
@@ -1027,9 +1027,9 @@ function ConnectedSkillsLibrary({
1027
1027
  const [type, setType] = react.useState("all");
1028
1028
  const [view, setView] = react.useState("gallery");
1029
1029
  const [isBusy, setIsBusy] = react.useState(false);
1030
- const all = react.useMemo(() => chunkUJEH5REK_cjs.buildLibrarySkills(builtins, listings ?? []), [builtins, listings]);
1030
+ const all = react.useMemo(() => chunkAODZXDEE_cjs.buildLibrarySkills(builtins, listings ?? []), [builtins, listings]);
1031
1031
  const shown = react.useMemo(
1032
- () => chunkUJEH5REK_cjs.filterLibrarySkills(all, { query, source, type }),
1032
+ () => chunkAODZXDEE_cjs.filterLibrarySkills(all, { query, source, type }),
1033
1033
  [all, query, source, type]
1034
1034
  );
1035
1035
  const current = all.find((s) => s.slug === selected) ?? null;
@@ -1040,21 +1040,21 @@ function ConnectedSkillsLibrary({
1040
1040
  const count2 = (s) => all.filter((x) => x.source === s).length;
1041
1041
  const sourceOptions = [
1042
1042
  { id: "all", label: "All", count: all.length },
1043
- { id: "builtin", label: chunkUJEH5REK_cjs.SKILL_SOURCE_LABELS.builtin, count: count2("builtin") },
1044
- { id: "mine", label: chunkUJEH5REK_cjs.SKILL_SOURCE_LABELS.mine, count: count2("mine") },
1045
- { id: "shared", label: chunkUJEH5REK_cjs.SKILL_SOURCE_LABELS.shared, count: count2("shared") }
1043
+ { id: "builtin", label: chunkAODZXDEE_cjs.SKILL_SOURCE_LABELS.builtin, count: count2("builtin") },
1044
+ { id: "mine", label: chunkAODZXDEE_cjs.SKILL_SOURCE_LABELS.mine, count: count2("mine") },
1045
+ { id: "shared", label: chunkAODZXDEE_cjs.SKILL_SOURCE_LABELS.shared, count: count2("shared") }
1046
1046
  ];
1047
1047
  const types = [...new Set(all.map((s) => s.type))];
1048
1048
  const typeOptions = [
1049
1049
  { id: "all", label: "Any kind" },
1050
- ...types.map((t) => ({ id: t, label: chunkUJEH5REK_cjs.SKILL_TYPE_LABELS[t] ?? t }))
1050
+ ...types.map((t) => ({ id: t, label: chunkAODZXDEE_cjs.SKILL_TYPE_LABELS[t] ?? t }))
1051
1051
  ];
1052
1052
  const pick = (slug) => {
1053
1053
  setSelected(slug);
1054
1054
  setMode("detail");
1055
1055
  };
1056
1056
  const markdownOf = async (skill) => {
1057
- if (!skill.docExtId) return chunkUJEH5REK_cjs.workflowToSkillMarkdown(skill.workflow);
1057
+ if (!skill.docExtId) return chunkAODZXDEE_cjs.workflowToSkillMarkdown(skill.workflow);
1058
1058
  const response = await arbi.documents.download(skill.docExtId);
1059
1059
  if (!response.ok) throw new Error(`Could not read the skill (${response.status})`);
1060
1060
  return response.text();
@@ -1118,7 +1118,7 @@ function ConnectedSkillsLibrary({
1118
1118
  try {
1119
1119
  documentTools.downloadBlob(
1120
1120
  new Blob([await markdownOf(skill)], { type: "text/markdown" }),
1121
- chunkUJEH5REK_cjs.SKILL_MAIN_FILENAME
1121
+ chunkAODZXDEE_cjs.SKILL_MAIN_FILENAME
1122
1122
  );
1123
1123
  } catch (error) {
1124
1124
  notify14(errorText(error, "Could not export the skill"), "error");
@@ -1159,10 +1159,10 @@ function ConnectedSkillsLibrary({
1159
1159
  }
1160
1160
  )
1161
1161
  ] }),
1162
- /* @__PURE__ */ jsxRuntime.jsx(chunkUJEH5REK_cjs.SkillViewToggle, { value: view, onChange: setView })
1162
+ /* @__PURE__ */ jsxRuntime.jsx(chunkAODZXDEE_cjs.SkillViewToggle, { value: view, onChange: setView })
1163
1163
  ] }),
1164
1164
  /* @__PURE__ */ jsxRuntime.jsx(
1165
- chunkUJEH5REK_cjs.SkillFilterChips,
1165
+ chunkAODZXDEE_cjs.SkillFilterChips,
1166
1166
  {
1167
1167
  label: "Show",
1168
1168
  value: source,
@@ -1171,7 +1171,7 @@ function ConnectedSkillsLibrary({
1171
1171
  }
1172
1172
  ),
1173
1173
  types.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
1174
- chunkUJEH5REK_cjs.SkillFilterChips,
1174
+ chunkAODZXDEE_cjs.SkillFilterChips,
1175
1175
  {
1176
1176
  label: "Kind",
1177
1177
  value: type,
@@ -1218,12 +1218,12 @@ function ConnectedSkillsLibrary({
1218
1218
  view === "gallery" ? "grid grid-cols-[repeat(auto-fill,minmax(9.5rem,1fr))]" : "flex flex-col"
1219
1219
  ),
1220
1220
  children: shown.map((skill) => /* @__PURE__ */ jsxRuntime.jsx(
1221
- chunkUJEH5REK_cjs.SkillTile,
1221
+ chunkAODZXDEE_cjs.SkillTile,
1222
1222
  {
1223
1223
  name: skill.title,
1224
1224
  testId: `skill-tile-${skill.slug}`,
1225
1225
  description: skill.description,
1226
- sourceLabel: skill.isShared ? `${chunkUJEH5REK_cjs.SKILL_SOURCE_LABELS.mine}, shared` : chunkUJEH5REK_cjs.SKILL_SOURCE_LABELS[skill.source],
1226
+ sourceLabel: skill.isShared ? `${chunkAODZXDEE_cjs.SKILL_SOURCE_LABELS.mine}, shared` : chunkAODZXDEE_cjs.SKILL_SOURCE_LABELS[skill.source],
1227
1227
  type: skill.type,
1228
1228
  icon,
1229
1229
  layout: view,
@@ -1258,7 +1258,7 @@ function ConnectedSkillsLibrary({
1258
1258
  }
1259
1259
  ),
1260
1260
  mode === "new" && /* @__PURE__ */ jsxRuntime.jsx(
1261
- chunkUJEH5REK_cjs.SkillGenerateForm,
1261
+ chunkAODZXDEE_cjs.SkillGenerateForm,
1262
1262
  {
1263
1263
  icon,
1264
1264
  onGenerate: (desc) => {
@@ -1285,11 +1285,11 @@ function ConnectedSkillsLibrary({
1285
1285
  ),
1286
1286
  mode === "add" && /* @__PURE__ */ jsxRuntime.jsx(ConnectedSkillUpload, { onDone: done }),
1287
1287
  mode === "detail" && current && /* @__PURE__ */ jsxRuntime.jsx(
1288
- chunkUJEH5REK_cjs.SkillLibraryDetail,
1288
+ chunkAODZXDEE_cjs.SkillLibraryDetail,
1289
1289
  {
1290
1290
  skill: current,
1291
1291
  icon,
1292
- instructions: current.docExtId ? currentText ? chunkUJEH5REK_cjs.parseSkillFrontmatter(currentText, chunkUJEH5REK_cjs.SKILL_MAIN_FILENAME).content : "" : current.workflow.run.kind === "prompt" ? current.workflow.run.promptTemplate : "",
1292
+ instructions: current.docExtId ? currentText ? chunkAODZXDEE_cjs.parseSkillFrontmatter(currentText, chunkAODZXDEE_cjs.SKILL_MAIN_FILENAME).content : "" : current.workflow.run.kind === "prompt" ? current.workflow.run.promptTemplate : "",
1293
1293
  isLoading: !!current.docExtId && textLoading,
1294
1294
  actions: {
1295
1295
  onRun: () => onRun(current.slug),
@@ -1324,7 +1324,7 @@ function SkillEditor({
1324
1324
  const [seeded, setSeeded] = react.useState(!isEditing);
1325
1325
  const [nameError, setNameError] = react.useState(null);
1326
1326
  if (isEditing && !seeded && text !== void 0) {
1327
- const parsed = chunkUJEH5REK_cjs.parseSkillFrontmatter(text, chunkUJEH5REK_cjs.SKILL_MAIN_FILENAME);
1327
+ const parsed = chunkAODZXDEE_cjs.parseSkillFrontmatter(text, chunkAODZXDEE_cjs.SKILL_MAIN_FILENAME);
1328
1328
  setDescription(parsed.description ?? "");
1329
1329
  setBody(parsed.content ?? "");
1330
1330
  setSeeded(true);
@@ -1338,15 +1338,15 @@ function SkillEditor({
1338
1338
  notify14("Add a short description.", "error");
1339
1339
  return;
1340
1340
  }
1341
- const slug = chunkUJEH5REK_cjs.skillSlug(name);
1341
+ const slug = chunkAODZXDEE_cjs.skillSlug(name);
1342
1342
  try {
1343
- await onSave(slug, chunkUJEH5REK_cjs.serializeSkill({ name: slug, description, body }), isEditing);
1343
+ await onSave(slug, chunkAODZXDEE_cjs.serializeSkill({ name: slug, description, body }), isEditing);
1344
1344
  } catch (err) {
1345
1345
  notify14(errorText(err, "Could not save the skill"), "error");
1346
1346
  }
1347
1347
  };
1348
1348
  return /* @__PURE__ */ jsxRuntime.jsx(
1349
- chunkUJEH5REK_cjs.SkillEditForm,
1349
+ chunkAODZXDEE_cjs.SkillEditForm,
1350
1350
  {
1351
1351
  name,
1352
1352
  onNameChange: setName,
@@ -1382,9 +1382,9 @@ function ConnectedAgentCreator({
1382
1382
  agent,
1383
1383
  initialName,
1384
1384
  onSaved,
1385
- capabilities = chunkUJEH5REK_cjs.DEFAULT_AGENT_CAPABILITIES,
1386
- templates = chunkUJEH5REK_cjs.DEFAULT_AGENT_TEMPLATES,
1387
- types = chunkUJEH5REK_cjs.DEFAULT_AGENT_TYPES,
1385
+ capabilities = chunkAODZXDEE_cjs.DEFAULT_AGENT_CAPABILITIES,
1386
+ templates = chunkAODZXDEE_cjs.DEFAULT_AGENT_TEMPLATES,
1387
+ types = chunkAODZXDEE_cjs.DEFAULT_AGENT_TYPES,
1388
1388
  canRevokeWorkspaces = false,
1389
1389
  labels
1390
1390
  }) {
@@ -1426,7 +1426,7 @@ function ConnectedAgentCreator({
1426
1426
  const initialValues = react.useMemo(
1427
1427
  () => ({
1428
1428
  name: agent?.given_name ?? initialName ?? "",
1429
- persona: isEdit ? chunkUJEH5REK_cjs.stripPersonaPreamble(String(agents.PERSONA ?? "")) : "",
1429
+ persona: isEdit ? chunkAODZXDEE_cjs.stripPersonaPreamble(String(agents.PERSONA ?? "")) : "",
1430
1430
  modelName: String(agents.AGENT_MODEL_NAME ?? ""),
1431
1431
  capabilities: Object.fromEntries(capabilities.map(({ key }) => [key, Boolean(agents[key])])),
1432
1432
  type: "builtin",
@@ -1445,7 +1445,7 @@ function ConnectedAgentCreator({
1445
1445
  try {
1446
1446
  let agentExtId = agent?.external_id ?? early?.id ?? "";
1447
1447
  if (!agentExtId) {
1448
- if (!chunkUJEH5REK_cjs.isValidAgentName(values.name)) {
1448
+ if (!chunkAODZXDEE_cjs.isValidAgentName(values.name)) {
1449
1449
  notify14("Give the agent a name first.", "error");
1450
1450
  return;
1451
1451
  }
@@ -1481,7 +1481,7 @@ function ConnectedAgentCreator({
1481
1481
  title: `agent-${name}`,
1482
1482
  sections: {
1483
1483
  Agents: {
1484
- PERSONA: chunkUJEH5REK_cjs.composePersona(name, values.persona),
1484
+ PERSONA: chunkAODZXDEE_cjs.composePersona(name, values.persona),
1485
1485
  ...values.modelName ? { AGENT_MODEL_NAME: values.modelName } : {},
1486
1486
  ...Object.fromEntries(capabilities.map(({ key }) => [key, !!values.capabilities[key]])),
1487
1487
  ENABLED_SKILLS: values.capabilities.SKILLS_ENABLED && skills.length ? skills : null,
@@ -1504,7 +1504,7 @@ function ConnectedAgentCreator({
1504
1504
  };
1505
1505
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1506
1506
  /* @__PURE__ */ jsxRuntime.jsx(
1507
- chunkUJEH5REK_cjs.AgentCreator,
1507
+ chunkAODZXDEE_cjs.AgentCreator,
1508
1508
  {
1509
1509
  open: ready,
1510
1510
  onOpenChange,
@@ -1520,11 +1520,11 @@ function ConnectedAgentCreator({
1520
1520
  ) : void 0,
1521
1521
  revokingWorkspaceId: revokeAccess.isPending ? revokeAccess.variables?.workspaceId : void 0,
1522
1522
  avatar: (values) => /* @__PURE__ */ jsxRuntime.jsx(
1523
- chunkUJEH5REK_cjs.AgentAvatarField,
1523
+ chunkAODZXDEE_cjs.AgentAvatarField,
1524
1524
  {
1525
1525
  picture,
1526
1526
  isBusy: avatarBusy,
1527
- canGenerate: isEdit || chunkUJEH5REK_cjs.isValidAgentName(values.name),
1527
+ canGenerate: isEdit || chunkAODZXDEE_cjs.isValidAgentName(values.name),
1528
1528
  onGenerate: () => handleGenerateAvatar(values)
1529
1529
  }
1530
1530
  ),
@@ -1576,7 +1576,7 @@ function ConnectedAgentCreator({
1576
1576
  /* @__PURE__ */ jsxRuntime.jsx(ui.DialogTitle, { children: "Connect your agent" }),
1577
1577
  /* @__PURE__ */ jsxRuntime.jsx(ui.DialogDescription, { children: "This key is shown once. Run the script on the machine that will host the agent." })
1578
1578
  ] }),
1579
- connect && /* @__PURE__ */ jsxRuntime.jsx(chunkUJEH5REK_cjs.AgentConnectInstructions, { email: connect.email, signingKey: connect.signingKey })
1579
+ connect && /* @__PURE__ */ jsxRuntime.jsx(chunkAODZXDEE_cjs.AgentConnectInstructions, { email: connect.email, signingKey: connect.signingKey })
1580
1580
  ]
1581
1581
  }
1582
1582
  ) })
@@ -1613,7 +1613,7 @@ function ConnectedWorkflowHistory({
1613
1613
  const { openConversation } = chunkEFEFLBRM_cjs.useBlocksEnvironment();
1614
1614
  const { data: runs = [], isLoading } = react$1.useWorkflowRuns(workflow?.external_id);
1615
1615
  return /* @__PURE__ */ jsxRuntime.jsx(
1616
- chunkUJEH5REK_cjs.TaskRunsDialog,
1616
+ chunkAODZXDEE_cjs.TaskRunsDialog,
1617
1617
  {
1618
1618
  inline,
1619
1619
  hideHeader,
@@ -1649,7 +1649,7 @@ function ConnectedTaskActivityDialog({
1649
1649
  const activity = react$1.useConversationActivity(conversationId, { live });
1650
1650
  const { data: agents = [] } = react$1.useAgents();
1651
1651
  const { userId } = chunkAYKE6USO_cjs.useConnectedWorkspace();
1652
- const { members } = chunkNVVBRQN2_cjs.useConnectedWorkspaceRole();
1652
+ const { members } = chunkPTSTVYQD_cjs.useConnectedWorkspaceRole();
1653
1653
  const renderPerson = react.useCallback(
1654
1654
  (id) => {
1655
1655
  const isMe = !!id && id === userId;
@@ -1665,7 +1665,7 @@ function ConnectedTaskActivityDialog({
1665
1665
  [agents]
1666
1666
  );
1667
1667
  return /* @__PURE__ */ jsxRuntime.jsx(
1668
- chunkUJEH5REK_cjs.TaskActivityDialog,
1668
+ chunkAODZXDEE_cjs.TaskActivityDialog,
1669
1669
  {
1670
1670
  open: true,
1671
1671
  onOpenChange: (open) => !open && onClose(),
@@ -1811,7 +1811,7 @@ function useWorkflowThread(workflow, options2 = {}) {
1811
1811
  );
1812
1812
  const conversation = conversations.data?.find((c) => c.external_id === threadId);
1813
1813
  const steps = react.useMemo(
1814
- () => chunkJSTKEZBS_cjs.workflowSteps(workflow).length > 0 ? chunkJSTKEZBS_cjs.workflowSteps(workflow) : chunkUJEH5REK_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
1814
+ () => chunkJSTKEZBS_cjs.workflowSteps(workflow).length > 0 ? chunkJSTKEZBS_cjs.workflowSteps(workflow) : chunkAODZXDEE_cjs.fromPlanSteps(conversation?.plan?.steps ?? []),
1815
1815
  [workflow, conversation?.plan?.steps]
1816
1816
  );
1817
1817
  const activity = react$1.useConversationActivity(threadId, { live: !!threadId });
@@ -1871,7 +1871,7 @@ function useWorkflowThread(workflow, options2 = {}) {
1871
1871
  criteria: [],
1872
1872
  max_passes: 3,
1873
1873
  documents: [],
1874
- steps: chunkUJEH5REK_cjs.toPlanSteps(workflow, {
1874
+ steps: chunkAODZXDEE_cjs.toPlanSteps(workflow, {
1875
1875
  inputs: values,
1876
1876
  resolveWorkflow: options2.resolveWorkflow,
1877
1877
  compose: options2.compose
@@ -1958,7 +1958,7 @@ function useWorkflowThread(workflow, options2 = {}) {
1958
1958
  const anyRunning = Object.values(states).some((s) => s.status === "running");
1959
1959
  const needsStart = !threadId || idle && !anyRunning;
1960
1960
  const runError = idle ? conversation?.last_error ?? null : null;
1961
- const view = chunkUJEH5REK_cjs.useWorkflowView({
1961
+ const view = chunkAODZXDEE_cjs.useWorkflowView({
1962
1962
  steps,
1963
1963
  states,
1964
1964
  inputs,
@@ -2126,7 +2126,7 @@ function WorkflowWordDialog({
2126
2126
  title: title ?? labels.wordTitle,
2127
2127
  size: "xl",
2128
2128
  testId: "workflow-word-dialog",
2129
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkNVVBRQN2_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
2129
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalScaffold.Body, { className: "h-[70dvh] p-0", children: /* @__PURE__ */ jsxRuntime.jsx(chunkPTSTVYQD_cjs.ConnectedNativeDocxEditor, { documentId: id, title: title ?? labels.wordTitle }) })
2130
2130
  }
2131
2131
  );
2132
2132
  }
@@ -2435,7 +2435,7 @@ function ConnectedWorkflowRunner({
2435
2435
  );
2436
2436
  };
2437
2437
  const runner = (compact) => /* @__PURE__ */ jsxRuntime.jsx(
2438
- chunkUJEH5REK_cjs.WorkflowRunner,
2438
+ chunkAODZXDEE_cjs.WorkflowRunner,
2439
2439
  {
2440
2440
  people,
2441
2441
  ...runnerProps,
@@ -2481,7 +2481,7 @@ function ConnectedWorkflowRunner({
2481
2481
  ) }),
2482
2482
  inThread && conversationId ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2483
2483
  /* @__PURE__ */ jsxRuntime.jsx(
2484
- chunkUJEH5REK_cjs.WorkflowStepBar,
2484
+ chunkAODZXDEE_cjs.WorkflowStepBar,
2485
2485
  {
2486
2486
  run: view,
2487
2487
  levels: chunkJSTKEZBS_cjs.stepLevels(view.steps),
@@ -2652,10 +2652,10 @@ function cascadeTagCombination(tags, previous, next) {
2652
2652
  function tagCombinationMatches(combination, items) {
2653
2653
  if (!isCombining(combination)) return void 0;
2654
2654
  const pass = (list) => new Set(
2655
- chunkUUN2WGGM_cjs.applyInvertedIndexFilter(
2655
+ chunkXGFNZTPO_cjs.applyInvertedIndexFilter(
2656
2656
  [...list],
2657
2657
  combination,
2658
- chunkUUN2WGGM_cjs.buildInvertedIndex(
2658
+ chunkXGFNZTPO_cjs.buildInvertedIndex(
2659
2659
  [...list],
2660
2660
  (item) => item.id,
2661
2661
  (item) => item.tagIds
@@ -2772,7 +2772,7 @@ function ConnectedTagTable({
2772
2772
  const fail = (fallback) => (e) => notify14(browser.refusalReason(e, fallback), "error");
2773
2773
  const snapshot2 = (data) => {
2774
2774
  const title = exportTitle ?? ui.tagKindTitle(kind, { plural: true });
2775
- const bytes = chunkG2Z2KARY_cjs.tagTableDocx(data, {
2775
+ const bytes = chunkSYTZ3UAU_cjs.tagTableDocx(data, {
2776
2776
  title,
2777
2777
  nameOf: (id) => people.find((p) => p.value === id)?.label
2778
2778
  });
@@ -2781,7 +2781,7 @@ function ConnectedTagTable({
2781
2781
  return { blob: new Blob([bytes], { type: chunkQT3A4PFC_cjs.DOCX_MIME_TYPE }), name };
2782
2782
  };
2783
2783
  return /* @__PURE__ */ jsxRuntime.jsx(
2784
- chunkG2Z2KARY_cjs.TagTable,
2784
+ chunkSYTZ3UAU_cjs.TagTable,
2785
2785
  {
2786
2786
  ...props,
2787
2787
  table,
@@ -2919,9 +2919,9 @@ function GlossaryExport({ labelId, nameOf }) {
2919
2919
  const narrowed = agreements.find((a) => a.id === narrowTo);
2920
2920
  const title = narrowed ? `Glossary - ${narrowed.name}` : "Glossary";
2921
2921
  const download = (format) => {
2922
- const entries = chunkG2Z2KARY_cjs.glossaryEntries(sources, { labelId: narrowed?.id });
2923
- const blob = format === "docx" ? new Blob([chunkG2Z2KARY_cjs.glossaryDocx(entries, { title })], { type: chunkQT3A4PFC_cjs.DOCX_MIME_TYPE }) : new Blob([chunkG2Z2KARY_cjs.glossaryMarkdown(entries, { title })], { type: "text/markdown" });
2924
- documentTools.downloadBlob(blob, chunkG2Z2KARY_cjs.glossaryFileName(title, format));
2922
+ const entries = chunkSYTZ3UAU_cjs.glossaryEntries(sources, { labelId: narrowed?.id });
2923
+ const blob = format === "docx" ? new Blob([chunkSYTZ3UAU_cjs.glossaryDocx(entries, { title })], { type: chunkQT3A4PFC_cjs.DOCX_MIME_TYPE }) : new Blob([chunkSYTZ3UAU_cjs.glossaryMarkdown(entries, { title })], { type: "text/markdown" });
2924
+ documentTools.downloadBlob(blob, chunkSYTZ3UAU_cjs.glossaryFileName(title, format));
2925
2925
  };
2926
2926
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", "data-testid": "tags-glossary", children: [
2927
2927
  agreements.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
@@ -3025,7 +3025,7 @@ function TileStatusBadge({ doc, status }) {
3025
3025
  case "failed":
3026
3026
  tone = "danger";
3027
3027
  icon2 = /* @__PURE__ */ jsxRuntime.jsx(
3028
- chunk5D5YDIBC_cjs.FailedStageIcon,
3028
+ chunkNUAC5GTQ_cjs.FailedStageIcon,
3029
3029
  {
3030
3030
  stage: doc.failed_stage ?? null,
3031
3031
  errorMessage: doc.error_message,
@@ -3052,7 +3052,7 @@ function TileStatusBadge({ doc, status }) {
3052
3052
  return null;
3053
3053
  }
3054
3054
  return /* @__PURE__ */ jsxRuntime.jsx(
3055
- chunk5D5YDIBC_cjs.StatusPill,
3055
+ chunkNUAC5GTQ_cjs.StatusPill,
3056
3056
  {
3057
3057
  tone,
3058
3058
  icon: icon2,
@@ -3064,11 +3064,11 @@ function TileStatusBadge({ doc, status }) {
3064
3064
  function TileVisibilityBadge({ doc }) {
3065
3065
  const shared = !!doc.shared;
3066
3066
  return /* @__PURE__ */ jsxRuntime.jsx(
3067
- chunk5D5YDIBC_cjs.StatusPill,
3067
+ chunkNUAC5GTQ_cjs.StatusPill,
3068
3068
  {
3069
3069
  icon: /* @__PURE__ */ jsxRuntime.jsx(ui.VisibilityIcon, { isShared: shared, className: "size-3.5", "aria-hidden": true }),
3070
3070
  label: shared ? ui.getEntityLabel("WORKSPACE") : "Only you",
3071
- title: chunk5D5YDIBC_cjs.visibilityAudience(shared),
3071
+ title: chunkNUAC5GTQ_cjs.visibilityAudience(shared),
3072
3072
  testId: `explorer-file-visibility-${doc.external_id}`
3073
3073
  }
3074
3074
  );
@@ -3095,7 +3095,7 @@ function FileTooltipContent({
3095
3095
  }) {
3096
3096
  const labels = (doc.doctags ?? []).map((dt) => tagNameById.get(dt.tag_ext_id)).filter((name) => !!name);
3097
3097
  return /* @__PURE__ */ jsxRuntime.jsx(
3098
- chunk5D5YDIBC_cjs.ExplorerFileTooltip,
3098
+ chunkNUAC5GTQ_cjs.ExplorerFileTooltip,
3099
3099
  {
3100
3100
  title: ui.getDocumentTitle(doc, doc.file_name ?? ""),
3101
3101
  summary: ui.getDocumentSubject(doc),
@@ -3104,7 +3104,7 @@ function FileTooltipContent({
3104
3104
  shared: !!doc.shared,
3105
3105
  visibilityIcon: /* @__PURE__ */ jsxRuntime.jsx(ui.VisibilityIcon, { isShared: !!doc.shared, className: "h-3 w-3" }),
3106
3106
  labels,
3107
- uiLabels: { shared: chunk5D5YDIBC_cjs.visibilityAudience(true), private: chunk5D5YDIBC_cjs.visibilityAudience(false) }
3107
+ uiLabels: { shared: chunkNUAC5GTQ_cjs.visibilityAudience(true), private: chunkNUAC5GTQ_cjs.visibilityAudience(false) }
3108
3108
  }
3109
3109
  );
3110
3110
  }
@@ -3216,7 +3216,7 @@ var FileTile = react.memo(function FileTile2({
3216
3216
  ];
3217
3217
  const tooltip = renaming || dndActive ? void 0 : /* @__PURE__ */ jsxRuntime.jsx(FileTooltipContent, { doc, modifiedBy, tagNameById });
3218
3218
  return /* @__PURE__ */ jsxRuntime.jsx(
3219
- chunk5D5YDIBC_cjs.ExplorerFileTile,
3219
+ chunkNUAC5GTQ_cjs.ExplorerFileTile,
3220
3220
  {
3221
3221
  id: doc.external_id,
3222
3222
  title: ui.getDocumentTitle(doc, doc.file_name ?? ""),
@@ -3310,17 +3310,17 @@ var FolderTile = react.memo(function FolderTile2({
3310
3310
  }
3311
3311
  ] : []
3312
3312
  ];
3313
- const displayName = folder.path.length === 1 ? chunk5D5YDIBC_cjs.formatFolderSegment(folder.name) : folder.name;
3314
- const providerIcon = folder.path.length === 1 && chunk5D5YDIBC_cjs.hasFolderProviderIcon(folder.name) ? /* @__PURE__ */ jsxRuntime.jsx(
3313
+ const displayName = folder.path.length === 1 ? chunkNUAC5GTQ_cjs.formatFolderSegment(folder.name) : folder.name;
3314
+ const providerIcon = folder.path.length === 1 && chunkNUAC5GTQ_cjs.hasFolderProviderIcon(folder.name) ? /* @__PURE__ */ jsxRuntime.jsx(
3315
3315
  "span",
3316
3316
  {
3317
3317
  className: "flex items-center justify-center drop-shadow-sm",
3318
3318
  style: { width: iconSize, height: iconSize },
3319
- children: /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FolderProviderIcon, { folderPath: folder.name, className: "h-full w-full" })
3319
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FolderProviderIcon, { folderPath: folder.name, className: "h-full w-full" })
3320
3320
  }
3321
3321
  ) : void 0;
3322
3322
  return /* @__PURE__ */ jsxRuntime.jsx(
3323
- chunk5D5YDIBC_cjs.ExplorerFolderTile,
3323
+ chunkNUAC5GTQ_cjs.ExplorerFolderTile,
3324
3324
  {
3325
3325
  name: folder.name,
3326
3326
  displayName: displayName === "" ? null : displayName,
@@ -3414,7 +3414,7 @@ function describeGlyph(resolved, doc) {
3414
3414
  }
3415
3415
  return {
3416
3416
  node: /* @__PURE__ */ jsxRuntime.jsx(
3417
- chunk5D5YDIBC_cjs.FailedStageIcon,
3417
+ chunkNUAC5GTQ_cjs.FailedStageIcon,
3418
3418
  {
3419
3419
  stage: resolved.failedStage,
3420
3420
  errorMessage: doc.error_message,
@@ -3459,7 +3459,7 @@ var StatusCell = react.memo(function StatusCell2({
3459
3459
  if (isPendingSync) {
3460
3460
  return cell(
3461
3461
  /* @__PURE__ */ jsxRuntime.jsx(
3462
- chunk5D5YDIBC_cjs.StatusPill,
3462
+ chunkNUAC5GTQ_cjs.StatusPill,
3463
3463
  {
3464
3464
  tone: "warning",
3465
3465
  icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCw, { className: "size-3.5" }),
@@ -3474,7 +3474,7 @@ var StatusCell = react.memo(function StatusCell2({
3474
3474
  case "completed":
3475
3475
  return cell(
3476
3476
  /* @__PURE__ */ jsxRuntime.jsx(
3477
- chunk5D5YDIBC_cjs.StatusPill,
3477
+ chunkNUAC5GTQ_cjs.StatusPill,
3478
3478
  {
3479
3479
  tone: "success",
3480
3480
  icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle, { className: "size-3.5" }),
@@ -3487,7 +3487,7 @@ var StatusCell = react.memo(function StatusCell2({
3487
3487
  case "skipped":
3488
3488
  return cell(
3489
3489
  /* @__PURE__ */ jsxRuntime.jsx(
3490
- chunk5D5YDIBC_cjs.StatusPill,
3490
+ chunkNUAC5GTQ_cjs.StatusPill,
3491
3491
  {
3492
3492
  tone: "neutral",
3493
3493
  icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SkipForward, { className: "size-3.5" }),
@@ -3500,7 +3500,7 @@ var StatusCell = react.memo(function StatusCell2({
3500
3500
  case "empty":
3501
3501
  return cell(
3502
3502
  /* @__PURE__ */ jsxRuntime.jsx(
3503
- chunk5D5YDIBC_cjs.StatusPill,
3503
+ chunkNUAC5GTQ_cjs.StatusPill,
3504
3504
  {
3505
3505
  tone: "warning",
3506
3506
  icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileX, { className: "size-3.5" }),
@@ -3513,7 +3513,7 @@ var StatusCell = react.memo(function StatusCell2({
3513
3513
  case "low-content":
3514
3514
  return cell(
3515
3515
  /* @__PURE__ */ jsxRuntime.jsx(
3516
- chunk5D5YDIBC_cjs.StatusPill,
3516
+ chunkNUAC5GTQ_cjs.StatusPill,
3517
3517
  {
3518
3518
  tone: "warning",
3519
3519
  icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, { className: "size-3.5" }),
@@ -3528,7 +3528,7 @@ var StatusCell = react.memo(function StatusCell2({
3528
3528
  if (quota) {
3529
3529
  return cell(
3530
3530
  /* @__PURE__ */ jsxRuntime.jsx(
3531
- chunk5D5YDIBC_cjs.StatusPill,
3531
+ chunkNUAC5GTQ_cjs.StatusPill,
3532
3532
  {
3533
3533
  tone: "warning",
3534
3534
  icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Zap, { className: "size-3.5" }),
@@ -3541,11 +3541,11 @@ var StatusCell = react.memo(function StatusCell2({
3541
3541
  }
3542
3542
  return cell(
3543
3543
  /* @__PURE__ */ jsxRuntime.jsx(
3544
- chunk5D5YDIBC_cjs.StatusPill,
3544
+ chunkNUAC5GTQ_cjs.StatusPill,
3545
3545
  {
3546
3546
  tone: "danger",
3547
3547
  icon: /* @__PURE__ */ jsxRuntime.jsx(
3548
- chunk5D5YDIBC_cjs.FailedStageIcon,
3548
+ chunkNUAC5GTQ_cjs.FailedStageIcon,
3549
3549
  {
3550
3550
  stage: failedStage,
3551
3551
  errorMessage: doc.error_message,
@@ -3562,7 +3562,7 @@ var StatusCell = react.memo(function StatusCell2({
3562
3562
  const isDocx = doc.file_name?.toLowerCase().endsWith(".docx");
3563
3563
  return cell(
3564
3564
  /* @__PURE__ */ jsxRuntime.jsx(
3565
- chunk5D5YDIBC_cjs.StatusPill,
3565
+ chunkNUAC5GTQ_cjs.StatusPill,
3566
3566
  {
3567
3567
  tone: "neutral",
3568
3568
  label: isDocx ? "Uploaded" : "Queued",
@@ -3579,7 +3579,7 @@ var StatusCell = react.memo(function StatusCell2({
3579
3579
  case "analysing":
3580
3580
  return cell(
3581
3581
  /* @__PURE__ */ jsxRuntime.jsx(
3582
- chunk5D5YDIBC_cjs.StatusPill,
3582
+ chunkNUAC5GTQ_cjs.StatusPill,
3583
3583
  {
3584
3584
  tone: "info",
3585
3585
  label: PROCESSING_LABELS[status],
@@ -3662,7 +3662,7 @@ var DocumentNameCell = react.memo(function DocumentNameCell2({
3662
3662
  }
3663
3663
  };
3664
3664
  return /* @__PURE__ */ jsxRuntime.jsx(
3665
- chunk5D5YDIBC_cjs.DocumentNameCellFrame,
3665
+ chunkNUAC5GTQ_cjs.DocumentNameCellFrame,
3666
3666
  {
3667
3667
  testId: `open-document-viewer-button-${doc.external_id}`,
3668
3668
  isViewing,
@@ -3691,7 +3691,7 @@ var DocumentNameCell = react.memo(function DocumentNameCell2({
3691
3691
  openTimerRef.current = window.setTimeout(onOpen, OPEN_AFTER_DOUBLE_CLICK_WINDOW_MS);
3692
3692
  },
3693
3693
  actions: /* @__PURE__ */ jsxRuntime.jsx(
3694
- chunk5D5YDIBC_cjs.DocumentRowMenu,
3694
+ chunkNUAC5GTQ_cjs.DocumentRowMenu,
3695
3695
  {
3696
3696
  canEdit,
3697
3697
  onOpen,
@@ -3722,14 +3722,14 @@ var DocumentSharedCell = react.memo(function DocumentSharedCell2({
3722
3722
  [document2.external_id, onToggle]
3723
3723
  );
3724
3724
  return /* @__PURE__ */ jsxRuntime.jsx(
3725
- chunkG2Z2KARY_cjs.SharedCell,
3725
+ chunkSYTZ3UAU_cjs.SharedCell,
3726
3726
  {
3727
3727
  item: document2,
3728
3728
  onToggle: handleToggle,
3729
3729
  disabled,
3730
3730
  disabledTooltip,
3731
- tooltipActive: chunk5D5YDIBC_cjs.visibilityToggleTooltip(true),
3732
- tooltipInactive: chunk5D5YDIBC_cjs.visibilityToggleTooltip(false),
3731
+ tooltipActive: chunkNUAC5GTQ_cjs.visibilityToggleTooltip(true),
3732
+ tooltipInactive: chunkNUAC5GTQ_cjs.visibilityToggleTooltip(false),
3733
3733
  workspaceLabel: ui.getEntityLabel("WORKSPACE")
3734
3734
  }
3735
3735
  );
@@ -3743,7 +3743,7 @@ function useDocumentFolders(documents, value) {
3743
3743
  }, [documents, value]);
3744
3744
  }
3745
3745
  function folderSegments(folder) {
3746
- return folder.split("/").map((part, i) => i === 0 ? chunk5D5YDIBC_cjs.formatFolderSegment(part) : part).filter((part, i) => i > 0 || part !== "");
3746
+ return folder.split("/").map((part, i) => i === 0 ? chunkNUAC5GTQ_cjs.formatFolderSegment(part) : part).filter((part, i) => i > 0 || part !== "");
3747
3747
  }
3748
3748
  var DocumentFolderCell = react.memo(
3749
3749
  function DocumentFolderCell2({
@@ -3755,14 +3755,14 @@ var DocumentFolderCell = react.memo(
3755
3755
  const folder = document2.folder;
3756
3756
  const folders = useDocumentFolders(allDocuments, folder);
3757
3757
  return /* @__PURE__ */ jsxRuntime.jsx(
3758
- chunk5D5YDIBC_cjs.FolderCell,
3758
+ chunkNUAC5GTQ_cjs.FolderCell,
3759
3759
  {
3760
3760
  folder,
3761
3761
  segments: folder ? folderSegments(folder) : [],
3762
- icon: folder && chunk5D5YDIBC_cjs.hasFolderProviderIcon(folder) ? /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FolderProviderIcon, { folderPath: folder, className: "h-3.5 w-3.5 flex-none shrink-0" }) : void 0,
3762
+ icon: folder && chunkNUAC5GTQ_cjs.hasFolderProviderIcon(folder) ? /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FolderProviderIcon, { folderPath: folder, className: "h-3.5 w-3.5 flex-none shrink-0" }) : void 0,
3763
3763
  isEditable,
3764
3764
  picker: /* @__PURE__ */ jsxRuntime.jsx(
3765
- chunk5D5YDIBC_cjs.FolderCommandList,
3765
+ chunkNUAC5GTQ_cjs.FolderCommandList,
3766
3766
  {
3767
3767
  folders,
3768
3768
  value: folder,
@@ -3797,7 +3797,7 @@ var RelatedDocumentsCell = react.memo(function RelatedDocumentsCell2({
3797
3797
  onCompare
3798
3798
  }) {
3799
3799
  return /* @__PURE__ */ jsxRuntime.jsx(
3800
- chunk5D5YDIBC_cjs.RelatedDocsCell,
3800
+ chunkNUAC5GTQ_cjs.RelatedDocsCell,
3801
3801
  {
3802
3802
  parent: related.parent,
3803
3803
  attachments: related.children,
@@ -4025,9 +4025,9 @@ function ConnectedTagForm({
4025
4025
  });
4026
4026
  }
4027
4027
  }
4028
- return /* @__PURE__ */ jsxRuntime.jsxs(chunk5D5YDIBC_cjs.TagFormRoot, { children: [
4028
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkNUAC5GTQ_cjs.TagFormRoot, { children: [
4029
4029
  !nameOnRow && /* @__PURE__ */ jsxRuntime.jsx(
4030
- chunk5D5YDIBC_cjs.TagFormNameField,
4030
+ chunkNUAC5GTQ_cjs.TagFormNameField,
4031
4031
  {
4032
4032
  label: group || nameByKind ? `${ui.tagKindTitle(kind)} Name` : `${columnLabel} Name`,
4033
4033
  placeholder: `Enter ${kindNoun ?? columnLabel.toLowerCase()} name...`,
@@ -4037,7 +4037,7 @@ function ConnectedTagForm({
4037
4037
  }
4038
4038
  ),
4039
4039
  kinds.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
4040
- chunk5D5YDIBC_cjs.TagFormSelectField,
4040
+ chunkNUAC5GTQ_cjs.TagFormSelectField,
4041
4041
  {
4042
4042
  label: "Kind",
4043
4043
  testId: "inline-tag-form-kind-field",
@@ -4052,7 +4052,7 @@ function ConnectedTagForm({
4052
4052
  }
4053
4053
  ),
4054
4054
  kind === "annotation" && /* @__PURE__ */ jsxRuntime.jsx(
4055
- chunk5D5YDIBC_cjs.TagFormSelectField,
4055
+ chunkNUAC5GTQ_cjs.TagFormSelectField,
4056
4056
  {
4057
4057
  label: group === "annotation" ? "Value type" : "Field Type",
4058
4058
  testId: "inline-tag-form-type-field",
@@ -4064,7 +4064,7 @@ function ConnectedTagForm({
4064
4064
  }
4065
4065
  ),
4066
4066
  showParentPicker && /* @__PURE__ */ jsxRuntime.jsx(
4067
- chunk5D5YDIBC_cjs.TagFormSelectField,
4067
+ chunkNUAC5GTQ_cjs.TagFormSelectField,
4068
4068
  {
4069
4069
  label: "Nested Under",
4070
4070
  value: parentId,
@@ -4088,14 +4088,14 @@ function ConnectedTagForm({
4088
4088
  hint: !canClearParent ? "This field can move to a different parent, but the API has no way to move it back to the top level." : void 0
4089
4089
  }
4090
4090
  ),
4091
- nestingEnabled && hasChildren && /* @__PURE__ */ jsxRuntime.jsxs(chunk5D5YDIBC_cjs.TagFormNote, { testId: "inline-tag-form-parent-locked", children: [
4091
+ nestingEnabled && hasChildren && /* @__PURE__ */ jsxRuntime.jsxs(chunkNUAC5GTQ_cjs.TagFormNote, { testId: "inline-tag-form-parent-locked", children: [
4092
4092
  "Other fields are nested under this one, so it cannot itself be nested \u2014 fields nest",
4093
4093
  " ",
4094
4094
  browser.TAG_NESTING_MAX_DEPTH,
4095
4095
  " levels deep."
4096
4096
  ] }),
4097
4097
  tagType === "select" && /* @__PURE__ */ jsxRuntime.jsx(
4098
- chunk5D5YDIBC_cjs.TagFormOptionsEditor,
4098
+ chunkNUAC5GTQ_cjs.TagFormOptionsEditor,
4099
4099
  {
4100
4100
  label: "Options",
4101
4101
  options: options2,
@@ -4108,7 +4108,7 @@ function ConnectedTagForm({
4108
4108
  }
4109
4109
  ),
4110
4110
  tagType === "text" && /* @__PURE__ */ jsxRuntime.jsx(
4111
- chunk5D5YDIBC_cjs.TagFormInstructionField,
4111
+ chunkNUAC5GTQ_cjs.TagFormInstructionField,
4112
4112
  {
4113
4113
  label: "AI Instruction",
4114
4114
  optionalLabel: "(optional)",
@@ -4118,12 +4118,12 @@ function ConnectedTagForm({
4118
4118
  onChange: setInstruction
4119
4119
  }
4120
4120
  ),
4121
- metaLines.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.TagFormMeta, { lines: metaLines }),
4121
+ metaLines.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.TagFormMeta, { lines: metaLines }),
4122
4122
  /* @__PURE__ */ jsxRuntime.jsx(
4123
- chunk5D5YDIBC_cjs.TagFormFooter,
4123
+ chunkNUAC5GTQ_cjs.TagFormFooter,
4124
4124
  {
4125
4125
  sharedToggle: isCreate ? /* @__PURE__ */ jsxRuntime.jsx(
4126
- chunk5D5YDIBC_cjs.TagFormSharedToggle,
4126
+ chunkNUAC5GTQ_cjs.TagFormSharedToggle,
4127
4127
  {
4128
4128
  label: "Shared with workspace",
4129
4129
  toggle: /* @__PURE__ */ jsxRuntime.jsx(
@@ -4293,7 +4293,7 @@ function TagFilterChips({
4293
4293
  const name = (id) => tags.find((t) => t.external_id === id)?.name ?? id;
4294
4294
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", "data-testid": "tags-filter-chips", children: [
4295
4295
  set.map(([id, state]) => /* @__PURE__ */ jsxRuntime.jsx(
4296
- chunkUUN2WGGM_cjs.FilterChip,
4296
+ chunkXGFNZTPO_cjs.FilterChip,
4297
4297
  {
4298
4298
  label: name(id),
4299
4299
  state,
@@ -4421,7 +4421,7 @@ function KindSection({
4421
4421
  {
4422
4422
  testId: `tags-kind-${kind}`,
4423
4423
  title: ui.tagKindTitle(kind, { plural: true }),
4424
- description: chunkG2Z2KARY_cjs.tagKindDescription(kind),
4424
+ description: chunkSYTZ3UAU_cjs.tagKindDescription(kind),
4425
4425
  actions: picker,
4426
4426
  children: [
4427
4427
  browser.isEntityTag({ kind }) && extractingCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
@@ -4432,9 +4432,9 @@ function KindSection({
4432
4432
  children: [
4433
4433
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-4 animate-spin" }),
4434
4434
  "Extracting ",
4435
- chunkG2Z2KARY_cjs.entitiesPhrase().toLowerCase(),
4435
+ chunkSYTZ3UAU_cjs.entitiesPhrase().toLowerCase(),
4436
4436
  " from ",
4437
- chunkG2Z2KARY_cjs.documentCount(extractingCount),
4437
+ chunkSYTZ3UAU_cjs.documentCount(extractingCount),
4438
4438
  "\u2026"
4439
4439
  ]
4440
4440
  }
@@ -4452,7 +4452,7 @@ function KindSection({
4452
4452
  onOpenDocument: (id) => openDocument(id),
4453
4453
  onOpenFact: ctx.onOpenFact,
4454
4454
  onOpenThread: (id) => openConversation(id),
4455
- labels: chunkG2Z2KARY_cjs.tagTableLabels(kind),
4455
+ labels: chunkSYTZ3UAU_cjs.tagTableLabels(kind),
4456
4456
  testId: `tags-table-${kind}`
4457
4457
  }
4458
4458
  )
@@ -4554,12 +4554,12 @@ function TagSection({
4554
4554
  onOpenDocument: (id) => openDocument(id),
4555
4555
  onOpenFact: ctx.onOpenFact,
4556
4556
  onOpenThread: (id) => openConversation(id),
4557
- labels: chunkG2Z2KARY_cjs.tagTableLabels(tag.kind),
4557
+ labels: chunkSYTZ3UAU_cjs.tagTableLabels(tag.kind),
4558
4558
  testId: "tags-rows"
4559
4559
  }
4560
4560
  ),
4561
4561
  /* @__PURE__ */ jsxRuntime.jsx(
4562
- chunkG2Z2KARY_cjs.TagDetail,
4562
+ chunkSYTZ3UAU_cjs.TagDetail,
4563
4563
  {
4564
4564
  row: detailRow && narrowTagRow(detailRow, ctx.filter.matches),
4565
4565
  fields: schema.data?.fields ?? [],
@@ -4571,10 +4571,10 @@ function TagSection({
4571
4571
  onOpenDocument: (id) => openDocument(id),
4572
4572
  onOpenFact: ctx.onOpenFact,
4573
4573
  onOpenThread: (id) => openConversation(id),
4574
- noteLabel: chunkG2Z2KARY_cjs.tagNoteLabel(tag.kind),
4574
+ noteLabel: chunkSYTZ3UAU_cjs.tagNoteLabel(tag.kind),
4575
4575
  noteIsValue: tag.kind === "annotation",
4576
4576
  renderPassages: (d, label) => renderPassages(d.doc_ext_id, label),
4577
- labels: chunkG2Z2KARY_cjs.tagDetailLabels(),
4577
+ labels: chunkSYTZ3UAU_cjs.tagDetailLabels(),
4578
4578
  testId: "tags-detail"
4579
4579
  }
4580
4580
  )
@@ -4662,7 +4662,7 @@ function ConnectedTagsPage({
4662
4662
  const onDelete = async (t) => {
4663
4663
  const nested = browser.getChildTags([...tags], t.external_id);
4664
4664
  const uses = browser.tagUseCount(t);
4665
- const n2 = chunkG2Z2KARY_cjs.tagsPageNouns();
4665
+ const n2 = chunkSYTZ3UAU_cjs.tagsPageNouns();
4666
4666
  const tagNoun = (count2) => (count2 === 1 ? n2.tag : n2.tags).toLowerCase();
4667
4667
  const carriers = uses === 1 ? `${n2.document}, ${n2.fact} or ${n2.thread}` : `${n2.documents}, ${n2.facts} and ${n2.threads}`;
4668
4668
  const message = `Delete ${ui.tagKindNouns(t.kind).singular} "${t.name}"?` + (uses > 0 ? `
@@ -4683,16 +4683,16 @@ ${nested.length} nested ${tagNoun(nested.length)} ${nested.length === 1 ? "moves
4683
4683
  try {
4684
4684
  await extract.mutateAsync(docIds);
4685
4685
  notify14(
4686
- `Extracting ${chunkG2Z2KARY_cjs.entitiesPhrase().toLowerCase()} from ${chunkG2Z2KARY_cjs.documentCount(docIds.length)}. You will be notified when it is done.`,
4686
+ `Extracting ${chunkSYTZ3UAU_cjs.entitiesPhrase().toLowerCase()} from ${chunkSYTZ3UAU_cjs.documentCount(docIds.length)}. You will be notified when it is done.`,
4687
4687
  "info"
4688
4688
  );
4689
4689
  } catch (error) {
4690
- notify14(browser.refusalReason(error, `Could not extract ${chunkG2Z2KARY_cjs.entitiesPhrase().toLowerCase()}`), "error");
4690
+ notify14(browser.refusalReason(error, `Could not extract ${chunkSYTZ3UAU_cjs.entitiesPhrase().toLowerCase()}`), "error");
4691
4691
  throw error;
4692
4692
  }
4693
4693
  };
4694
4694
  const picker = /* @__PURE__ */ jsxRuntime.jsx(
4695
- chunkG2Z2KARY_cjs.TagPicker,
4695
+ chunkSYTZ3UAU_cjs.TagPicker,
4696
4696
  {
4697
4697
  tags: viewTags,
4698
4698
  selectedId: tag?.external_id,
@@ -4706,10 +4706,10 @@ ${nested.length} nested ${tagNoun(nested.length)} ${nested.length === 1 ? "moves
4706
4706
  onOpenTag: openTag,
4707
4707
  onOpenFact
4708
4708
  };
4709
- const n = chunkG2Z2KARY_cjs.tagsPageNouns();
4709
+ const n = chunkSYTZ3UAU_cjs.tagsPageNouns();
4710
4710
  const action = view === "person" || view === "organisation" ? {
4711
4711
  label: "Extract",
4712
- title: `Extract ${chunkG2Z2KARY_cjs.entitiesPhrase().toLowerCase()} from ${n.documents.toLowerCase()}`,
4712
+ title: `Extract ${chunkSYTZ3UAU_cjs.entitiesPhrase().toLowerCase()} from ${n.documents.toLowerCase()}`,
4713
4713
  icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "h-4 w-4" }),
4714
4714
  run: () => setExtracting(true),
4715
4715
  testId: "tags-extract-entities"
@@ -4749,7 +4749,7 @@ ${nested.length} nested ${tagNoun(nested.length)} ${nested.length === 1 ? "moves
4749
4749
  onTabChange: () => {
4750
4750
  },
4751
4751
  variant: "underline",
4752
- firstTabContent: /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FilesFilterBar, { className: "flex-none", "data-testid": "tags-header-actions", children: /* @__PURE__ */ jsxRuntime.jsx(
4752
+ firstTabContent: /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FilesFilterBar, { className: "flex-none", "data-testid": "tags-header-actions", children: /* @__PURE__ */ jsxRuntime.jsx(
4753
4753
  chunk2EI7NCUA_cjs.FilterInput,
4754
4754
  {
4755
4755
  value: filterText,
@@ -4777,7 +4777,7 @@ ${nested.length} nested ${tagNoun(nested.length)} ${nested.length === 1 ? "moves
4777
4777
  )
4778
4778
  }
4779
4779
  ) }),
4780
- centerContent: /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FilesViewCenter, { children: /* @__PURE__ */ jsxRuntime.jsx(
4780
+ centerContent: /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FilesViewCenter, { children: /* @__PURE__ */ jsxRuntime.jsx(
4781
4781
  chunk2WLXQGWC_cjs.ViewToggle,
4782
4782
  {
4783
4783
  options: browser.TAG_KINDS.map((k) => ({
@@ -4859,7 +4859,7 @@ ${nested.length} nested ${tagNoun(nested.length)} ${nested.length === 1 ? "moves
4859
4859
  }
4860
4860
  ),
4861
4861
  /* @__PURE__ */ jsxRuntime.jsx(
4862
- chunkG2Z2KARY_cjs.ExtractEntitiesDialog,
4862
+ chunkSYTZ3UAU_cjs.ExtractEntitiesDialog,
4863
4863
  {
4864
4864
  open: extracting,
4865
4865
  onOpenChange: setExtracting,
@@ -5556,10 +5556,10 @@ function useFactFilters(notes, view, chat) {
5556
5556
  const factFilters = view.filters;
5557
5557
  const setFactFilters = view.setFilters;
5558
5558
  const quickFilteredNotes = react.useMemo(
5559
- () => chunkUUN2WGGM_cjs.applyInvertedIndexFilter(
5559
+ () => chunkXGFNZTPO_cjs.applyInvertedIndexFilter(
5560
5560
  notes,
5561
5561
  factFilters,
5562
- chunkUUN2WGGM_cjs.buildInvertedIndex(
5562
+ chunkXGFNZTPO_cjs.buildInvertedIndex(
5563
5563
  notes,
5564
5564
  (f) => f.external_id,
5565
5565
  (f) => Object.entries(getFactFilterAttributes(f)).filter(([id, on]) => on && factFilterIds.includes(id)).map(([id]) => id)
@@ -5638,7 +5638,7 @@ function useFactFilters(notes, view, chat) {
5638
5638
  (selected, setSelected, opts) => {
5639
5639
  const applied = new Set(selected);
5640
5640
  return /* @__PURE__ */ jsxRuntime.jsx(chunkLMQOTLG4_cjs.FactFieldRow, { label: "Labels", children: /* @__PURE__ */ jsxRuntime.jsx(
5641
- chunk5D5YDIBC_cjs.FieldLabelsSelect,
5641
+ chunkNUAC5GTQ_cjs.FieldLabelsSelect,
5642
5642
  {
5643
5643
  options: labelOptions,
5644
5644
  appliedIds: applied,
@@ -5864,7 +5864,7 @@ var FactHeader = react.memo(function FactHeader2({
5864
5864
  if (params.enableSorting) params.progressSort(e.shiftKey);
5865
5865
  },
5866
5866
  children: [
5867
- /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FilterButton, { params, colId }),
5867
+ /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FilterButton, { params, colId }),
5868
5868
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "order-2 min-w-0 flex-1 truncate", children: params.displayName }),
5869
5869
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ag-sort-indicator-container order-2 flex-shrink-0", "aria-hidden": "true", children: [
5870
5870
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -6128,7 +6128,7 @@ function useFactsGrid({
6128
6128
  var DEFAULT_TIMELINE_LABEL_WIDTH = 240;
6129
6129
  function useFactsPageView() {
6130
6130
  const [view, setView] = react.useState("table");
6131
- const [rowHeight, setRowHeight] = react.useState(chunk5D5YDIBC_cjs.ROW_MIN);
6131
+ const [rowHeight, setRowHeight] = react.useState(chunkNUAC5GTQ_cjs.ROW_MIN);
6132
6132
  const [labelWidth, setLabelWidth] = react.useState(DEFAULT_TIMELINE_LABEL_WIDTH);
6133
6133
  const [zoom, setZoom] = react.useState(1);
6134
6134
  const [filterText, setFilterText] = react.useState("");
@@ -6282,7 +6282,7 @@ function ConnectedFactsPage({
6282
6282
  setView(request.view === "list" ? "table" : request.view);
6283
6283
  onRequestHandled?.("view");
6284
6284
  }, [request?.view]);
6285
- const factsRowHeight = pageView.rowHeight === chunk5D5YDIBC_cjs.ROW_MIN ? chunk5D5YDIBC_cjs.ROW_MIN : chunk5D5YDIBC_cjs.rowHeightForLines(chunk5D5YDIBC_cjs.linesForRowHeight(pageView.rowHeight));
6285
+ const factsRowHeight = pageView.rowHeight === chunkNUAC5GTQ_cjs.ROW_MIN ? chunkNUAC5GTQ_cjs.ROW_MIN : chunkNUAC5GTQ_cjs.rowHeightForLines(chunkNUAC5GTQ_cjs.linesForRowHeight(pageView.rowHeight));
6286
6286
  const [isExportOpen, setIsExportOpen] = react.useState(false);
6287
6287
  const [filterOpen, setFilterOpen] = react.useState(false);
6288
6288
  const [factSection, setFactSection] = react.useState(null);
@@ -6336,7 +6336,7 @@ function ConnectedFactsPage({
6336
6336
  onNewFact: composing && !editingId ? () => void 0 : composer.startNewFact,
6337
6337
  navSlotRef: setNavSlot,
6338
6338
  navigator: view === "table" ? /* @__PURE__ */ jsxRuntime.jsx(
6339
- chunkG2Z2KARY_cjs.GridRowNavigator,
6339
+ chunkSYTZ3UAU_cjs.GridRowNavigator,
6340
6340
  {
6341
6341
  gridApi,
6342
6342
  selectedId: editingId,
@@ -6349,7 +6349,7 @@ function ConnectedFactsPage({
6349
6349
  tools: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
6350
6350
  view === "table" && /* @__PURE__ */ jsxRuntime.jsx(chunkLMQOTLG4_cjs.FactsFieldsButton, { getGridApi: () => gridApiRef.current }),
6351
6351
  view === "table" && /* @__PURE__ */ jsxRuntime.jsx(
6352
- chunk5D5YDIBC_cjs.RowDensityControl,
6352
+ chunkNUAC5GTQ_cjs.RowDensityControl,
6353
6353
  {
6354
6354
  rowHeight: factsRowHeight,
6355
6355
  onRowHeightChange: pageView.setRowHeight,
@@ -6655,11 +6655,11 @@ function ConnectedProfileCard({
6655
6655
  const display = profile?.fullName || "Unnamed";
6656
6656
  return /* @__PURE__ */ jsxRuntime.jsxs(chunkNMZI3K6R_cjs.SettingsSection, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.UserCircle, {}), title, children: [
6657
6657
  /* @__PURE__ */ jsxRuntime.jsx(
6658
- chunkUUN2WGGM_cjs.ProfileCard,
6658
+ chunkXGFNZTPO_cjs.ProfileCard,
6659
6659
  {
6660
6660
  avatar: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
6661
6661
  /* @__PURE__ */ jsxRuntime.jsx(
6662
- chunkUUN2WGGM_cjs.AvatarPicker,
6662
+ chunkXGFNZTPO_cjs.AvatarPicker,
6663
6663
  {
6664
6664
  pictureUrl: profile?.picture,
6665
6665
  initials: chunkKDG6FER6_cjs.initials(display),
@@ -6706,9 +6706,9 @@ function ConnectedIdentityVerification({
6706
6706
  onNameAccepted: () => notify14("Name updated to match your ID", "success")
6707
6707
  });
6708
6708
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
6709
- /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.IdentityVerificationCard, { flow, labels, onManageBilling }),
6709
+ /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.IdentityVerificationCard, { flow, labels, onManageBilling }),
6710
6710
  /* @__PURE__ */ jsxRuntime.jsx(
6711
- chunkUUN2WGGM_cjs.IdentityVerificationDialog,
6711
+ chunkXGFNZTPO_cjs.IdentityVerificationDialog,
6712
6712
  {
6713
6713
  flow,
6714
6714
  accountName: profile?.fullName ?? "",
@@ -6721,7 +6721,7 @@ function ConnectedIdentityVerification({
6721
6721
  function ConnectedRequireVerified({ children, labels }) {
6722
6722
  const { data: profile } = react$1.useProfile();
6723
6723
  const flow = react$1.useIdentityVerification();
6724
- return /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.RequireVerified, { flow, accountName: profile?.fullName ?? "", labels, children });
6724
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.RequireVerified, { flow, accountName: profile?.fullName ?? "", labels, children });
6725
6725
  }
6726
6726
  function defaultUnmetPasswordRequirement(password) {
6727
6727
  if (password.length < 8) return "Minimum 8 characters";
@@ -6754,7 +6754,7 @@ function ConnectedPasswordChangeDialog({
6754
6754
  onRecoveryComplete
6755
6755
  });
6756
6756
  return /* @__PURE__ */ jsxRuntime.jsx(
6757
- chunkUUN2WGGM_cjs.PasswordChangeDialog,
6757
+ chunkXGFNZTPO_cjs.PasswordChangeDialog,
6758
6758
  {
6759
6759
  open,
6760
6760
  onClose: form.onCancel,
@@ -6804,23 +6804,23 @@ function ConnectedSecuritySection({
6804
6804
  ] });
6805
6805
  }
6806
6806
  function ConnectedNotificationPreferences({
6807
- categories = chunkUUN2WGGM_cjs.EMAIL_NOTIFICATION_CATEGORIES,
6807
+ categories = chunkXGFNZTPO_cjs.EMAIL_NOTIFICATION_CATEGORIES,
6808
6808
  title = "Notifications"
6809
6809
  }) {
6810
6810
  const keys = react.useMemo(
6811
- () => categories === chunkUUN2WGGM_cjs.EMAIL_NOTIFICATION_CATEGORIES ? chunkUUN2WGGM_cjs.EMAIL_NOTIFICATION_KEYS : categories.map((c) => c.key),
6811
+ () => categories === chunkXGFNZTPO_cjs.EMAIL_NOTIFICATION_CATEGORIES ? chunkXGFNZTPO_cjs.EMAIL_NOTIFICATION_KEYS : categories.map((c) => c.key),
6812
6812
  [categories]
6813
6813
  );
6814
6814
  const prefs = react$1.useNotificationPreferences(keys);
6815
6815
  return /* @__PURE__ */ jsxRuntime.jsx(chunkNMZI3K6R_cjs.SettingsSection, { title, children: /* @__PURE__ */ jsxRuntime.jsx(chunkNMZI3K6R_cjs.SettingsCard, { className: "space-y-0", children: /* @__PURE__ */ jsxRuntime.jsx(
6816
- chunkUUN2WGGM_cjs.NotificationCategoryList,
6816
+ chunkXGFNZTPO_cjs.NotificationCategoryList,
6817
6817
  {
6818
6818
  masterId: "emailNotifications",
6819
6819
  masterTitle: "Email Notifications",
6820
6820
  masterDescription: "Email me about activity when I\u2019m away",
6821
6821
  masterChecked: prefs.masterChecked,
6822
6822
  onMasterChange: prefs.setAll,
6823
- categories: chunkUUN2WGGM_cjs.toNotificationCategories(prefs.checked, categories),
6823
+ categories: chunkXGFNZTPO_cjs.toNotificationCategories(prefs.checked, categories),
6824
6824
  onCategoryChange: prefs.setCategory
6825
6825
  }
6826
6826
  ) }) });
@@ -6833,7 +6833,7 @@ function ConnectedSessionsRow({
6833
6833
  const sessions = react$1.useSessions({ enabled: open });
6834
6834
  const currentSessionId = react$1.useCurrentSessionId();
6835
6835
  const terminate = react$1.useTerminateSession();
6836
- const views = chunkUUN2WGGM_cjs.toActiveSessionViews(sessions.data ?? [], {
6836
+ const views = chunkXGFNZTPO_cjs.toActiveSessionViews(sessions.data ?? [], {
6837
6837
  currentSessionId,
6838
6838
  terminatingId: terminate.isPending ? terminate.variables : null,
6839
6839
  renderIcon: renderSessionIcon
@@ -6862,7 +6862,7 @@ function ConnectedSessionsRow({
6862
6862
  }
6863
6863
  ),
6864
6864
  /* @__PURE__ */ jsxRuntime.jsx(
6865
- chunkUUN2WGGM_cjs.ActiveSessionsDialog,
6865
+ chunkXGFNZTPO_cjs.ActiveSessionsDialog,
6866
6866
  {
6867
6867
  open,
6868
6868
  onOpenChange: setOpen,
@@ -6904,7 +6904,7 @@ function ConnectedLogoutDialog({
6904
6904
  signOut.mutate({ everywhere, reason: "manual" });
6905
6905
  };
6906
6906
  return /* @__PURE__ */ jsxRuntime.jsx(
6907
- chunkUUN2WGGM_cjs.LogoutDialog,
6907
+ chunkXGFNZTPO_cjs.LogoutDialog,
6908
6908
  {
6909
6909
  open,
6910
6910
  onClose,
@@ -6912,7 +6912,7 @@ function ConnectedLogoutDialog({
6912
6912
  onLogoutAll: () => void run(true),
6913
6913
  canLogoutAll,
6914
6914
  isOnline,
6915
- sessions: chunkUUN2WGGM_cjs.toLogoutSessionViews(sessions.data ?? []),
6915
+ sessions: chunkXGFNZTPO_cjs.toLogoutSessionViews(sessions.data ?? []),
6916
6916
  renderSessionIcon
6917
6917
  }
6918
6918
  );
@@ -6954,12 +6954,12 @@ function ConnectedDangerZone({ renderSubscriptionLink }) {
6954
6954
  }
6955
6955
  ),
6956
6956
  /* @__PURE__ */ jsxRuntime.jsx(
6957
- chunkUUN2WGGM_cjs.DeleteAccountDialog,
6957
+ chunkXGFNZTPO_cjs.DeleteAccountDialog,
6958
6958
  {
6959
6959
  open: dialogOpen,
6960
6960
  onClose: flow.onClose,
6961
6961
  step: flow.step,
6962
- blockers: chunkUUN2WGGM_cjs.toDeleteBlockerViews(flow.blockers, renderSubscriptionLink),
6962
+ blockers: chunkXGFNZTPO_cjs.toDeleteBlockerViews(flow.blockers, renderSubscriptionLink),
6963
6963
  onContinue: flow.onContinue,
6964
6964
  onBack: flow.onBack,
6965
6965
  userEmail,
@@ -6974,7 +6974,7 @@ function ConnectedDangerZone({ renderSubscriptionLink }) {
6974
6974
  function ServerConnectionRow({ onRefresh, ...status }) {
6975
6975
  const { runtimeConfig } = chunkEFEFLBRM_cjs.useBlocksEnvironment();
6976
6976
  const [isRefreshing, setIsRefreshing] = react.useState(false);
6977
- const view = chunkUUN2WGGM_cjs.serverConnectionView(status, runtimeConfig.deploymentDomain || "server");
6977
+ const view = chunkXGFNZTPO_cjs.serverConnectionView(status, runtimeConfig.deploymentDomain || "server");
6978
6978
  const refresh = async () => {
6979
6979
  setIsRefreshing(true);
6980
6980
  try {
@@ -6984,7 +6984,7 @@ function ServerConnectionRow({ onRefresh, ...status }) {
6984
6984
  }
6985
6985
  };
6986
6986
  return /* @__PURE__ */ jsxRuntime.jsx(chunkNMZI3K6R_cjs.SettingsRow, { label: "Server connection", description: view.description, children: /* @__PURE__ */ jsxRuntime.jsx(
6987
- chunkUUN2WGGM_cjs.ServerConnectionButton,
6987
+ chunkXGFNZTPO_cjs.ServerConnectionButton,
6988
6988
  {
6989
6989
  state: view.state,
6990
6990
  label: view.label,
@@ -7386,13 +7386,13 @@ var COLUMNS = [
7386
7386
  flex: 1,
7387
7387
  minWidth: 120,
7388
7388
  cellRenderer: (params) => isStandard(params.data) ? /* @__PURE__ */ jsxRuntime.jsx(
7389
- chunkUUN2WGGM_cjs.ModelProviderLabel,
7389
+ chunkXGFNZTPO_cjs.ModelProviderLabel,
7390
7390
  {
7391
7391
  logo: /* @__PURE__ */ jsxRuntime.jsx(ui.ArbiIcon, { size: 14, "aria-label": "ARBI", className: "flex-shrink-0 rounded-sm" }),
7392
7392
  children: "ARBI CITY"
7393
7393
  }
7394
7394
  ) : /* @__PURE__ */ jsxRuntime.jsx(
7395
- chunkUUN2WGGM_cjs.ModelProviderLabel,
7395
+ chunkXGFNZTPO_cjs.ModelProviderLabel,
7396
7396
  {
7397
7397
  logo: /* @__PURE__ */ jsxRuntime.jsx(react$1.ProviderIcon, { modelName: params.data?.model_name, provider: params.value, size: 14 }),
7398
7398
  children: PROVIDER_NAMES[params.value ?? ""] || params.value || "\u2014"
@@ -7469,7 +7469,7 @@ function ConnectedPremiumModels() {
7469
7469
  );
7470
7470
  if (premiumModels.length === 0) return null;
7471
7471
  return /* @__PURE__ */ jsxRuntime.jsx(chunkNMZI3K6R_cjs.SettingsPanel, { className: "max-w-2xl space-y-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkNMZI3K6R_cjs.SettingsSection, { title: "Premium models", children: /* @__PURE__ */ jsxRuntime.jsx(chunkNMZI3K6R_cjs.SettingsCard, { className: "space-y-0", children: /* @__PURE__ */ jsxRuntime.jsx(
7472
- chunkUUN2WGGM_cjs.PremiumModelsFrame,
7472
+ chunkXGFNZTPO_cjs.PremiumModelsFrame,
7473
7473
  {
7474
7474
  enabled: premiumModel !== "",
7475
7475
  onEnabledChange: (enabled) => {
@@ -7598,10 +7598,10 @@ function ConnectedAppsSettings({
7598
7598
  }
7599
7599
  };
7600
7600
  if (isLoading) {
7601
- return /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.ConnectionsLoading, { message: "Loading connected apps\u2026" });
7601
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.ConnectionsLoading, { message: "Loading connected apps\u2026" });
7602
7602
  }
7603
7603
  if (catalogError) {
7604
- return /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.ConnectionsError, { message: "Failed to load connector catalog. Please refresh and try again." });
7604
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.ConnectionsError, { message: "Failed to load connector catalog. Please refresh and try again." });
7605
7605
  }
7606
7606
  const visibleCatalog = catalog.filter((c) => isVendorVisible(c.vendor_key));
7607
7607
  const sharePointVisible = isVendorVisible("microsoft_sharepoint");
@@ -7610,7 +7610,7 @@ function ConnectedAppsSettings({
7610
7610
  (c) => !react$1.isMailboxSyncVendor(c.vendor_key) && !react$1.isSharePointVendor(c.vendor_key)
7611
7611
  );
7612
7612
  const renderCard = (entry) => /* @__PURE__ */ jsxRuntime.jsx(
7613
- chunkUUN2WGGM_cjs.ConnectionCard,
7613
+ chunkXGFNZTPO_cjs.ConnectionCard,
7614
7614
  {
7615
7615
  connection: toConnectionCardView(entry, connectedByVendor[entry.vendor_key], {
7616
7616
  isDisconnecting: disconnect.isPending && disconnect.variables?.vendorKey === entry.vendor_key,
@@ -7738,7 +7738,7 @@ function ConnectedAppsSettings({
7738
7738
  }
7739
7739
  )
7740
7740
  ] }),
7741
- catalog.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkNMZI3K6R_cjs.SettingsCard, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.ConnectionsEmpty, { message: "No connectors available yet." }) }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7741
+ catalog.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkNMZI3K6R_cjs.SettingsCard, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.ConnectionsEmpty, { message: "No connectors available yet." }) }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7742
7742
  renderGroup("Email & Drive", EMAIL_AND_DRIVE_SUBTITLE, /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mail, {}), emailCatalog),
7743
7743
  renderGroup(
7744
7744
  "Apps & Integrations (MCP)",
@@ -7815,7 +7815,7 @@ function ConnectedSettingsPage({
7815
7815
  }, [requested]);
7816
7816
  const controlled = section !== void 0;
7817
7817
  return /* @__PURE__ */ jsxRuntime.jsx(
7818
- chunkUUN2WGGM_cjs.SettingsPage,
7818
+ chunkXGFNZTPO_cjs.SettingsPage,
7819
7819
  {
7820
7820
  ...page,
7821
7821
  sections,
@@ -8062,7 +8062,7 @@ function ConnectedWorkspaceMembers({
8062
8062
  minWidth: 150,
8063
8063
  sortable: true,
8064
8064
  valueGetter: (p) => p.data ? memberName(p.data.user) : "",
8065
- cellRenderer: (p) => p.data ? /* @__PURE__ */ jsxRuntime.jsx(chunkOISSVUGI_cjs.MemberNameCell, { children: renderMember(p.data) }) : null
8065
+ cellRenderer: (p) => p.data ? /* @__PURE__ */ jsxRuntime.jsx(chunkU7OUZHBH_cjs.MemberNameCell, { children: renderMember(p.data) }) : null
8066
8066
  },
8067
8067
  {
8068
8068
  colId: "email",
@@ -8072,7 +8072,7 @@ function ConnectedWorkspaceMembers({
8072
8072
  sortable: true,
8073
8073
  valueGetter: (p) => p.data?.user.email ?? "",
8074
8074
  // Plain text, not a mailto: the row's click selects it.
8075
- cellRenderer: (p) => p.data?.user.email ? /* @__PURE__ */ jsxRuntime.jsx(chunkOISSVUGI_cjs.MemberMutedText, { className: "truncate", title: p.data.user.email, children: p.data.user.email }) : null
8075
+ cellRenderer: (p) => p.data?.user.email ? /* @__PURE__ */ jsxRuntime.jsx(chunkU7OUZHBH_cjs.MemberMutedText, { className: "truncate", title: p.data.user.email, children: p.data.user.email }) : null
8076
8076
  },
8077
8077
  {
8078
8078
  colId: "role",
@@ -8086,7 +8086,7 @@ function ConnectedWorkspaceMembers({
8086
8086
  if (!row) return null;
8087
8087
  const lock = roleLock(row.user.external_id, selfId, isOwner);
8088
8088
  return /* @__PURE__ */ jsxRuntime.jsx(
8089
- chunkOISSVUGI_cjs.MemberRoleCell,
8089
+ chunkU7OUZHBH_cjs.MemberRoleCell,
8090
8090
  {
8091
8091
  role: row.role,
8092
8092
  roles: ALL_ROLES,
@@ -8094,7 +8094,7 @@ function ConnectedWorkspaceMembers({
8094
8094
  canChange: !lock,
8095
8095
  isPending: updateRoles.isPending,
8096
8096
  onChange: (value) => void setRoles([row], value),
8097
- temporaryHint: row.is_temporary ? "Temporary, session-scoped grant \u2014 expires with the session." : void 0
8097
+ temporaryHint: row.is_temporary ? row.access_expires_at ? `Temporary access expires ${new Date(row.access_expires_at).toLocaleString()}.` : "Temporary access \u2014 expires with the session." : void 0
8098
8098
  }
8099
8099
  );
8100
8100
  }
@@ -8106,7 +8106,7 @@ function ConnectedWorkspaceMembers({
8106
8106
  minWidth: 125,
8107
8107
  sortable: true,
8108
8108
  valueGetter: (p) => p.data ? new Date(p.data.joined_at).getTime() : "",
8109
- cellRenderer: (p) => p.data ? /* @__PURE__ */ jsxRuntime.jsx(chunkOISSVUGI_cjs.MemberMutedText, { className: "cursor-default", children: ui.formatFriendlyDate(p.data.joined_at) }) : null
8109
+ cellRenderer: (p) => p.data ? /* @__PURE__ */ jsxRuntime.jsx(chunkU7OUZHBH_cjs.MemberMutedText, { className: "cursor-default", children: ui.formatFriendlyDate(p.data.joined_at) }) : null
8110
8110
  },
8111
8111
  {
8112
8112
  colId: "conversation_count",
@@ -8116,7 +8116,7 @@ function ConnectedWorkspaceMembers({
8116
8116
  sortable: true,
8117
8117
  type: "numericColumn",
8118
8118
  valueGetter: (p) => p.data?.conversation_count ?? 0,
8119
- cellRenderer: (p) => p.data ? /* @__PURE__ */ jsxRuntime.jsx(chunkOISSVUGI_cjs.MemberMutedText, { children: p.data.conversation_count }) : null
8119
+ cellRenderer: (p) => p.data ? /* @__PURE__ */ jsxRuntime.jsx(chunkU7OUZHBH_cjs.MemberMutedText, { children: p.data.conversation_count }) : null
8120
8120
  },
8121
8121
  {
8122
8122
  colId: "document_count",
@@ -8126,7 +8126,7 @@ function ConnectedWorkspaceMembers({
8126
8126
  sortable: true,
8127
8127
  type: "numericColumn",
8128
8128
  valueGetter: (p) => p.data?.document_count ?? 0,
8129
- cellRenderer: (p) => p.data ? /* @__PURE__ */ jsxRuntime.jsx(chunkOISSVUGI_cjs.MemberMutedText, { children: p.data.document_count }) : null
8129
+ cellRenderer: (p) => p.data ? /* @__PURE__ */ jsxRuntime.jsx(chunkU7OUZHBH_cjs.MemberMutedText, { children: p.data.document_count }) : null
8130
8130
  },
8131
8131
  {
8132
8132
  colId: "files_mb",
@@ -8139,7 +8139,7 @@ function ConnectedWorkspaceMembers({
8139
8139
  cellRenderer: (p) => {
8140
8140
  if (!p.data) return null;
8141
8141
  const mb = p.data.files_mb ?? 0;
8142
- return /* @__PURE__ */ jsxRuntime.jsxs(chunkOISSVUGI_cjs.MemberMutedText, { children: [
8142
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkU7OUZHBH_cjs.MemberMutedText, { children: [
8143
8143
  mb >= 100 ? Math.round(mb).toLocaleString("en-US") : mb.toFixed(1),
8144
8144
  " MB"
8145
8145
  ] });
@@ -8179,7 +8179,7 @@ Note that ${members2} may have saved private content in the ${workspaceWord2} th
8179
8179
  );
8180
8180
  const canChangeRoleSelected = selected.some((m) => !roleLock(m.user.external_id, selfId, isOwner));
8181
8181
  const ownerOnly = `Only available to ${workspaceWord2} owner`;
8182
- if (isLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunkOISSVUGI_cjs.MemberListLoading, {});
8182
+ if (isLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunkU7OUZHBH_cjs.MemberListLoading, {});
8183
8183
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": "workspace-users", className: "relative flex flex-col", children: [
8184
8184
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 overflow-auto", children: /* @__PURE__ */ jsxRuntime.jsx(
8185
8185
  chunkC2CWWEHO_cjs.GridView,
@@ -8197,7 +8197,7 @@ Note that ${members2} may have saved private content in the ${workspaceWord2} th
8197
8197
  }
8198
8198
  ) }),
8199
8199
  !readOnly && /* @__PURE__ */ jsxRuntime.jsx(chunkV4ISCZJ7_cjs.SelectionBar, { count: selected.length, onClear: () => setSelected([]), children: /* @__PURE__ */ jsxRuntime.jsx(
8200
- chunkOISSVUGI_cjs.MemberBulkActions,
8200
+ chunkU7OUZHBH_cjs.MemberBulkActions,
8201
8201
  {
8202
8202
  roles: BULK_ROLES,
8203
8203
  onChangeRole: (value) => void changeSelectedRoles(value),
@@ -8241,13 +8241,13 @@ function ConnectedWorkspaceSettings({
8241
8241
  const [membersExpanded, setMembersExpanded] = react.useState(false);
8242
8242
  const [shareOpen, setShareOpen] = react.useState(false);
8243
8243
  if (!workspace) {
8244
- return /* @__PURE__ */ jsxRuntime.jsx(chunk3CUORKDL_cjs.PageLoading, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkG2Z2KARY_cjs.LoadingIndicator, { message: "Loading workspace..." }) });
8244
+ return /* @__PURE__ */ jsxRuntime.jsx(chunk3CUORKDL_cjs.PageLoading, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkSYTZ3UAU_cjs.LoadingIndicator, { message: "Loading workspace..." }) });
8245
8245
  }
8246
8246
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
8247
8247
  /* @__PURE__ */ jsxRuntime.jsxs(chunk3CUORKDL_cjs.WorkspacePageFrame, { testId, children: [
8248
8248
  /* @__PURE__ */ jsxRuntime.jsxs(chunk3CUORKDL_cjs.WorkspaceIdentityPanel, { children: [
8249
8249
  /* @__PURE__ */ jsxRuntime.jsx(
8250
- chunkG2Z2KARY_cjs.EntityIdentityBar,
8250
+ chunkSYTZ3UAU_cjs.EntityIdentityBar,
8251
8251
  {
8252
8252
  testId: "workspace-identity-bar",
8253
8253
  canEdit: isOwner,
@@ -8264,7 +8264,7 @@ function ConnectedWorkspaceSettings({
8264
8264
  label: "Name",
8265
8265
  value: workspace.name,
8266
8266
  placeholder: "Untitled",
8267
- maxLength: chunkG2Z2KARY_cjs.IDENTITY_NAME_MAX_LENGTH,
8267
+ maxLength: chunkSYTZ3UAU_cjs.IDENTITY_NAME_MAX_LENGTH,
8268
8268
  valueClassName: "truncate text-base font-semibold",
8269
8269
  testId: "workspace-home-title",
8270
8270
  hideLabel: true,
@@ -8500,7 +8500,7 @@ function ConnectedMailboxSyncDialog({
8500
8500
  error: foldersError
8501
8501
  } = react$1.useMailboxFolders(catalog.vendor_key, open && tokensBridged);
8502
8502
  const foldersLoading = !tokensBridged || foldersQueryLoading;
8503
- const folderTree = chunkOISSVUGI_cjs.buildMailFolderTree(folders);
8503
+ const folderTree = chunkU7OUZHBH_cjs.buildMailFolderTree(folders);
8504
8504
  const [expandAllNonce, setExpandAllNonce] = react.useState(0);
8505
8505
  const [collapseAllNonce, setCollapseAllNonce] = react.useState(0);
8506
8506
  const selectAllIds = folderTree.flatMap(
@@ -8558,9 +8558,9 @@ function ConnectedMailboxSyncDialog({
8558
8558
  showDescription: true,
8559
8559
  className: "w-[92vw] sm:max-w-lg",
8560
8560
  children: [
8561
- /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.SyncDialogBody, { children: [
8562
- !lockedWorkspaceExtId && /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.SyncField, { label: "Target workspace", htmlFor: "sync-workspace", children: /* @__PURE__ */ jsxRuntime.jsx(
8563
- chunkUUN2WGGM_cjs.SyncSelect,
8561
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.SyncDialogBody, { children: [
8562
+ !lockedWorkspaceExtId && /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.SyncField, { label: "Target workspace", htmlFor: "sync-workspace", children: /* @__PURE__ */ jsxRuntime.jsx(
8563
+ chunkXGFNZTPO_cjs.SyncSelect,
8564
8564
  {
8565
8565
  id: "sync-workspace",
8566
8566
  value: workspaceExtId,
@@ -8569,9 +8569,9 @@ function ConnectedMailboxSyncDialog({
8569
8569
  options: memberWorkspaces.map((w) => ({ value: w.external_id, label: w.name }))
8570
8570
  }
8571
8571
  ) }),
8572
- /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.SyncField, { label: "Backfill window", htmlFor: "sync-backfill", children: [
8572
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.SyncField, { label: "Backfill window", htmlFor: "sync-backfill", children: [
8573
8573
  /* @__PURE__ */ jsxRuntime.jsx(
8574
- chunkUUN2WGGM_cjs.SyncSelect,
8574
+ chunkXGFNZTPO_cjs.SyncSelect,
8575
8575
  {
8576
8576
  id: "sync-backfill",
8577
8577
  value: backfill,
@@ -8591,17 +8591,17 @@ function ConnectedMailboxSyncDialog({
8591
8591
  "aria-label": "Import emails since date"
8592
8592
  }
8593
8593
  ),
8594
- /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.SyncSmallNote, { children: "Emails are always imported from this date onward \u2014 the start point never moves." })
8594
+ /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.SyncSmallNote, { children: "Emails are always imported from this date onward \u2014 the start point never moves." })
8595
8595
  ] })
8596
8596
  ] }),
8597
8597
  /* @__PURE__ */ jsxRuntime.jsx(
8598
- chunkUUN2WGGM_cjs.SyncField,
8598
+ chunkXGFNZTPO_cjs.SyncField,
8599
8599
  {
8600
8600
  label: `Folders to import${selectedFolders.length > 0 ? ` (${selectedFolders.length})` : ""}`,
8601
8601
  hint: "Select at least one folder to import.",
8602
- actions: folders.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.SyncLinkRow, { children: [
8602
+ actions: folders.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.SyncLinkRow, { children: [
8603
8603
  /* @__PURE__ */ jsxRuntime.jsx(
8604
- chunkUUN2WGGM_cjs.SyncLinkButton,
8604
+ chunkXGFNZTPO_cjs.SyncLinkButton,
8605
8605
  {
8606
8606
  onClick: () => setExpandAllNonce((n) => n + 1),
8607
8607
  testId: "mail-folders-expand-all",
@@ -8609,20 +8609,20 @@ function ConnectedMailboxSyncDialog({
8609
8609
  }
8610
8610
  ),
8611
8611
  /* @__PURE__ */ jsxRuntime.jsx(
8612
- chunkUUN2WGGM_cjs.SyncLinkButton,
8612
+ chunkXGFNZTPO_cjs.SyncLinkButton,
8613
8613
  {
8614
8614
  onClick: () => setCollapseAllNonce((n) => n + 1),
8615
8615
  testId: "mail-folders-collapse-all",
8616
8616
  children: "Collapse all"
8617
8617
  }
8618
8618
  ),
8619
- /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.SyncLinkButton, { onClick: toggleAllFolders, children: allSelected ? "Clear all" : "Select all" })
8619
+ /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.SyncLinkButton, { onClick: toggleAllFolders, children: allSelected ? "Clear all" : "Select all" })
8620
8620
  ] }),
8621
- children: foldersLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.SyncLoading, { children: "Loading folders\u2026" }) : foldersError ? (
8621
+ children: foldersLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.SyncLoading, { children: "Loading folders\u2026" }) : foldersError ? (
8622
8622
  // A failed fetch is not an empty mailbox: it hides auth/scope errors (e.g. a Gmail
8623
8623
  // account needing reconnect).
8624
8624
  /* @__PURE__ */ jsxRuntime.jsx(
8625
- chunkUUN2WGGM_cjs.SyncReconnectNotice,
8625
+ chunkXGFNZTPO_cjs.SyncReconnectNotice,
8626
8626
  {
8627
8627
  message: `Couldn\u2019t load folders from ${catalog.display_name}. Reconnect the account and try again.`,
8628
8628
  onReconnect: () => void reconnect(),
@@ -8630,8 +8630,8 @@ function ConnectedMailboxSyncDialog({
8630
8630
  testId: "folders-reconnect"
8631
8631
  }
8632
8632
  )
8633
- ) : folders.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.SyncNote, { children: "No folders found." }) : /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.SyncTreeFrame, { children: /* @__PURE__ */ jsxRuntime.jsx(
8634
- chunkOISSVUGI_cjs.MailFolderTree,
8633
+ ) : folders.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.SyncNote, { children: "No folders found." }) : /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.SyncTreeFrame, { children: /* @__PURE__ */ jsxRuntime.jsx(
8634
+ chunkU7OUZHBH_cjs.MailFolderTree,
8635
8635
  {
8636
8636
  nodes: folderTree,
8637
8637
  selected: selectedFolders,
@@ -8642,9 +8642,9 @@ function ConnectedMailboxSyncDialog({
8642
8642
  ) })
8643
8643
  }
8644
8644
  ),
8645
- /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.SyncOptions, { children: [
8645
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.SyncOptions, { children: [
8646
8646
  /* @__PURE__ */ jsxRuntime.jsx(
8647
- chunkUUN2WGGM_cjs.SyncOptionToggle,
8647
+ chunkXGFNZTPO_cjs.SyncOptionToggle,
8648
8648
  {
8649
8649
  checked: skipDuplicates,
8650
8650
  onCheckedChange: setSkipDuplicates,
@@ -8654,7 +8654,7 @@ function ConnectedMailboxSyncDialog({
8654
8654
  }
8655
8655
  ),
8656
8656
  /* @__PURE__ */ jsxRuntime.jsx(
8657
- chunkUUN2WGGM_cjs.SyncOptionToggle,
8657
+ chunkXGFNZTPO_cjs.SyncOptionToggle,
8658
8658
  {
8659
8659
  checked: autoRename,
8660
8660
  onCheckedChange: setAutoRename,
@@ -8664,7 +8664,7 @@ function ConnectedMailboxSyncDialog({
8664
8664
  }
8665
8665
  ),
8666
8666
  /* @__PURE__ */ jsxRuntime.jsx(
8667
- chunkUUN2WGGM_cjs.SyncOptionToggle,
8667
+ chunkXGFNZTPO_cjs.SyncOptionToggle,
8668
8668
  {
8669
8669
  checked: shared,
8670
8670
  onCheckedChange: setShared,
@@ -8674,7 +8674,7 @@ function ConnectedMailboxSyncDialog({
8674
8674
  }
8675
8675
  ),
8676
8676
  /* @__PURE__ */ jsxRuntime.jsx(
8677
- chunkUUN2WGGM_cjs.SyncOptionToggle,
8677
+ chunkXGFNZTPO_cjs.SyncOptionToggle,
8678
8678
  {
8679
8679
  checked: autoSync,
8680
8680
  onCheckedChange: setAutoSync,
@@ -8686,7 +8686,7 @@ function ConnectedMailboxSyncDialog({
8686
8686
  ] })
8687
8687
  ] }),
8688
8688
  /* @__PURE__ */ jsxRuntime.jsx(
8689
- chunkUUN2WGGM_cjs.SyncDialogFooter,
8689
+ chunkXGFNZTPO_cjs.SyncDialogFooter,
8690
8690
  {
8691
8691
  onCancel: () => onOpenChange(false),
8692
8692
  onSave: handleEnableSubmit,
@@ -8748,7 +8748,7 @@ function DriveFolderNode({
8748
8748
  const mightHaveChildren = docCount == null || docCount > 0;
8749
8749
  const orderedChildren = [...children].sort((a, b) => a.name.localeCompare(b.name));
8750
8750
  return /* @__PURE__ */ jsxRuntime.jsx(
8751
- chunkUUN2WGGM_cjs.SyncFolderRow,
8751
+ chunkXGFNZTPO_cjs.SyncFolderRow,
8752
8752
  {
8753
8753
  id: folder.id,
8754
8754
  name: folder.name,
@@ -8762,7 +8762,7 @@ function DriveFolderNode({
8762
8762
  onCheckedChange: () => onToggle(folder.id),
8763
8763
  count: typeof docCount === "number" ? docCount : void 0,
8764
8764
  isCountLoading: isSelectable && countLoading,
8765
- children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.SyncFolderStatus, { depth, kind: "loading" }) : orderedChildren.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.SyncFolderStatus, { depth, kind: "empty" }) : orderedChildren.map((child) => /* @__PURE__ */ jsxRuntime.jsx(
8765
+ children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.SyncFolderStatus, { depth, kind: "loading" }) : orderedChildren.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.SyncFolderStatus, { depth, kind: "empty" }) : orderedChildren.map((child) => /* @__PURE__ */ jsxRuntime.jsx(
8766
8766
  DriveFolderNode,
8767
8767
  {
8768
8768
  vendorKey,
@@ -8908,9 +8908,9 @@ function ConnectedDriveSyncDialog({
8908
8908
  showDescription: true,
8909
8909
  className: "w-[92vw] sm:max-w-lg",
8910
8910
  children: [
8911
- /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.SyncDialogBody, { children: [
8912
- !lockedWorkspaceExtId && /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.SyncField, { label: "Target workspace", htmlFor: "drive-sync-workspace", children: /* @__PURE__ */ jsxRuntime.jsx(
8913
- chunkUUN2WGGM_cjs.SyncSelect,
8911
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.SyncDialogBody, { children: [
8912
+ !lockedWorkspaceExtId && /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.SyncField, { label: "Target workspace", htmlFor: "drive-sync-workspace", children: /* @__PURE__ */ jsxRuntime.jsx(
8913
+ chunkXGFNZTPO_cjs.SyncSelect,
8914
8914
  {
8915
8915
  id: "drive-sync-workspace",
8916
8916
  value: workspaceExtId,
@@ -8920,13 +8920,13 @@ function ConnectedDriveSyncDialog({
8920
8920
  }
8921
8921
  ) }),
8922
8922
  /* @__PURE__ */ jsxRuntime.jsx(
8923
- chunkUUN2WGGM_cjs.SyncField,
8923
+ chunkXGFNZTPO_cjs.SyncField,
8924
8924
  {
8925
8925
  label: `Folders to import${selectedFolders.length > 0 ? ` (${selectedFolders.length})` : ""}`,
8926
8926
  hint: "Select at least one folder. Importing a folder includes everything inside it.",
8927
- actions: orderedFolders.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.SyncLinkRow, { children: [
8927
+ actions: orderedFolders.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.SyncLinkRow, { children: [
8928
8928
  /* @__PURE__ */ jsxRuntime.jsx(
8929
- chunkUUN2WGGM_cjs.SyncLinkButton,
8929
+ chunkXGFNZTPO_cjs.SyncLinkButton,
8930
8930
  {
8931
8931
  onClick: () => setExpandAllNonce((n) => n + 1),
8932
8932
  testId: "drive-folders-expand-all",
@@ -8934,7 +8934,7 @@ function ConnectedDriveSyncDialog({
8934
8934
  }
8935
8935
  ),
8936
8936
  /* @__PURE__ */ jsxRuntime.jsx(
8937
- chunkUUN2WGGM_cjs.SyncLinkButton,
8937
+ chunkXGFNZTPO_cjs.SyncLinkButton,
8938
8938
  {
8939
8939
  onClick: () => setCollapseAllNonce((n) => n + 1),
8940
8940
  testId: "drive-folders-collapse-all",
@@ -8942,19 +8942,19 @@ function ConnectedDriveSyncDialog({
8942
8942
  }
8943
8943
  )
8944
8944
  ] }),
8945
- children: foldersLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.SyncLoading, { children: "Loading folders\u2026" }) : needsReconnect ? /* @__PURE__ */ jsxRuntime.jsx(
8946
- chunkUUN2WGGM_cjs.SyncReconnectNotice,
8945
+ children: foldersLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.SyncLoading, { children: "Loading folders\u2026" }) : needsReconnect ? /* @__PURE__ */ jsxRuntime.jsx(
8946
+ chunkXGFNZTPO_cjs.SyncReconnectNotice,
8947
8947
  {
8948
8948
  ...reconnectButtonProps,
8949
8949
  message: `Reconnect ${catalog.display_name} to enable ${productName} \u2014 your account needs to grant file access.`
8950
8950
  }
8951
8951
  ) : foldersError ? /* @__PURE__ */ jsxRuntime.jsx(
8952
- chunkUUN2WGGM_cjs.SyncReconnectNotice,
8952
+ chunkXGFNZTPO_cjs.SyncReconnectNotice,
8953
8953
  {
8954
8954
  ...reconnectButtonProps,
8955
8955
  message: `Couldn\u2019t load folders from ${productName}. Reconnect the account and try again.`
8956
8956
  }
8957
- ) : orderedFolders.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.SyncNote, { children: "No folders found." }) : /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.SyncTreeFrame, { children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", "data-testid": "drive-folder-tree", children: orderedFolders.map((f) => /* @__PURE__ */ jsxRuntime.jsx(
8957
+ ) : orderedFolders.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.SyncNote, { children: "No folders found." }) : /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.SyncTreeFrame, { children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", "data-testid": "drive-folder-tree", children: orderedFolders.map((f) => /* @__PURE__ */ jsxRuntime.jsx(
8958
8958
  DriveFolderNode,
8959
8959
  {
8960
8960
  vendorKey: catalog.vendor_key,
@@ -8971,9 +8971,9 @@ function ConnectedDriveSyncDialog({
8971
8971
  )) }) })
8972
8972
  }
8973
8973
  ),
8974
- /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.SyncOptions, { children: [
8974
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.SyncOptions, { children: [
8975
8975
  /* @__PURE__ */ jsxRuntime.jsx(
8976
- chunkUUN2WGGM_cjs.SyncOptionToggle,
8976
+ chunkXGFNZTPO_cjs.SyncOptionToggle,
8977
8977
  {
8978
8978
  checked: skipDuplicates,
8979
8979
  onCheckedChange: setSkipDuplicates,
@@ -8982,7 +8982,7 @@ function ConnectedDriveSyncDialog({
8982
8982
  }
8983
8983
  ),
8984
8984
  /* @__PURE__ */ jsxRuntime.jsx(
8985
- chunkUUN2WGGM_cjs.SyncOptionToggle,
8985
+ chunkXGFNZTPO_cjs.SyncOptionToggle,
8986
8986
  {
8987
8987
  checked: autoRename,
8988
8988
  onCheckedChange: setAutoRename,
@@ -8991,7 +8991,7 @@ function ConnectedDriveSyncDialog({
8991
8991
  }
8992
8992
  ),
8993
8993
  /* @__PURE__ */ jsxRuntime.jsx(
8994
- chunkUUN2WGGM_cjs.SyncOptionToggle,
8994
+ chunkXGFNZTPO_cjs.SyncOptionToggle,
8995
8995
  {
8996
8996
  checked: shared,
8997
8997
  onCheckedChange: setShared,
@@ -9000,7 +9000,7 @@ function ConnectedDriveSyncDialog({
9000
9000
  }
9001
9001
  ),
9002
9002
  /* @__PURE__ */ jsxRuntime.jsx(
9003
- chunkUUN2WGGM_cjs.SyncOptionToggle,
9003
+ chunkXGFNZTPO_cjs.SyncOptionToggle,
9004
9004
  {
9005
9005
  checked: autoSync,
9006
9006
  onCheckedChange: setAutoSync,
@@ -9012,7 +9012,7 @@ function ConnectedDriveSyncDialog({
9012
9012
  ] })
9013
9013
  ] }),
9014
9014
  /* @__PURE__ */ jsxRuntime.jsx(
9015
- chunkUUN2WGGM_cjs.SyncDialogFooter,
9015
+ chunkXGFNZTPO_cjs.SyncDialogFooter,
9016
9016
  {
9017
9017
  onCancel: () => onOpenChange(false),
9018
9018
  onSave: handleEnableSubmit,
@@ -9044,7 +9044,7 @@ function BillingProjectEntity({
9044
9044
  subscription = "none",
9045
9045
  ...props
9046
9046
  }) {
9047
- const { stripeEnabled } = chunkDX5Y2NO5_cjs.useBillingSupport();
9047
+ const { stripeEnabled } = chunkYNSSIULM_cjs.useBillingSupport();
9048
9048
  const isPaid2 = stripeEnabled && (subscription === "active" || subscription === "past_due" || subscription === "dev");
9049
9049
  return /* @__PURE__ */ jsxRuntime.jsx(ui.ProjectEntity, { ...props, subscription, isPaid: isPaid2 });
9050
9050
  }
@@ -9071,8 +9071,8 @@ function InvoicesModal({
9071
9071
  key: inv.number ?? String(i),
9072
9072
  date: formatInvoiceDate(inv.date),
9073
9073
  kind: KIND_LABELS[inv.kind],
9074
- amount: chunkDX5Y2NO5_cjs.formatMoney(inv.amount, inv.currency),
9075
- amountNote: inv.amount_ex_vat != null && inv.amount_ex_vat !== inv.amount ? `${chunkDX5Y2NO5_cjs.formatMoney(inv.amount_ex_vat, inv.currency)} ex VAT` : void 0,
9074
+ amount: chunkYNSSIULM_cjs.formatMoney(inv.amount, inv.currency),
9075
+ amountNote: inv.amount_ex_vat != null && inv.amount_ex_vat !== inv.amount ? `${chunkYNSSIULM_cjs.formatMoney(inv.amount_ex_vat, inv.currency)} ex VAT` : void 0,
9076
9076
  status: inv.status,
9077
9077
  isPaid: isPaid2,
9078
9078
  href: inv.hosted_invoice_url ?? inv.url ?? inv.pdf_url ?? void 0,
@@ -9080,7 +9080,7 @@ function InvoicesModal({
9080
9080
  };
9081
9081
  });
9082
9082
  return /* @__PURE__ */ jsxRuntime.jsx(
9083
- chunkUUN2WGGM_cjs.InvoicesDialog,
9083
+ chunkXGFNZTPO_cjs.InvoicesDialog,
9084
9084
  {
9085
9085
  open,
9086
9086
  onOpenChange,
@@ -9107,7 +9107,7 @@ function StripeCheckoutModal({
9107
9107
  const [clientSecret, setClientSecret] = react.useState(null);
9108
9108
  const [isCreating, setIsCreating] = react.useState(false);
9109
9109
  const [stripe, setStripe] = react.useState(null);
9110
- const { stripeEnabled, checkout } = chunkDX5Y2NO5_cjs.useBillingSupport();
9110
+ const { stripeEnabled, checkout } = chunkYNSSIULM_cjs.useBillingSupport();
9111
9111
  const createCheckout = react$1.useCreateProjectCheckout();
9112
9112
  const refreshProject = react$1.useRefreshProject();
9113
9113
  const invalidateProjects = react$1.useInvalidateProjects();
@@ -9134,7 +9134,7 @@ function StripeCheckoutModal({
9134
9134
  projectExtId,
9135
9135
  body: {
9136
9136
  interval,
9137
- packs: chunkDX5Y2NO5_cjs.PRO_PACKS,
9137
+ packs: chunkYNSSIULM_cjs.PRO_PACKS,
9138
9138
  ai_blocks: aiBlocks,
9139
9139
  storage_blocks: storageBlocks,
9140
9140
  addon_budget_pence: addonBudgetPence,
@@ -9150,7 +9150,7 @@ function StripeCheckoutModal({
9150
9150
  },
9151
9151
  onError: (error) => {
9152
9152
  console.error("Failed to create checkout session:", error);
9153
- const reason = chunkDX5Y2NO5_cjs.apiErrorDetail(error)?.message;
9153
+ const reason = chunkYNSSIULM_cjs.apiErrorDetail(error)?.message;
9154
9154
  shell.notify.error(
9155
9155
  reason ? `Checkout didn't start: ${reason}` : "Checkout didn't start. Try again."
9156
9156
  );
@@ -9183,9 +9183,9 @@ function StripeCheckoutModal({
9183
9183
  }
9184
9184
  }, [open]);
9185
9185
  const isStripeConfigured = stripeEnabled;
9186
- const vatNote = quote ? `${chunkDX5Y2NO5_cjs.checkoutItemsLabel(aiBlocks, storageBlocks)} \xB7 ${chunkDX5Y2NO5_cjs.quoteTotalLine(quote)}` : null;
9186
+ const vatNote = quote ? `${chunkYNSSIULM_cjs.checkoutItemsLabel(aiBlocks, storageBlocks)} \xB7 ${chunkYNSSIULM_cjs.quoteTotalLine(quote)}` : null;
9187
9187
  return /* @__PURE__ */ jsxRuntime.jsx(
9188
- chunkUUN2WGGM_cjs.CheckoutDialogFrame,
9188
+ chunkXGFNZTPO_cjs.CheckoutDialogFrame,
9189
9189
  {
9190
9190
  open,
9191
9191
  onOpenChange,
@@ -9195,7 +9195,7 @@ function StripeCheckoutModal({
9195
9195
  children: clientSecret && !!stripe && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
9196
9196
  vatNote && /* @__PURE__ */ jsxRuntime.jsx("p", { "data-testid": "checkout-vat-note", className: "mb-4 text-sm text-muted-foreground", children: vatNote }),
9197
9197
  checkout?.render(stripe, { clientSecret, onComplete: handleComplete }),
9198
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children: /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.MoreInfo, { title: "Paying", label: "Payment help", testId: "checkout-payment-help", children: [
9198
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children: /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.MoreInfo, { title: "Paying", label: "Payment help", testId: "checkout-payment-help", children: [
9199
9199
  /* @__PURE__ */ jsxRuntime.jsx("p", { "data-testid": "checkout-decline-note", children: "Card declined? Nothing was charged. Try again or use another card." }),
9200
9200
  /* @__PURE__ */ jsxRuntime.jsx("p", { "data-testid": "checkout-vat-id-note", children: "No VAT number? Leave \u2018purchasing as a business\u2019 unticked." }),
9201
9201
  /* @__PURE__ */ jsxRuntime.jsx("p", { children: "Add-ons chosen here are on the first invoice with the plan and renew with it until you reduce them." })
@@ -9237,31 +9237,31 @@ function defaultBillingCountry(languages = typeof navigator === "undefined" ? []
9237
9237
  }
9238
9238
  var choiceForPacks = (packs) => packs > 0 ? "pro" : "free";
9239
9239
  function proCard(selected, isAnnual, prices) {
9240
- const packs = chunkDX5Y2NO5_cjs.PLAN_CHOICE_PACKS.pro;
9240
+ const packs = chunkYNSSIULM_cjs.PLAN_CHOICE_PACKS.pro;
9241
9241
  const currency = prices.monthly?.currency ?? prices.annual?.currency ?? "gbp";
9242
- const monthly = chunkDX5Y2NO5_cjs.packPrice(prices.monthly, packs);
9243
- const annual = chunkDX5Y2NO5_cjs.packPrice(prices.annual, packs);
9242
+ const monthly = chunkYNSSIULM_cjs.packPrice(prices.monthly, packs);
9243
+ const annual = chunkYNSSIULM_cjs.packPrice(prices.annual, packs);
9244
9244
  const current = isAnnual ? annual : monthly;
9245
9245
  const effectiveMonthly = current ? isAnnual ? current.amount_ex_vat / 12 : current.amount_ex_vat : null;
9246
9246
  return {
9247
9247
  id: packs,
9248
- name: chunkDX5Y2NO5_cjs.planNameForPacks(packs),
9248
+ name: chunkYNSSIULM_cjs.planNameForPacks(packs),
9249
9249
  isSelected: selected === "pro",
9250
9250
  price: current && effectiveMonthly != null ? {
9251
9251
  annual: isAnnual,
9252
- yearlyStrike: isAnnual && monthly && monthly.amount_ex_vat * 12 > current.amount_ex_vat ? chunkDX5Y2NO5_cjs.formatMoney(monthly.amount_ex_vat * 12, currency) : void 0,
9253
- yearlyTotal: isAnnual ? chunkDX5Y2NO5_cjs.formatMoney(current.amount_ex_vat, currency) : void 0,
9252
+ yearlyStrike: isAnnual && monthly && monthly.amount_ex_vat * 12 > current.amount_ex_vat ? chunkYNSSIULM_cjs.formatMoney(monthly.amount_ex_vat * 12, currency) : void 0,
9253
+ yearlyTotal: isAnnual ? chunkYNSSIULM_cjs.formatMoney(current.amount_ex_vat, currency) : void 0,
9254
9254
  intervalLabel: isAnnual ? "/yr + VAT" : "/mo",
9255
- monthly: chunkDX5Y2NO5_cjs.formatMoney(Math.round(effectiveMonthly), currency),
9255
+ monthly: chunkYNSSIULM_cjs.formatMoney(Math.round(effectiveMonthly), currency),
9256
9256
  taxLabel: "+ VAT",
9257
9257
  // The inclusive figure for a UK customer, right under the headline.
9258
- note: `${chunkDX5Y2NO5_cjs.formatMoney(current.amount, currency)}${isAnnual ? "/yr" : "/mo"} incl. UK VAT`
9258
+ note: `${chunkYNSSIULM_cjs.formatMoney(current.amount, currency)}${isAnnual ? "/yr" : "/mo"} incl. UK VAT`
9259
9259
  } : void 0,
9260
9260
  features: [
9261
- `${react$1.formatGbp(chunkDX5Y2NO5_cjs.PRO_AI_GBP)} of AI usage / month`,
9262
- `${chunkDX5Y2NO5_cjs.PRO_STORAGE_GB} GB storage`,
9261
+ `${react$1.formatGbp(chunkYNSSIULM_cjs.PRO_AI_GBP)} of AI usage / month`,
9262
+ `${chunkYNSSIULM_cjs.PRO_STORAGE_GB} GB storage`,
9263
9263
  "Unlimited collaborators",
9264
- ...isAnnual ? [chunkDX5Y2NO5_cjs.ANNUAL_PREMIUM_AI_NOTE] : []
9264
+ ...isAnnual ? [chunkYNSSIULM_cjs.ANNUAL_PREMIUM_AI_NOTE] : []
9265
9265
  ]
9266
9266
  };
9267
9267
  }
@@ -9273,9 +9273,9 @@ function buildPlanCards(selected, isAnnual, prices, isOnFree) {
9273
9273
  isCurrent: isOnFree,
9274
9274
  isSelected: selected === "free" && !isOnFree,
9275
9275
  features: [
9276
- `${react$1.formatGbp(chunkDX5Y2NO5_cjs.FREE_AI_GBP)} of AI usage / month`,
9277
- `${chunkDX5Y2NO5_cjs.FREE_STORAGE_MB.toLocaleString("en-US")} MB storage`,
9278
- chunkDX5Y2NO5_cjs.FREE_COLLABORATORS === 0 ? "Just you" : `${chunkDX5Y2NO5_cjs.FREE_COLLABORATORS} collaborators`
9276
+ `${react$1.formatGbp(chunkYNSSIULM_cjs.FREE_AI_GBP)} of AI usage / month`,
9277
+ `${chunkYNSSIULM_cjs.FREE_STORAGE_MB.toLocaleString("en-US")} MB storage`,
9278
+ chunkYNSSIULM_cjs.FREE_COLLABORATORS === 0 ? "Just you" : `${chunkYNSSIULM_cjs.FREE_COLLABORATORS} collaborators`
9279
9279
  ]
9280
9280
  };
9281
9281
  return [free, proCard(selected, isAnnual, prices)];
@@ -9288,7 +9288,7 @@ function PlanChoiceCards({
9288
9288
  isOnFree = false
9289
9289
  }) {
9290
9290
  return /* @__PURE__ */ jsxRuntime.jsx(
9291
- chunkUUN2WGGM_cjs.PlanCardGrid,
9291
+ chunkXGFNZTPO_cjs.PlanCardGrid,
9292
9292
  {
9293
9293
  plans: buildPlanCards(selected, isAnnual, prices, isOnFree),
9294
9294
  onSelect: (id) => onSelect(choiceForPacks(id))
@@ -9297,13 +9297,13 @@ function PlanChoiceCards({
9297
9297
  }
9298
9298
  function PlanInfoPopover2() {
9299
9299
  const { openSettings } = chunkEFEFLBRM_cjs.useBlocksEnvironment();
9300
- return /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PlanInfoPopover, { onOpenModelList: () => openSettings("chat") });
9300
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PlanInfoPopover, { onOpenModelList: () => openSettings("chat") });
9301
9301
  }
9302
9302
  function CheckoutAddonBudget({
9303
9303
  value,
9304
9304
  onChange
9305
9305
  }) {
9306
- const budget = chunkDX5Y2NO5_cjs.parseBudgetPounds(value);
9306
+ const budget = chunkYNSSIULM_cjs.parseBudgetPounds(value);
9307
9307
  return /* @__PURE__ */ jsxRuntime.jsxs(
9308
9308
  "div",
9309
9309
  {
@@ -9326,7 +9326,7 @@ function CheckoutAddonBudget({
9326
9326
  step: 25,
9327
9327
  className: "h-8 w-24",
9328
9328
  value,
9329
- placeholder: String(chunkDX5Y2NO5_cjs.DEFAULT_SPEND_CAP_PENCE / 100),
9329
+ placeholder: String(chunkYNSSIULM_cjs.DEFAULT_SPEND_CAP_PENCE / 100),
9330
9330
  onChange: (e) => onChange(e.target.value),
9331
9331
  "aria-invalid": budget === void 0,
9332
9332
  "data-testid": "checkout-addon-budget-input"
@@ -9344,7 +9344,7 @@ function BlockStepper({
9344
9344
  onChange,
9345
9345
  testId
9346
9346
  }) {
9347
- const set = (n) => onChange(Math.max(0, Math.min(chunkDX5Y2NO5_cjs.MAX_CHECKOUT_BLOCKS, n)));
9347
+ const set = (n) => onChange(Math.max(0, Math.min(chunkYNSSIULM_cjs.MAX_CHECKOUT_BLOCKS, n)));
9348
9348
  return /* @__PURE__ */ jsxRuntime.jsxs(
9349
9349
  "div",
9350
9350
  {
@@ -9388,7 +9388,7 @@ function BlockStepper({
9388
9388
  className: "size-8",
9389
9389
  "aria-label": `More: ${label}`,
9390
9390
  onClick: () => set(value + 1),
9391
- disabled: value >= chunkDX5Y2NO5_cjs.MAX_CHECKOUT_BLOCKS,
9391
+ disabled: value >= chunkYNSSIULM_cjs.MAX_CHECKOUT_BLOCKS,
9392
9392
  "data-testid": `${testId}-increment`,
9393
9393
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "size-4" })
9394
9394
  }
@@ -9405,8 +9405,8 @@ function CheckoutAddonBlocks({
9405
9405
  onStorageBlocksChange,
9406
9406
  price
9407
9407
  }) {
9408
- const ai = chunkDX5Y2NO5_cjs.addonPrice(price, "ai_usage");
9409
- const storage = chunkDX5Y2NO5_cjs.addonPrice(price, "storage");
9408
+ const ai = chunkYNSSIULM_cjs.addonPrice(price, "ai_usage");
9409
+ const storage = chunkYNSSIULM_cjs.addonPrice(price, "storage");
9410
9410
  return /* @__PURE__ */ jsxRuntime.jsxs(
9411
9411
  "div",
9412
9412
  {
@@ -9416,8 +9416,8 @@ function CheckoutAddonBlocks({
9416
9416
  /* @__PURE__ */ jsxRuntime.jsx(
9417
9417
  BlockStepper,
9418
9418
  {
9419
- label: `+${react$1.formatGbp(ai?.ai_gbp || chunkDX5Y2NO5_cjs.ADDON_BLOCK_AI_GBP)} of AI usage`,
9420
- priceText: chunkDX5Y2NO5_cjs.checkoutBlockPriceText(price, "ai_usage"),
9419
+ label: `+${react$1.formatGbp(ai?.ai_gbp || chunkYNSSIULM_cjs.ADDON_BLOCK_AI_GBP)} of AI usage`,
9420
+ priceText: chunkYNSSIULM_cjs.checkoutBlockPriceText(price, "ai_usage"),
9421
9421
  value: aiBlocks,
9422
9422
  onChange: onAiBlocksChange,
9423
9423
  testId: "checkout-ai-blocks"
@@ -9426,8 +9426,8 @@ function CheckoutAddonBlocks({
9426
9426
  /* @__PURE__ */ jsxRuntime.jsx(
9427
9427
  BlockStepper,
9428
9428
  {
9429
- label: `+${storage?.storage_gb || chunkDX5Y2NO5_cjs.STORAGE_BLOCK_GB} GB storage`,
9430
- priceText: chunkDX5Y2NO5_cjs.checkoutBlockPriceText(price, "storage"),
9429
+ label: `+${storage?.storage_gb || chunkYNSSIULM_cjs.STORAGE_BLOCK_GB} GB storage`,
9430
+ priceText: chunkYNSSIULM_cjs.checkoutBlockPriceText(price, "storage"),
9431
9431
  value: storageBlocks,
9432
9432
  onChange: onStorageBlocksChange,
9433
9433
  testId: "checkout-storage-blocks"
@@ -9482,14 +9482,14 @@ function ReferralRewardSummary2({
9482
9482
  if (!reward) return null;
9483
9483
  const applied = totalCents != null && currency ? applyReferralReward(totalCents, reward, currency) : null;
9484
9484
  return /* @__PURE__ */ jsxRuntime.jsx(
9485
- chunkUUN2WGGM_cjs.ReferralRewardSummary,
9485
+ chunkXGFNZTPO_cjs.ReferralRewardSummary,
9486
9486
  {
9487
- amountLabel: chunkDX5Y2NO5_cjs.formatMoney(reward.amount, reward.currency),
9487
+ amountLabel: chunkYNSSIULM_cjs.formatMoney(reward.amount, reward.currency),
9488
9488
  breakdown: applied && totalCents != null && currency ? {
9489
- subtotal: chunkDX5Y2NO5_cjs.formatMoney(totalCents, currency),
9490
- reward: chunkDX5Y2NO5_cjs.formatMoney(applied.bonus, currency),
9491
- youPay: chunkDX5Y2NO5_cjs.formatMoney(applied.youPay, currency),
9492
- rollover: applied.remaining > 0 ? chunkDX5Y2NO5_cjs.formatMoney(applied.remaining, currency) : void 0
9489
+ subtotal: chunkYNSSIULM_cjs.formatMoney(totalCents, currency),
9490
+ reward: chunkYNSSIULM_cjs.formatMoney(applied.bonus, currency),
9491
+ youPay: chunkYNSSIULM_cjs.formatMoney(applied.youPay, currency),
9492
+ rollover: applied.remaining > 0 ? chunkYNSSIULM_cjs.formatMoney(applied.remaining, currency) : void 0
9493
9493
  } : void 0
9494
9494
  }
9495
9495
  );
@@ -9497,7 +9497,7 @@ function ReferralRewardSummary2({
9497
9497
  function ReferralRewardNote2() {
9498
9498
  const reward = useReferralReward();
9499
9499
  if (!reward) return null;
9500
- return /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.ReferralRewardNote, { amountLabel: chunkDX5Y2NO5_cjs.formatMoney(reward.amount, reward.currency) });
9500
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.ReferralRewardNote, { amountLabel: chunkYNSSIULM_cjs.formatMoney(reward.amount, reward.currency) });
9501
9501
  }
9502
9502
  function CheckoutTotal({
9503
9503
  state,
@@ -9526,7 +9526,7 @@ function CheckoutTotal({
9526
9526
  className: "text-sm font-medium text-foreground",
9527
9527
  "data-testid": "checkout-total",
9528
9528
  "aria-live": "polite",
9529
- children: state.quote && !state.isLoading ? chunkDX5Y2NO5_cjs.quoteTotalLine(state.quote) : state.isLoading ? "Calculating total\u2026" : state.error
9529
+ children: state.quote && !state.isLoading ? chunkYNSSIULM_cjs.quoteTotalLine(state.quote) : state.isLoading ? "Calculating total\u2026" : state.error
9530
9530
  }
9531
9531
  )
9532
9532
  ] });
@@ -9559,13 +9559,13 @@ function useCheckoutQuote({
9559
9559
  ...aiBlocks || storageBlocks ? { addons: { ai_usage: aiBlocks, storage: storageBlocks } } : {}
9560
9560
  } : null
9561
9561
  );
9562
- const { code, message } = query.isError ? chunkDX5Y2NO5_cjs.quoteError(query.error) : {};
9563
- const locationInvalid = code === chunkDX5Y2NO5_cjs.TAX_LOCATION_INVALID;
9562
+ const { code, message } = query.isError ? chunkYNSSIULM_cjs.quoteError(query.error) : {};
9563
+ const locationInvalid = code === chunkYNSSIULM_cjs.TAX_LOCATION_INVALID;
9564
9564
  const isLoading = enabled && (query.isLoading || postal !== postalCode.trim());
9565
9565
  return {
9566
9566
  quote: query.data,
9567
9567
  isLoading,
9568
- showPostcode: chunkDX5Y2NO5_cjs.POSTCODE_COUNTRIES.includes(country) || locationInvalid || postalCode !== "",
9568
+ showPostcode: chunkYNSSIULM_cjs.POSTCODE_COUNTRIES.includes(country) || locationInvalid || postalCode !== "",
9569
9569
  error: query.isError ? locationInvalid ? message ?? "Enter your ZIP / postal code to see the total." : message ?? "Couldn't calculate tax. Stripe shows the total next." : null,
9570
9570
  canContinue: !isLoading && (!!query.data || query.isError && !locationInvalid)
9571
9571
  };
@@ -9574,7 +9574,7 @@ function SubscriptionPlans({ projectExtId, onDismiss }) {
9574
9574
  const { data: products, isLoading, error } = react$1.useProducts();
9575
9575
  const [isAnnual, setIsAnnual] = react.useState(false);
9576
9576
  const [promoCode, setPromoCode] = react.useState("");
9577
- const [addonBudget, setAddonBudget] = react.useState(String(chunkDX5Y2NO5_cjs.DEFAULT_SPEND_CAP_PENCE / 100));
9577
+ const [addonBudget, setAddonBudget] = react.useState(String(chunkYNSSIULM_cjs.DEFAULT_SPEND_CAP_PENCE / 100));
9578
9578
  const [checkoutBudget, setCheckoutBudget] = react.useState(null);
9579
9579
  const [aiBlocks, setAiBlocks] = react.useState(0);
9580
9580
  const [storageBlocks, setStorageBlocks] = react.useState(0);
@@ -9592,31 +9592,31 @@ function SubscriptionPlans({ projectExtId, onDismiss }) {
9592
9592
  storageBlocks,
9593
9593
  enabled: !!products?.length
9594
9594
  });
9595
- if (isLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PlanNotice, { children: "Loading plans\u2026" });
9596
- if (error) return /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PlanNotice, { tone: "error", children: "Plans didn't load. Try again." });
9597
- if (!products || products.length === 0) return /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PlanNotice, { children: "No plans available." });
9598
- const prices = chunkDX5Y2NO5_cjs.findProPrices(products);
9595
+ if (isLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PlanNotice, { children: "Loading plans\u2026" });
9596
+ if (error) return /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PlanNotice, { tone: "error", children: "Plans didn't load. Try again." });
9597
+ if (!products || products.length === 0) return /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PlanNotice, { children: "No plans available." });
9598
+ const prices = chunkYNSSIULM_cjs.findProPrices(products);
9599
9599
  const intervalPrice = isAnnual ? prices.annual : prices.monthly;
9600
- const selectedPrice = chunkDX5Y2NO5_cjs.packPrice(intervalPrice);
9600
+ const selectedPrice = chunkYNSSIULM_cjs.packPrice(intervalPrice);
9601
9601
  if (!intervalPrice) return null;
9602
9602
  const interval = isAnnual ? "year" : "month";
9603
- const savingsPercent = chunkDX5Y2NO5_cjs.calcSavingsPercent(prices.monthly, prices.annual);
9603
+ const savingsPercent = chunkYNSSIULM_cjs.calcSavingsPercent(prices.monthly, prices.annual);
9604
9604
  const handleSubscribe = () => {
9605
9605
  setCheckoutInterval(interval);
9606
- const parsed = chunkDX5Y2NO5_cjs.parseBudgetPounds(addonBudget);
9607
- setCheckoutBudget(parsed == null || parsed === chunkDX5Y2NO5_cjs.DEFAULT_SPEND_CAP_PENCE ? null : parsed);
9606
+ const parsed = chunkYNSSIULM_cjs.parseBudgetPounds(addonBudget);
9607
+ setCheckoutBudget(parsed == null || parsed === chunkYNSSIULM_cjs.DEFAULT_SPEND_CAP_PENCE ? null : parsed);
9608
9608
  setCheckoutQuote(quote.quote);
9609
9609
  setIsCheckoutModalOpen(true);
9610
9610
  };
9611
9611
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
9612
- /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.PlanStack, { children: [
9612
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.PlanStack, { children: [
9613
9613
  /* @__PURE__ */ jsxRuntime.jsx(
9614
- chunkUUN2WGGM_cjs.PlanPickerHeader,
9614
+ chunkXGFNZTPO_cjs.PlanPickerHeader,
9615
9615
  {
9616
9616
  title: "Plan",
9617
9617
  info: /* @__PURE__ */ jsxRuntime.jsx(PlanInfoPopover2, {}),
9618
9618
  toggle: /* @__PURE__ */ jsxRuntime.jsx(
9619
- chunkUUN2WGGM_cjs.PricingToggle,
9619
+ chunkXGFNZTPO_cjs.PricingToggle,
9620
9620
  {
9621
9621
  isAnnual,
9622
9622
  onToggle: () => setIsAnnual(!isAnnual),
@@ -9653,7 +9653,7 @@ function SubscriptionPlans({ projectExtId, onDismiss }) {
9653
9653
  currency: intervalPrice.currency
9654
9654
  }
9655
9655
  ),
9656
- /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PromoCodeInput, { value: promoCode, onChange: setPromoCode }),
9656
+ /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PromoCodeInput, { value: promoCode, onChange: setPromoCode }),
9657
9657
  /* @__PURE__ */ jsxRuntime.jsx(
9658
9658
  CheckoutCountrySelect,
9659
9659
  {
@@ -9665,9 +9665,9 @@ function SubscriptionPlans({ projectExtId, onDismiss }) {
9665
9665
  }
9666
9666
  ),
9667
9667
  /* @__PURE__ */ jsxRuntime.jsx(CheckoutTotal, { state: quote, postalCode, onPostalCodeChange: setPostalCode }),
9668
- /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.PlanActionRow, { children: [
9668
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.PlanActionRow, { children: [
9669
9669
  onDismiss && /* @__PURE__ */ jsxRuntime.jsx(
9670
- chunkUUN2WGGM_cjs.PlanActionButton,
9670
+ chunkXGFNZTPO_cjs.PlanActionButton,
9671
9671
  {
9672
9672
  tone: "muted",
9673
9673
  fill: true,
@@ -9678,11 +9678,11 @@ function SubscriptionPlans({ projectExtId, onDismiss }) {
9678
9678
  }
9679
9679
  ),
9680
9680
  /* @__PURE__ */ jsxRuntime.jsx(
9681
- chunkUUN2WGGM_cjs.PlanActionButton,
9681
+ chunkXGFNZTPO_cjs.PlanActionButton,
9682
9682
  {
9683
9683
  fill: true,
9684
9684
  onClick: handleSubscribe,
9685
- disabled: !selectedPrice || chunkDX5Y2NO5_cjs.parseBudgetPounds(addonBudget) === void 0 || !quote.canContinue,
9685
+ disabled: !selectedPrice || chunkYNSSIULM_cjs.parseBudgetPounds(addonBudget) === void 0 || !quote.canContinue,
9686
9686
  size: "sm",
9687
9687
  "data-testid": "subscribe-button",
9688
9688
  children: "Continue to payment"
@@ -9722,7 +9722,7 @@ var FALLBACK_MESSAGES = {
9722
9722
  BILLING_ADDRESS_REQUIRED: "Add a billing address first."
9723
9723
  };
9724
9724
  function addonErrorMessage(error) {
9725
- const detail = chunkDX5Y2NO5_cjs.apiErrorDetail(error);
9725
+ const detail = chunkYNSSIULM_cjs.apiErrorDetail(error);
9726
9726
  if (detail && typeof detail === "object") {
9727
9727
  const { code, message } = detail;
9728
9728
  if (message) return message;
@@ -9744,18 +9744,18 @@ function chargeRefusalMessage(error) {
9744
9744
  return code ? REFUSALS[code] : null;
9745
9745
  }
9746
9746
  function addonErrorCode(error) {
9747
- const detail = chunkDX5Y2NO5_cjs.apiErrorDetail(error);
9747
+ const detail = chunkYNSSIULM_cjs.apiErrorDetail(error);
9748
9748
  if (detail && typeof detail === "object") {
9749
9749
  const code = detail.code;
9750
9750
  if (code && code in FALLBACK_MESSAGES) return code;
9751
9751
  }
9752
9752
  return null;
9753
9753
  }
9754
- var addedMessage = (kind, blockAiGbp, blockStorageGb) => kind === "ai_usage" ? `${react$1.formatGbp(blockAiGbp ?? chunkDX5Y2NO5_cjs.ADDON_BLOCK_AI_GBP)} of AI usage added` : `${blockStorageGb ?? chunkDX5Y2NO5_cjs.STORAGE_BLOCK_GB} GB added`;
9754
+ var addedMessage = (kind, blockAiGbp, blockStorageGb) => kind === "ai_usage" ? `${react$1.formatGbp(blockAiGbp ?? chunkYNSSIULM_cjs.ADDON_BLOCK_AI_GBP)} of AI usage added` : `${blockStorageGb ?? chunkYNSSIULM_cjs.STORAGE_BLOCK_GB} GB added`;
9755
9755
  function useAddonPurchase() {
9756
9756
  const addBlock = react$1.useAddProjectAddonBlock();
9757
9757
  const { mutate } = addBlock;
9758
- const { onAddonBlocksBought } = chunkDX5Y2NO5_cjs.useBillingSupport();
9758
+ const { onAddonBlocksBought } = chunkYNSSIULM_cjs.useBillingSupport();
9759
9759
  const buy = react.useCallback(
9760
9760
  (kind, projectExtId, options2) => {
9761
9761
  mutate(
@@ -9799,7 +9799,7 @@ function PlanChangeLines({
9799
9799
  isError,
9800
9800
  className
9801
9801
  }) {
9802
- const lines = preview ? chunkDX5Y2NO5_cjs.planPreviewLines(preview) : [{ id: "pay-today", text: isError ? chunkDX5Y2NO5_cjs.PAY_TODAY_UNPRICED : "Checking price\u2026" }];
9802
+ const lines = preview ? chunkYNSSIULM_cjs.planPreviewLines(preview) : [{ id: "pay-today", text: isError ? chunkYNSSIULM_cjs.PAY_TODAY_UNPRICED : "Checking price\u2026" }];
9803
9803
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className, "data-testid": "plan-change-lines", children: lines.map((line) => /* @__PURE__ */ jsxRuntime.jsx("p", { "data-testid": `plan-change-${line.id}`, children: line.text }, line.id)) });
9804
9804
  }
9805
9805
  var BANK_CONFIRM_PLAN_CHANGE = "Confirm with your bank. Nothing is charged until you do.";
@@ -9807,13 +9807,13 @@ function notifyPlanChange(data, fallback, planName2) {
9807
9807
  const outcome = data?.plan_change;
9808
9808
  switch (outcome?.result) {
9809
9809
  case "upgraded": {
9810
- const plan = chunkDX5Y2NO5_cjs.planNameForPacks(data?.addons?.packs ?? data?.packs);
9811
- const charged = outcome.charged_pence > 0 ? ` \xB7 ${chunkDX5Y2NO5_cjs.formatMoney(outcome.charged_pence, "gbp")} charged` : "";
9810
+ const plan = chunkYNSSIULM_cjs.planNameForPacks(data?.addons?.packs ?? data?.packs);
9811
+ const charged = outcome.charged_pence > 0 ? ` \xB7 ${chunkYNSSIULM_cjs.formatMoney(outcome.charged_pence, "gbp")} charged` : "";
9812
9812
  shell.notify.success(`Upgraded to ${plan}${charged}`);
9813
9813
  break;
9814
9814
  }
9815
9815
  case "scheduled": {
9816
- const when2 = chunkDX5Y2NO5_cjs.formatPeriodEnd(data?.addons?.period_end ?? data?.current_period_end);
9816
+ const when2 = chunkYNSSIULM_cjs.formatPeriodEnd(data?.addons?.period_end ?? data?.current_period_end);
9817
9817
  shell.notify.success(when2 ? `Scheduled for ${when2}` : fallback);
9818
9818
  break;
9819
9819
  }
@@ -9846,23 +9846,23 @@ function ChangeProPlan({
9846
9846
  const { data: products } = react$1.useProducts();
9847
9847
  const changePlan = react$1.useChangeProjectPlan();
9848
9848
  const cancel = react$1.useCancelProjectSubscription();
9849
- const prices = chunkDX5Y2NO5_cjs.findProPrices(products);
9849
+ const prices = chunkYNSSIULM_cjs.findProPrices(products);
9850
9850
  const addons = project.addons;
9851
9851
  const isCanceling = project.cancel_at_period_end === true || project.subscription === "canceled";
9852
- const currentPacks = Math.max(addons?.packs ?? project.packs ?? chunkDX5Y2NO5_cjs.PRO_PACKS, chunkDX5Y2NO5_cjs.PRO_PACKS);
9853
- const isLegacyMultiPack = currentPacks > chunkDX5Y2NO5_cjs.PRO_PACKS;
9852
+ const currentPacks = Math.max(addons?.packs ?? project.packs ?? chunkYNSSIULM_cjs.PRO_PACKS, chunkYNSSIULM_cjs.PRO_PACKS);
9853
+ const isLegacyMultiPack = currentPacks > chunkYNSSIULM_cjs.PRO_PACKS;
9854
9854
  const currentInterval = project.plan_interval === "year" ? "year" : "month";
9855
9855
  const scheduledPacks = isCanceling ? 0 : addons?.packs_next ?? currentPacks;
9856
9856
  const scheduledInterval = addons?.pending_interval ?? currentInterval;
9857
9857
  const [targetPacks, setTargetPacks] = react.useState(scheduledPacks);
9858
9858
  const [chosenInterval, setChosenInterval] = react.useState(scheduledInterval);
9859
- const targetInterval = targetPacks > chunkDX5Y2NO5_cjs.PRO_PACKS ? currentInterval : chosenInterval;
9859
+ const targetInterval = targetPacks > chunkYNSSIULM_cjs.PRO_PACKS ? currentInterval : chosenInterval;
9860
9860
  const periodEnd = formatDate(addons?.period_end ?? project.current_period_end);
9861
9861
  const when2 = periodEnd ?? "the end of the period";
9862
9862
  const shortWhen = periodEnd ? periodEnd.replace(/ \d{4}$/, "") : "period end";
9863
9863
  const isPending = changePlan.isPending || cancel.isPending;
9864
9864
  const sameAsScheduled = targetPacks === scheduledPacks && (targetPacks === 0 || targetInterval === scheduledInterval);
9865
- const packOptions = isLegacyMultiPack ? [currentPacks, chunkDX5Y2NO5_cjs.PRO_PACKS, 0] : [chunkDX5Y2NO5_cjs.PRO_PACKS, 0];
9865
+ const packOptions = isLegacyMultiPack ? [currentPacks, chunkYNSSIULM_cjs.PRO_PACKS, 0] : [chunkYNSSIULM_cjs.PRO_PACKS, 0];
9866
9866
  const intervalPrice = targetInterval === "year" ? prices.annual : prices.monthly;
9867
9867
  const currency = intervalPrice?.currency ?? project.currency ?? "gbp";
9868
9868
  const preview = react$1.usePreviewProjectPlanChange(
@@ -9870,7 +9870,7 @@ function ChangeProPlan({
9870
9870
  sameAsScheduled || targetPacks === 0 ? null : { packs: targetPacks, interval: targetInterval }
9871
9871
  );
9872
9872
  const noChange = sameAsScheduled || preview.data?.unchanged === true;
9873
- const nameFor = (packs) => packs === currentPacks && packs > 0 ? chunkDX5Y2NO5_cjs.proTierName(project) : chunkDX5Y2NO5_cjs.planNameForPacks(packs);
9873
+ const nameFor = (packs) => packs === currentPacks && packs > 0 ? chunkYNSSIULM_cjs.proTierName(project) : chunkYNSSIULM_cjs.planNameForPacks(packs);
9874
9874
  const effects = [];
9875
9875
  const target = nameFor(targetPacks);
9876
9876
  if (targetPacks === 0) {
@@ -9880,7 +9880,7 @@ function ChangeProPlan({
9880
9880
  if (targetPacks < currentPacks) {
9881
9881
  effects.push(`Changes to one Pro licence on ${when2}. No refund.`);
9882
9882
  } else if (!isCanceling && addons?.packs_next != null) {
9883
- effects.push(`Cancels the change to ${chunkDX5Y2NO5_cjs.planNameForPacks(addons.packs_next)}.`);
9883
+ effects.push(`Cancels the change to ${chunkYNSSIULM_cjs.planNameForPacks(addons.packs_next)}.`);
9884
9884
  }
9885
9885
  if (targetInterval !== currentInterval) {
9886
9886
  effects.push(`${targetInterval === "year" ? "Annual" : "Monthly"} billing from ${when2}.`);
@@ -9919,33 +9919,33 @@ function ChangeProPlan({
9919
9919
  if (packs === 0) {
9920
9920
  return {
9921
9921
  total: "\xA30",
9922
- summary: `${react$1.formatGbp(chunkDX5Y2NO5_cjs.FREE_AI_GBP)} of AI usage \xB7 ${chunkDX5Y2NO5_cjs.FREE_STORAGE_MB} MB \xB7 just you`
9922
+ summary: `${react$1.formatGbp(chunkYNSSIULM_cjs.FREE_AI_GBP)} of AI usage \xB7 ${chunkYNSSIULM_cjs.FREE_STORAGE_MB} MB \xB7 just you`
9923
9923
  };
9924
9924
  }
9925
- const allowance = `${react$1.formatGbp(chunkDX5Y2NO5_cjs.PRO_AI_GBP * packs)} of AI usage \xB7 ${chunkDX5Y2NO5_cjs.PRO_STORAGE_GB * packs} GB`;
9926
- const legacy = packs > chunkDX5Y2NO5_cjs.PRO_PACKS;
9927
- const exVat = legacy ? project.amount_ex_vat : chunkDX5Y2NO5_cjs.packPrice(intervalPrice)?.amount_ex_vat;
9925
+ const allowance = `${react$1.formatGbp(chunkYNSSIULM_cjs.PRO_AI_GBP * packs)} of AI usage \xB7 ${chunkYNSSIULM_cjs.PRO_STORAGE_GB * packs} GB`;
9926
+ const legacy = packs > chunkYNSSIULM_cjs.PRO_PACKS;
9927
+ const exVat = legacy ? project.amount_ex_vat : chunkYNSSIULM_cjs.packPrice(intervalPrice)?.amount_ex_vat;
9928
9928
  return {
9929
- total: exVat != null ? chunkDX5Y2NO5_cjs.plusVat(exVat, currency) : void 0,
9929
+ total: exVat != null ? chunkYNSSIULM_cjs.plusVat(exVat, currency) : void 0,
9930
9930
  summary: allowance
9931
9931
  };
9932
9932
  };
9933
- return /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.PlanStack, { gap: 4, testId: "change-pro-plan", children: [
9933
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.PlanStack, { gap: 4, testId: "change-pro-plan", children: [
9934
9934
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [
9935
9935
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-foreground", children: "Billing" }),
9936
- targetPacks > chunkDX5Y2NO5_cjs.PRO_PACKS ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", "data-testid": "change-plan-interval-fixed", children: currentInterval === "year" ? "Annual" : "Monthly" }) : /* @__PURE__ */ jsxRuntime.jsx(
9937
- chunkUUN2WGGM_cjs.PricingToggle,
9936
+ targetPacks > chunkYNSSIULM_cjs.PRO_PACKS ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", "data-testid": "change-plan-interval-fixed", children: currentInterval === "year" ? "Annual" : "Monthly" }) : /* @__PURE__ */ jsxRuntime.jsx(
9937
+ chunkXGFNZTPO_cjs.PricingToggle,
9938
9938
  {
9939
9939
  isAnnual: targetInterval === "year",
9940
9940
  onToggle: () => setChosenInterval(targetInterval === "year" ? "month" : "year"),
9941
- savingsPercent: chunkDX5Y2NO5_cjs.calcSavingsPercent(prices.monthly, prices.annual)
9941
+ savingsPercent: chunkYNSSIULM_cjs.calcSavingsPercent(prices.monthly, prices.annual)
9942
9942
  }
9943
9943
  )
9944
9944
  ] }),
9945
- /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PlanStack, { gap: 2, children: packOptions.map((packs) => {
9945
+ /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PlanStack, { gap: 2, children: packOptions.map((packs) => {
9946
9946
  const { total, summary } = optionFor(packs);
9947
9947
  return /* @__PURE__ */ jsxRuntime.jsx(
9948
- chunkUUN2WGGM_cjs.PlanTierOption,
9948
+ chunkXGFNZTPO_cjs.PlanTierOption,
9949
9949
  {
9950
9950
  onSelect: setTargetPacks,
9951
9951
  option: {
@@ -9962,13 +9962,13 @@ function ChangeProPlan({
9962
9962
  );
9963
9963
  }) }),
9964
9964
  isLegacyMultiPack && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1", children: [
9965
- /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.PlanNotice, { className: "text-xs", testId: "change-plan-legacy-note", children: [
9966
- chunkDX5Y2NO5_cjs.proTierName(project),
9965
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.PlanNotice, { className: "text-xs", testId: "change-plan-legacy-note", children: [
9966
+ chunkYNSSIULM_cjs.proTierName(project),
9967
9967
  " is no longer sold"
9968
9968
  ] }),
9969
- /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.MoreInfo, { title: "Legacy plan", testId: "change-plan-legacy-more-info", children: [
9969
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.MoreInfo, { title: "Legacy plan", testId: "change-plan-legacy-more-info", children: [
9970
9970
  /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
9971
- chunkDX5Y2NO5_cjs.proTierName(project),
9971
+ chunkYNSSIULM_cjs.proTierName(project),
9972
9972
  " keeps renewing at its own price, with its allowance and add-ons, until you change it."
9973
9973
  ] }),
9974
9974
  /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
@@ -9989,7 +9989,7 @@ function ChangeProPlan({
9989
9989
  ),
9990
9990
  targetPacks > 0 && /* @__PURE__ */ jsxRuntime.jsx(ReferralRewardNote2, {}),
9991
9991
  /* @__PURE__ */ jsxRuntime.jsx(
9992
- chunkUUN2WGGM_cjs.PlanActionButton,
9992
+ chunkXGFNZTPO_cjs.PlanActionButton,
9993
9993
  {
9994
9994
  onClick: apply,
9995
9995
  disabled: noChange || isPending,
@@ -10000,9 +10000,9 @@ function ChangeProPlan({
10000
10000
  ] });
10001
10001
  }
10002
10002
  function ChangePlanDialog({ project, open, onOpenChange }) {
10003
- const isPro = !!project && chunkDX5Y2NO5_cjs.isProProject(project);
10003
+ const isPro = !!project && chunkYNSSIULM_cjs.isProProject(project);
10004
10004
  return /* @__PURE__ */ jsxRuntime.jsx(
10005
- chunkUUN2WGGM_cjs.PlanDialogFrame,
10005
+ chunkXGFNZTPO_cjs.PlanDialogFrame,
10006
10006
  {
10007
10007
  open,
10008
10008
  onOpenChange,
@@ -10022,14 +10022,14 @@ function ChangePlanDialog({ project, open, onOpenChange }) {
10022
10022
  }
10023
10023
  function ProjectsTable() {
10024
10024
  const { data: projects, isLoading } = react$1.useProjects();
10025
- const currentUserExtId = chunkDX5Y2NO5_cjs.useSelfExtId();
10025
+ const currentUserExtId = chunkYNSSIULM_cjs.useSelfExtId();
10026
10026
  const { openProject } = chunkEFEFLBRM_cjs.useBlocksEnvironment();
10027
10027
  const updateProject = react$1.useUpdateProjectFields();
10028
10028
  const [renameTarget, setRenameTarget] = react.useState(null);
10029
10029
  const [renameValue, setRenameValue] = react.useState("");
10030
10030
  const [invoicesTarget, setInvoicesTarget] = react.useState(null);
10031
10031
  const [upgradeTarget, setUpgradeTarget] = react.useState(null);
10032
- const { stripeEnabled } = chunkDX5Y2NO5_cjs.useBillingSupport();
10032
+ const { stripeEnabled } = chunkYNSSIULM_cjs.useBillingSupport();
10033
10033
  const ownedProjects = react.useMemo(
10034
10034
  () => (projects ?? []).filter((p) => p.created_by === currentUserExtId),
10035
10035
  [projects, currentUserExtId]
@@ -10068,13 +10068,13 @@ function ProjectsTable() {
10068
10068
  const hasPaid = p.subscription === "active" || p.subscription === "past_due";
10069
10069
  const canUpgrade = stripeEnabled && !hasPaid && p.subscription !== "canceled" && p.subscription !== "dev";
10070
10070
  return /* @__PURE__ */ jsxRuntime.jsx(
10071
- chunkUUN2WGGM_cjs.ProjectRow,
10071
+ chunkXGFNZTPO_cjs.ProjectRow,
10072
10072
  {
10073
10073
  testId: `project-row-${p.external_id}`,
10074
10074
  onOpen: () => openProject(p.external_id),
10075
10075
  identity: /* @__PURE__ */ jsxRuntime.jsx(BillingProjectEntity, { name: p.name, relation: "mine", subscription: p.subscription, size: "sm" }),
10076
- summary: stripeEnabled ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex items-center whitespace-nowrap", children: /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PlanBadge, { ...chunkDX5Y2NO5_cjs.planBadgeView(p) }) }) : void 0,
10077
- usage: p.quotas ? /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.QuotaMeter, { items: chunkDX5Y2NO5_cjs.getQuotaItems(p.quotas), size: "lg" }) : void 0,
10076
+ summary: stripeEnabled ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex items-center whitespace-nowrap", children: /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PlanBadge, { ...chunkYNSSIULM_cjs.planBadgeView(p) }) }) : void 0,
10077
+ usage: p.quotas ? /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.QuotaMeter, { items: chunkYNSSIULM_cjs.getQuotaItems(p.quotas), size: "lg" }) : void 0,
10078
10078
  actions: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
10079
10079
  canUpgrade && /* @__PURE__ */ jsxRuntime.jsxs(
10080
10080
  ui.Button,
@@ -10108,9 +10108,9 @@ function ProjectsTable() {
10108
10108
  );
10109
10109
  };
10110
10110
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
10111
- /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.ProjectList, { isLoading, isEmpty: ownedProjects.length === 0, isFilteredOut: false, children: ownedProjects.map(renderRow) }),
10111
+ /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.ProjectList, { isLoading, isEmpty: ownedProjects.length === 0, isFilteredOut: false, children: ownedProjects.map(renderRow) }),
10112
10112
  /* @__PURE__ */ jsxRuntime.jsx(
10113
- chunkUUN2WGGM_cjs.RenameDialog,
10113
+ chunkXGFNZTPO_cjs.RenameDialog,
10114
10114
  {
10115
10115
  open: !!renameTarget,
10116
10116
  onClose: () => setRenameTarget(null),
@@ -10141,7 +10141,7 @@ function ProjectsTable() {
10141
10141
  }
10142
10142
  function SharedProjects() {
10143
10143
  const { data: projects } = react$1.useProjects();
10144
- const currentUserExtId = chunkDX5Y2NO5_cjs.useSelfExtId();
10144
+ const currentUserExtId = chunkYNSSIULM_cjs.useSelfExtId();
10145
10145
  const { data: usageToday } = react$1.useUserUsageToday();
10146
10146
  const shared = react.useMemo(
10147
10147
  () => (projects ?? []).filter((p) => p.created_by !== currentUserExtId),
@@ -10149,10 +10149,10 @@ function SharedProjects() {
10149
10149
  );
10150
10150
  if (shared.length === 0) return null;
10151
10151
  const usedToday = usageToday?.used_gbp ?? 0;
10152
- return /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.SharedProjectsSection, { footnote: "Your daily AI usage allowance in projects other people run \u2014 their plan and billing are theirs.", children: shared.map((p) => {
10152
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.SharedProjectsSection, { footnote: "Your daily AI usage allowance in projects other people run \u2014 their plan and billing are theirs.", children: shared.map((p) => {
10153
10153
  const cap = p.daily_cap_per_user;
10154
10154
  return /* @__PURE__ */ jsxRuntime.jsx(
10155
- chunkUUN2WGGM_cjs.SharedProjectRow,
10155
+ chunkXGFNZTPO_cjs.SharedProjectRow,
10156
10156
  {
10157
10157
  testId: `shared-project-${p.external_id}`,
10158
10158
  identity: /* @__PURE__ */ jsxRuntime.jsx(BillingProjectEntity, { name: p.name, relation: "other", size: "sm" }),
@@ -10196,7 +10196,7 @@ function DailyCapEditor({ project }) {
10196
10196
  );
10197
10197
  };
10198
10198
  return /* @__PURE__ */ jsxRuntime.jsx(
10199
- chunkUUN2WGGM_cjs.DailyCapField,
10199
+ chunkXGFNZTPO_cjs.DailyCapField,
10200
10200
  {
10201
10201
  value,
10202
10202
  onChange: setValue,
@@ -10209,11 +10209,11 @@ function DailyCapEditor({ project }) {
10209
10209
  function SubscriptionStatus({ project }) {
10210
10210
  const { quotas, cancel_at_period_end, subscription, current_period_end, addons } = project;
10211
10211
  return /* @__PURE__ */ jsxRuntime.jsx(
10212
- chunkUUN2WGGM_cjs.SubscriptionStatusView,
10212
+ chunkXGFNZTPO_cjs.SubscriptionStatusView,
10213
10213
  {
10214
- resetDate: chunkDX5Y2NO5_cjs.formatResetDate(addons?.ai_usage_reset_at ?? current_period_end),
10214
+ resetDate: chunkYNSSIULM_cjs.formatResetDate(addons?.ai_usage_reset_at ?? current_period_end),
10215
10215
  isCanceling: subscription === "canceled" || cancel_at_period_end === true,
10216
- meters: chunkDX5Y2NO5_cjs.getQuotaItems(quotas).map((q) => ({
10216
+ meters: chunkYNSSIULM_cjs.getQuotaItems(quotas).map((q) => ({
10217
10217
  key: q.key,
10218
10218
  icon: q.icon,
10219
10219
  label: q.label,
@@ -10277,7 +10277,7 @@ function PendingChange({
10277
10277
  }
10278
10278
  );
10279
10279
  }
10280
- var titleFor = (kind, blockAiGbp, blockStorageGb) => kind === "ai_usage" ? `Add ${react$1.formatGbp(blockAiGbp ?? chunkDX5Y2NO5_cjs.ADDON_BLOCK_AI_GBP)} of AI usage` : `Add ${blockStorageGb ?? chunkDX5Y2NO5_cjs.STORAGE_BLOCK_GB} GB storage`;
10280
+ var titleFor = (kind, blockAiGbp, blockStorageGb) => kind === "ai_usage" ? `Add ${react$1.formatGbp(blockAiGbp ?? chunkYNSSIULM_cjs.ADDON_BLOCK_AI_GBP)} of AI usage` : `Add ${blockStorageGb ?? chunkYNSSIULM_cjs.STORAGE_BLOCK_GB} GB storage`;
10281
10281
  var blocksOf = (kind, project) => (kind === "ai_usage" ? project.addons?.ai_blocks : project.addons?.storage_blocks) ?? 0;
10282
10282
  function Row({ label, children }) {
10283
10283
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-baseline justify-between gap-4", children: [
@@ -10298,11 +10298,11 @@ function AddAddonDialog({
10298
10298
  const addons = project.addons;
10299
10299
  if (!addons) return null;
10300
10300
  const isAnnual = project.plan_interval === "year";
10301
- const price = chunkDX5Y2NO5_cjs.addonCharge(kind, addons, isAnnual, addons.period_end ?? project.current_period_end);
10302
- const nextCharge = chunkDX5Y2NO5_cjs.formatPeriodEnd(addons.period_end ?? project.current_period_end);
10303
- const now = quote.data ? chunkDX5Y2NO5_cjs.quoteParts(quote.data.now) : null;
10304
- const renewal = quote.data ? chunkDX5Y2NO5_cjs.quoteParts(quote.data.renewal) : null;
10305
- const today = now ? { total: chunkDX5Y2NO5_cjs.money2(now.total), detail: chunkDX5Y2NO5_cjs.taxDetail(now) } : { total: price.now, detail: `incl. VAT (${price.nowExVat} + ${price.nowVat} VAT)` };
10301
+ const price = chunkYNSSIULM_cjs.addonCharge(kind, addons, isAnnual, addons.period_end ?? project.current_period_end);
10302
+ const nextCharge = chunkYNSSIULM_cjs.formatPeriodEnd(addons.period_end ?? project.current_period_end);
10303
+ const now = quote.data ? chunkYNSSIULM_cjs.quoteParts(quote.data.now) : null;
10304
+ const renewal = quote.data ? chunkYNSSIULM_cjs.quoteParts(quote.data.renewal) : null;
10305
+ const today = now ? { total: chunkYNSSIULM_cjs.money2(now.total), detail: chunkYNSSIULM_cjs.taxDetail(now) } : { total: price.now, detail: `incl. VAT (${price.nowExVat} + ${price.nowVat} VAT)` };
10306
10306
  const pricing = quote.isLoading;
10307
10307
  const confirm = () => {
10308
10308
  const before = blocksOf(kind, project);
@@ -10341,8 +10341,8 @@ function AddAddonDialog({
10341
10341
  isAnnual ? "yearly" : "monthly",
10342
10342
  " \xB7 no refund"
10343
10343
  ] }),
10344
- /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.MoreInfo, { title: "Adding a top-up", testId: "add-addon-more-info", children: /* @__PURE__ */ jsxRuntime.jsx(
10345
- chunkUUN2WGGM_cjs.MoreInfoList,
10344
+ /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.MoreInfo, { title: "Adding a top-up", testId: "add-addon-more-info", children: /* @__PURE__ */ jsxRuntime.jsx(
10345
+ chunkXGFNZTPO_cjs.MoreInfoList,
10346
10346
  {
10347
10347
  items: [
10348
10348
  {
@@ -10357,7 +10357,7 @@ function AddAddonDialog({
10357
10357
  term: "Usage cap",
10358
10358
  text: "Adding by hand is never blocked by the usage cap; the cap limits automatic top-ups only."
10359
10359
  },
10360
- ...isAnnual && kind === "ai_usage" ? [{ term: "Annual", text: `${chunkDX5Y2NO5_cjs.ANNUAL_PREMIUM_AI_NOTE}.` }] : []
10360
+ ...isAnnual && kind === "ai_usage" ? [{ term: "Annual", text: `${chunkYNSSIULM_cjs.ANNUAL_PREMIUM_AI_NOTE}.` }] : []
10361
10361
  ]
10362
10362
  }
10363
10363
  ) })
@@ -10380,7 +10380,7 @@ function AddAddonDialog({
10380
10380
  )
10381
10381
  ] }) }),
10382
10382
  !pricing && /* @__PURE__ */ jsxRuntime.jsxs(Row, { label: "Next charge", children: [
10383
- renewal ? chunkDX5Y2NO5_cjs.totalWithTaxWord(renewal) : price.then.replace(/\/(month|year)/, ""),
10383
+ renewal ? chunkYNSSIULM_cjs.totalWithTaxWord(renewal) : price.then.replace(/\/(month|year)/, ""),
10384
10384
  nextCharge ? ` on ${nextCharge}` : " at renewal"
10385
10385
  ] })
10386
10386
  ] }) }),
@@ -10411,11 +10411,11 @@ function ReduceAddonDialog({
10411
10411
  const update = react$1.useUpdateProjectNextPeriodAddons();
10412
10412
  const addons = project.addons;
10413
10413
  if (!addons) return null;
10414
- const { min, next } = chunkDX5Y2NO5_cjs.reduceBounds(kind, addons);
10414
+ const { min, next } = chunkYNSSIULM_cjs.reduceBounds(kind, addons);
10415
10415
  const keep = Math.max(min, next - 1);
10416
- const size = chunkDX5Y2NO5_cjs.nextRemovedBlockSize(kind, addons);
10417
- const what = chunkDX5Y2NO5_cjs.stepLabel(kind, size);
10418
- const from = chunkDX5Y2NO5_cjs.formatPeriodEnd(addons.period_end ?? project.current_period_end) ?? "your next renewal";
10416
+ const size = chunkYNSSIULM_cjs.nextRemovedBlockSize(kind, addons);
10417
+ const what = chunkYNSSIULM_cjs.stepLabel(kind, size);
10418
+ const from = chunkYNSSIULM_cjs.formatPeriodEnd(addons.period_end ?? project.current_period_end) ?? "your next renewal";
10419
10419
  const fromShort = from.replace(/ \d{4}$/, "");
10420
10420
  const allowanceNext = kind === "ai_usage" ? addons.ai_allowance_next_gbp - size : addons.storage_allowance_next_gb - size;
10421
10421
  const allowanceNow = kind === "ai_usage" ? addons.ai_allowance_gbp : addons.storage_allowance_gb;
@@ -10423,7 +10423,7 @@ function ReduceAddonDialog({
10423
10423
  const save = () => update.mutate(
10424
10424
  {
10425
10425
  projectExtId: project.external_id,
10426
- body: chunkDX5Y2NO5_cjs.nextPeriodBody(kind, keep)
10426
+ body: chunkYNSSIULM_cjs.nextPeriodBody(kind, keep)
10427
10427
  },
10428
10428
  {
10429
10429
  onSuccess: () => {
@@ -10451,7 +10451,7 @@ function ReduceAddonDialog({
10451
10451
  fromShort,
10452
10452
  " \xB7 no refund"
10453
10453
  ] }),
10454
- /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.MoreInfo, { title: "Reducing a top-up", testId: "reduce-addon-more-info", children: [
10454
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.MoreInfo, { title: "Reducing a top-up", testId: "reduce-addon-more-info", children: [
10455
10455
  /* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
10456
10456
  "The reduction applies from your next renewal (",
10457
10457
  from,
@@ -10490,7 +10490,7 @@ function ReduceAddonDialog({
10490
10490
  }
10491
10491
  ) });
10492
10492
  }
10493
- var gbp = (pence) => chunkDX5Y2NO5_cjs.formatMoney(pence, "gbp");
10493
+ var gbp = (pence) => chunkYNSSIULM_cjs.formatMoney(pence, "gbp");
10494
10494
  var gb2 = (n) => `${Math.round(n * 10) / 10} GB`;
10495
10495
  var pct = (used, limit) => limit > 0 ? Math.min(100, used / limit * 100) : 0;
10496
10496
  function formatShortDate(unix) {
@@ -10502,20 +10502,20 @@ function AutoTopupThreshold({
10502
10502
  addons
10503
10503
  }) {
10504
10504
  const updateSettings = react$1.useUpdateProjectAddonSettings();
10505
- const min = addons.min_auto_topup_threshold_gbp || chunkDX5Y2NO5_cjs.MIN_AUTO_TOPUP_THRESHOLD_GBP;
10505
+ const min = addons.min_auto_topup_threshold_gbp || chunkYNSSIULM_cjs.MIN_AUTO_TOPUP_THRESHOLD_GBP;
10506
10506
  const saved = addons.auto_topup_threshold_gbp;
10507
10507
  const [value, setValue] = react.useState(String(saved));
10508
10508
  react.useEffect(() => setValue(String(saved)), [saved]);
10509
10509
  const parsed = Number(value);
10510
10510
  const valid = Number.isFinite(parsed) && parsed >= min;
10511
10511
  const dirty = valid && parsed !== saved;
10512
- const off = chunkDX5Y2NO5_cjs.isAddonBudgetZero(addons);
10512
+ const off = chunkYNSSIULM_cjs.isAddonBudgetZero(addons);
10513
10513
  const save = () => {
10514
10514
  if (!dirty) return;
10515
10515
  updateSettings.mutate(
10516
10516
  {
10517
10517
  projectExtId: project.external_id,
10518
- body: chunkDX5Y2NO5_cjs.addonSettingsBody(addons, { auto_topup_threshold_gbp: parsed })
10518
+ body: chunkYNSSIULM_cjs.addonSettingsBody(addons, { auto_topup_threshold_gbp: parsed })
10519
10519
  },
10520
10520
  {
10521
10521
  onSuccess: () => shell.notify.success(`Auto-add below ${react$1.formatGbp(parsed)} of AI usage left`),
@@ -10612,10 +10612,10 @@ function ResourceMeter({
10612
10612
  const update = react$1.useUpdateProjectNextPeriodAddons();
10613
10613
  const isAi = kind === "ai_usage";
10614
10614
  const slug = isAi ? "ai-usage" : "storage";
10615
- const periodEnd = chunkDX5Y2NO5_cjs.formatPeriodEnd(addons.period_end ?? project.current_period_end);
10615
+ const periodEnd = chunkYNSSIULM_cjs.formatPeriodEnd(addons.period_end ?? project.current_period_end);
10616
10616
  const from = periodEnd ?? "your next renewal";
10617
10617
  const fromShort = formatShortDate(addons.period_end ?? project.current_period_end) ?? "renewal";
10618
- const { min, current, next } = chunkDX5Y2NO5_cjs.reduceBounds(kind, addons);
10618
+ const { min, current, next } = chunkYNSSIULM_cjs.reduceBounds(kind, addons);
10619
10619
  const fmt = (n) => isAi ? react$1.formatGbp(n) : gb2(n);
10620
10620
  const used = isAi ? addons.ai_used_gbp : addons.storage_used_gb;
10621
10621
  const allowance = isAi ? addons.ai_allowance_gbp : addons.storage_allowance_gb;
@@ -10623,15 +10623,15 @@ function ResourceMeter({
10623
10623
  const plan = isAi ? addons.plan_ai_gbp : addons.plan_storage_gb;
10624
10624
  const topUps = Math.max(0, allowance - plan);
10625
10625
  const blocks = isAi ? addons.ai_blocks : addons.storage_blocks;
10626
- const hasLegacy = chunkDX5Y2NO5_cjs.splitBlocks(kind, blocks, addons).legacy > 0;
10627
- const room = chunkDX5Y2NO5_cjs.autoRoom(kind, addons);
10628
- const capZero = chunkDX5Y2NO5_cjs.isAddonBudgetZero(addons);
10629
- const resets = isAi ? formatShortDate(chunkDX5Y2NO5_cjs.aiUsageResetTimestamp(project)) : null;
10630
- const removeSize = chunkDX5Y2NO5_cjs.nextRemovedBlockSize(kind, addons);
10626
+ const hasLegacy = chunkYNSSIULM_cjs.splitBlocks(kind, blocks, addons).legacy > 0;
10627
+ const room = chunkYNSSIULM_cjs.autoRoom(kind, addons);
10628
+ const capZero = chunkYNSSIULM_cjs.isAddonBudgetZero(addons);
10629
+ const resets = isAi ? formatShortDate(chunkYNSSIULM_cjs.aiUsageResetTimestamp(project)) : null;
10630
+ const removeSize = chunkYNSSIULM_cjs.nextRemovedBlockSize(kind, addons);
10631
10631
  const undo = () => update.mutate(
10632
10632
  {
10633
10633
  projectExtId: project.external_id,
10634
- body: chunkDX5Y2NO5_cjs.nextPeriodBody(kind, current)
10634
+ body: chunkYNSSIULM_cjs.nextPeriodBody(kind, current)
10635
10635
  },
10636
10636
  {
10637
10637
  onSuccess: () => shell.notify.success("Kept"),
@@ -10648,7 +10648,7 @@ function ResourceMeter({
10648
10648
  allowance: { used, plan, topUps, autoRoom: capZero ? 0 : room },
10649
10649
  legend: {
10650
10650
  plan: `Plan ${fmt(plan)}`,
10651
- topUps: topUps > 0 ? `Top-ups ${fmt(topUps)}${hasLegacy ? ` (${chunkDX5Y2NO5_cjs.blocksLabel(kind, blocks, addons)})` : ""}` : void 0,
10651
+ topUps: topUps > 0 ? `Top-ups ${fmt(topUps)}${hasLegacy ? ` (${chunkYNSSIULM_cjs.blocksLabel(kind, blocks, addons)})` : ""}` : void 0,
10652
10652
  autoRoom: room != null && room > 0 && !capZero ? `Automatic up to ${fmt(room)}` : void 0
10653
10653
  },
10654
10654
  testId: `usage-meter-${slug}`,
@@ -10677,9 +10677,9 @@ function ResourceMeter({
10677
10677
  {
10678
10678
  icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "size-3.5" }),
10679
10679
  label: isAi ? react$1.formatGbp(addons.block_ai_gbp) : `${addons.block_storage_gb} GB`,
10680
- caption: chunkDX5Y2NO5_cjs.addStepCaption(kind, addons),
10680
+ caption: chunkYNSSIULM_cjs.addStepCaption(kind, addons),
10681
10681
  onClick: onAdd,
10682
- ariaLabel: `Add ${chunkDX5Y2NO5_cjs.stepLabel(kind, isAi ? addons.block_ai_gbp : addons.block_storage_gb)}`,
10682
+ ariaLabel: `Add ${chunkYNSSIULM_cjs.stepLabel(kind, isAi ? addons.block_ai_gbp : addons.block_storage_gb)}`,
10683
10683
  testId: isAi ? "add-ai-block-button" : "add-storage-block-button"
10684
10684
  }
10685
10685
  ),
@@ -10690,7 +10690,7 @@ function ResourceMeter({
10690
10690
  label: isAi ? react$1.formatGbp(removeSize) : `${removeSize} GB`,
10691
10691
  caption: `from ${fromShort}`,
10692
10692
  onClick: onReduce,
10693
- ariaLabel: `Remove ${chunkDX5Y2NO5_cjs.stepLabel(kind, removeSize)} from ${from}`,
10693
+ ariaLabel: `Remove ${chunkYNSSIULM_cjs.stepLabel(kind, removeSize)} from ${from}`,
10694
10694
  testId: `reduce-${slug}-button`
10695
10695
  }
10696
10696
  )
@@ -10729,10 +10729,10 @@ function UsageCapEditor({ project, addons }) {
10729
10729
  updateSettings.mutate(
10730
10730
  {
10731
10731
  projectExtId: project.external_id,
10732
- body: chunkDX5Y2NO5_cjs.addonSettingsBody(addons, { spend_cap_pence: nextCap })
10732
+ body: chunkYNSSIULM_cjs.addonSettingsBody(addons, { spend_cap_pence: nextCap })
10733
10733
  },
10734
10734
  {
10735
- onSuccess: () => shell.notify.success(chunkDX5Y2NO5_cjs.budgetSavedMessage(nextCap)),
10735
+ onSuccess: () => shell.notify.success(chunkYNSSIULM_cjs.budgetSavedMessage(nextCap)),
10736
10736
  onError: (error) => shell.notify.error(addonErrorMessage(error))
10737
10737
  }
10738
10738
  );
@@ -10743,14 +10743,14 @@ function UsageCapEditor({ project, addons }) {
10743
10743
  /* @__PURE__ */ jsxRuntime.jsx(
10744
10744
  chunkQZTNTP75_cjs.UsageMeter,
10745
10745
  {
10746
- label: chunkDX5Y2NO5_cjs.USAGE_CAP_LABEL,
10746
+ label: chunkYNSSIULM_cjs.USAGE_CAP_LABEL,
10747
10747
  hint: spendResets && savedCap !== 0 ? `resets ${spendResets}` : void 0,
10748
10748
  value: readout,
10749
10749
  pct: savedCap != null && savedCap > 0 ? pct(spent, savedCap) : 0,
10750
10750
  testId: "addon-spend"
10751
10751
  }
10752
10752
  ),
10753
- addons.cap_reached && savedCap != null && savedCap > 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", "data-testid": "addon-cap-reached", children: chunkDX5Y2NO5_cjs.CAP_REACHED_MESSAGE }),
10753
+ addons.cap_reached && savedCap != null && savedCap > 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", "data-testid": "addon-cap-reached", children: chunkYNSSIULM_cjs.CAP_REACHED_MESSAGE }),
10754
10754
  addons.manual_spent_pence > 0 && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground", "data-testid": "addon-manual-spend", children: [
10755
10755
  "Added by hand this month: ",
10756
10756
  gbp(addons.manual_spent_pence),
@@ -10771,7 +10771,7 @@ function UsageCapEditor({ project, addons }) {
10771
10771
  step: 25,
10772
10772
  className: "h-9 w-28",
10773
10773
  value: noCap ? "" : value,
10774
- placeholder: noCap ? "No limit" : String(chunkDX5Y2NO5_cjs.DEFAULT_SPEND_CAP_PENCE / 100),
10774
+ placeholder: noCap ? "No limit" : String(chunkYNSSIULM_cjs.DEFAULT_SPEND_CAP_PENCE / 100),
10775
10775
  disabled: noCap,
10776
10776
  onChange: (e) => setValue(e.target.value),
10777
10777
  onKeyDown: (e) => e.key === "Enter" && save(),
@@ -10797,7 +10797,7 @@ function UsageCapEditor({ project, addons }) {
10797
10797
  checked: noCap,
10798
10798
  onCheckedChange: (checked) => {
10799
10799
  setNoCap(checked);
10800
- if (!checked && value === "") setValue(String(chunkDX5Y2NO5_cjs.DEFAULT_SPEND_CAP_PENCE / 100));
10800
+ if (!checked && value === "") setValue(String(chunkYNSSIULM_cjs.DEFAULT_SPEND_CAP_PENCE / 100));
10801
10801
  },
10802
10802
  "data-testid": "no-cap-switch"
10803
10803
  }
@@ -10810,8 +10810,8 @@ function UsageCapEditor({ project, addons }) {
10810
10810
  function UsageInfo({ addons, isAnnual }) {
10811
10811
  const period = isAnnual ? "year" : "month";
10812
10812
  const legacy = (addons.legacy_ai_blocks ?? 0) > 0 || (addons.legacy_storage_blocks ?? 0) > 0;
10813
- return /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.MoreInfo, { title: "Usage and top-ups", testId: "usage-more-info", children: /* @__PURE__ */ jsxRuntime.jsx(
10814
- chunkUUN2WGGM_cjs.MoreInfoList,
10813
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.MoreInfo, { title: "Usage and top-ups", testId: "usage-more-info", children: /* @__PURE__ */ jsxRuntime.jsx(
10814
+ chunkXGFNZTPO_cjs.MoreInfoList,
10815
10815
  {
10816
10816
  items: [
10817
10817
  {
@@ -10826,7 +10826,7 @@ function UsageInfo({ addons, isAnnual }) {
10826
10826
  term: "Automatic top-ups",
10827
10827
  text: "One step is added when AI usage drops below your auto top-up level, or when an upload needs more storage."
10828
10828
  },
10829
- { term: "Usage cap", text: chunkDX5Y2NO5_cjs.USAGE_CAP_HELP },
10829
+ { term: "Usage cap", text: chunkYNSSIULM_cjs.USAGE_CAP_HELP },
10830
10830
  {
10831
10831
  term: "Reducing",
10832
10832
  text: "\u2212 removes one step from your next renewal. You keep this period's allowance. No refunds."
@@ -10837,7 +10837,7 @@ function UsageInfo({ addons, isAnnual }) {
10837
10837
  text: "Top-ups bought on an earlier price keep their size and price until removed; they are removed last."
10838
10838
  }
10839
10839
  ] : [],
10840
- ...isAnnual ? [{ term: "Annual", text: `${chunkDX5Y2NO5_cjs.ANNUAL_PREMIUM_AI_NOTE}.` }] : [],
10840
+ ...isAnnual ? [{ term: "Annual", text: `${chunkYNSSIULM_cjs.ANNUAL_PREMIUM_AI_NOTE}.` }] : [],
10841
10841
  {
10842
10842
  term: "Prices",
10843
10843
  text: "Shown ex VAT. The confirm step shows the total with VAT before you pay."
@@ -10929,7 +10929,7 @@ function formatShortDate2(unix) {
10929
10929
  if (!unix) return null;
10930
10930
  return new Date(unix * 1e3).toLocaleDateString("en-GB", { day: "numeric", month: "short" });
10931
10931
  }
10932
- var gbp2 = (pence) => chunkDX5Y2NO5_cjs.formatMoney(pence, "gbp");
10932
+ var gbp2 = (pence) => chunkYNSSIULM_cjs.formatMoney(pence, "gbp");
10933
10933
  var gbNum = (n) => `${Math.round(n * 10) / 10}`;
10934
10934
  var pct2 = (used, limit) => limit > 0 ? Math.min(100, used / limit * 100) : 0;
10935
10935
  function Meter({
@@ -10947,15 +10947,15 @@ function Meter({
10947
10947
  ] });
10948
10948
  }
10949
10949
  function usePlanPrice(project) {
10950
- const { data: products } = react$1.useProducts({ enabled: chunkDX5Y2NO5_cjs.isProProject(project) });
10951
- if (!chunkDX5Y2NO5_cjs.isProProject(project)) return null;
10950
+ const { data: products } = react$1.useProducts({ enabled: chunkYNSSIULM_cjs.isProProject(project) });
10951
+ if (!chunkYNSSIULM_cjs.isProProject(project)) return null;
10952
10952
  const isAnnual = project.plan_interval === "year";
10953
10953
  if (project.amount != null) {
10954
10954
  return { incl: project.amount, ex: project.amount_ex_vat ?? null, isAnnual };
10955
10955
  }
10956
- if ((project.packs ?? chunkDX5Y2NO5_cjs.PRO_PACKS) > chunkDX5Y2NO5_cjs.PRO_PACKS) return null;
10957
- const prices = chunkDX5Y2NO5_cjs.findProPrices(products);
10958
- const pp = chunkDX5Y2NO5_cjs.packPrice(isAnnual ? prices.annual : prices.monthly);
10956
+ if ((project.packs ?? chunkYNSSIULM_cjs.PRO_PACKS) > chunkYNSSIULM_cjs.PRO_PACKS) return null;
10957
+ const prices = chunkYNSSIULM_cjs.findProPrices(products);
10958
+ const pp = chunkYNSSIULM_cjs.packPrice(isAnnual ? prices.annual : prices.monthly);
10959
10959
  return pp ? { incl: pp.amount, ex: pp.amount_ex_vat, isAnnual } : null;
10960
10960
  }
10961
10961
  function paidLine(payment, addons) {
@@ -10968,11 +10968,11 @@ function ProjectPlanCard({
10968
10968
  onChangePlan
10969
10969
  }) {
10970
10970
  const { quotas, addons } = project;
10971
- const isPro = chunkDX5Y2NO5_cjs.isProProject(project);
10971
+ const isPro = chunkYNSSIULM_cjs.isProProject(project);
10972
10972
  const used = quotas?.ai_usage?.used ?? 0;
10973
10973
  const limit = quotas?.ai_usage?.limit ?? 0;
10974
- const resetDate = formatShortDate2(chunkDX5Y2NO5_cjs.aiUsageResetTimestamp(project));
10975
- const periodEnd = chunkDX5Y2NO5_cjs.formatPeriodEnd(addons?.period_end ?? project.current_period_end);
10974
+ const resetDate = formatShortDate2(chunkYNSSIULM_cjs.aiUsageResetTimestamp(project));
10975
+ const periodEnd = chunkYNSSIULM_cjs.formatPeriodEnd(addons?.period_end ?? project.current_period_end);
10976
10976
  const when2 = periodEnd ?? "the end of the period";
10977
10977
  const storageUsed = quotas?.storage_gb?.used ?? 0;
10978
10978
  const storageLimit = quotas?.storage_gb?.limit ?? 0;
@@ -10988,7 +10988,7 @@ function ProjectPlanCard({
10988
10988
  project.external_id,
10989
10989
  hasScheduledChange && addons ? { packs: packsNext ?? addons.packs, interval: pending ?? currentInterval } : null
10990
10990
  ).data;
10991
- const tier = isPro ? chunkDX5Y2NO5_cjs.proTierName(project) : project.subscription === "dev" ? "Dev" : "Free";
10991
+ const tier = isPro ? chunkYNSSIULM_cjs.proTierName(project) : project.subscription === "dev" ? "Dev" : "Free";
10992
10992
  const pendingPayment = addons?.payment?.status === "pending" ? addons.payment : null;
10993
10993
  const confirmUrl = pendingPayment?.confirm_url ?? addons?.confirm_url;
10994
10994
  const paidPayment = addons?.payment?.status === "paid" ? addons.payment : null;
@@ -11022,7 +11022,7 @@ function ProjectPlanCard({
11022
11022
  isPro && " ",
11023
11023
  isPro && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 text-sm font-normal text-muted-foreground", children: currentInterval === "year" ? "Annual" : "Monthly" })
11024
11024
  ] }),
11025
- isPro && periodEnd && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", "data-testid": "project-plan-renews", children: isCanceling ? `Ends ${periodEnd}` : hasScheduledChange && nextBill ? `Next bill ${chunkDX5Y2NO5_cjs.totalWithTaxWord({
11025
+ isPro && periodEnd && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-muted-foreground", "data-testid": "project-plan-renews", children: isCanceling ? `Ends ${periodEnd}` : hasScheduledChange && nextBill ? `Next bill ${chunkYNSSIULM_cjs.totalWithTaxWord({
11026
11026
  subtotal: nextBill.next_renewal_ex_vat_pence,
11027
11027
  tax: nextBill.next_renewal_tax_pence,
11028
11028
  total: nextBill.next_renewal_pence,
@@ -11031,7 +11031,7 @@ function ProjectPlanCard({
11031
11031
  ] }),
11032
11032
  price && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-auto text-right", "data-testid": "project-plan-price", children: [
11033
11033
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-lg font-semibold tabular-nums text-foreground", children: [
11034
- price.ex != null ? chunkDX5Y2NO5_cjs.plusVat(price.ex) : gbp2(price.incl),
11034
+ price.ex != null ? chunkYNSSIULM_cjs.plusVat(price.ex) : gbp2(price.incl),
11035
11035
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-normal text-muted-foreground", children: price.isAnnual ? "/year" : "/month" })
11036
11036
  ] }),
11037
11037
  price.ex != null && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-xs text-muted-foreground", children: [
@@ -11069,7 +11069,7 @@ function ProjectPlanCard({
11069
11069
  undoTestId: "undo-plan-change-button",
11070
11070
  children: [
11071
11071
  "Changes to ",
11072
- chunkDX5Y2NO5_cjs.planNameForPacks(packsNext),
11072
+ chunkYNSSIULM_cjs.planNameForPacks(packsNext),
11073
11073
  " on ",
11074
11074
  when2,
11075
11075
  "."
@@ -11114,8 +11114,8 @@ function ProjectPlanCard({
11114
11114
  }
11115
11115
  )
11116
11116
  ] }),
11117
- addons?.billing_error && /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PlanNotice, { tone: "error", testId: "plan-billing-error", children: addons.billing_error }),
11118
- confirmUrl ? /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.PlanNotice, { testId: "plan-payment-state", children: [
11117
+ addons?.billing_error && /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PlanNotice, { tone: "error", testId: "plan-billing-error", children: addons.billing_error }),
11118
+ confirmUrl ? /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.PlanNotice, { testId: "plan-payment-state", children: [
11119
11119
  "Waiting for your bank",
11120
11120
  pendingPayment?.amount_pence ? ` \xB7 ${gbp2(pendingPayment.amount_pence)}` : "",
11121
11121
  " \xB7",
@@ -11133,7 +11133,7 @@ function ProjectPlanCard({
11133
11133
  ]
11134
11134
  }
11135
11135
  )
11136
- ] }) : paidPayment && addons && /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PlanNotice, { testId: "plan-payment-state", children: paidLine(paidPayment, addons) }),
11136
+ ] }) : paidPayment && addons && /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PlanNotice, { testId: "plan-payment-state", children: paidLine(paidPayment, addons) }),
11137
11137
  isPro && /* @__PURE__ */ jsxRuntime.jsxs(
11138
11138
  "button",
11139
11139
  {
@@ -11160,7 +11160,7 @@ function ProjectBilling({
11160
11160
  const { addons } = project;
11161
11161
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", "data-testid": "project-billing", children: [
11162
11162
  /* @__PURE__ */ jsxRuntime.jsx(ProjectPlanCard, { project, onChangePlan }),
11163
- addons && chunkDX5Y2NO5_cjs.isProProject(project) && /* @__PURE__ */ jsxRuntime.jsx(ProjectUsageCard, { project, addons })
11163
+ addons && chunkYNSSIULM_cjs.isProProject(project) && /* @__PURE__ */ jsxRuntime.jsx(ProjectUsageCard, { project, addons })
11164
11164
  ] });
11165
11165
  }
11166
11166
  var BREAKDOWN_LABELS = {
@@ -11291,13 +11291,13 @@ function ProjectUsageContent({
11291
11291
  };
11292
11292
  const quotaPct = effectiveUsage && aiUsageLimit ? Math.round(effectiveUsage.total_spend / aiUsageLimit * 100) : 0;
11293
11293
  return /* @__PURE__ */ jsxRuntime.jsx(
11294
- chunkUUN2WGGM_cjs.UsagePanel,
11294
+ chunkXGFNZTPO_cjs.UsagePanel,
11295
11295
  {
11296
11296
  state,
11297
11297
  dateRange,
11298
11298
  emptyMessage: `No usage ${period === "current" ? "yet this month" : "last month"}.`,
11299
11299
  period: /* @__PURE__ */ jsxRuntime.jsx(
11300
- chunkUUN2WGGM_cjs.UsageToggle,
11300
+ chunkXGFNZTPO_cjs.UsageToggle,
11301
11301
  {
11302
11302
  ariaLabel: "Period",
11303
11303
  value: period,
@@ -11310,7 +11310,7 @@ function ProjectUsageContent({
11310
11310
  ),
11311
11311
  actions: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
11312
11312
  effectiveUsage?.invoice_pdf && /* @__PURE__ */ jsxRuntime.jsx(
11313
- chunkUUN2WGGM_cjs.UsageActionButton,
11313
+ chunkXGFNZTPO_cjs.UsageActionButton,
11314
11314
  {
11315
11315
  label: "Download Stripe invoice PDF",
11316
11316
  icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Download, { className: "size-3.5" }),
@@ -11318,7 +11318,7 @@ function ProjectUsageContent({
11318
11318
  }
11319
11319
  ),
11320
11320
  /* @__PURE__ */ jsxRuntime.jsx(
11321
- chunkUUN2WGGM_cjs.UsageActionButton,
11321
+ chunkXGFNZTPO_cjs.UsageActionButton,
11322
11322
  {
11323
11323
  label: "Print usage summary",
11324
11324
  icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Printer, { className: "size-3.5" }),
@@ -11328,7 +11328,7 @@ function ProjectUsageContent({
11328
11328
  ] }),
11329
11329
  children: effectiveUsage && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
11330
11330
  /* @__PURE__ */ jsxRuntime.jsx(
11331
- chunkUUN2WGGM_cjs.UsageSummary,
11331
+ chunkXGFNZTPO_cjs.UsageSummary,
11332
11332
  {
11333
11333
  stats: [
11334
11334
  {
@@ -11336,7 +11336,7 @@ function ProjectUsageContent({
11336
11336
  value: /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: react$1.formatGbp(effectiveUsage.total_spend) }),
11337
11337
  label: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
11338
11338
  "AI usage",
11339
- quotaPct > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.UsageQuotaHint, { children: [
11339
+ quotaPct > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.UsageQuotaHint, { children: [
11340
11340
  "(",
11341
11341
  quotaPct,
11342
11342
  "% of quota)"
@@ -11357,7 +11357,7 @@ function ProjectUsageContent({
11357
11357
  }
11358
11358
  ),
11359
11359
  /* @__PURE__ */ jsxRuntime.jsx(
11360
- chunkUUN2WGGM_cjs.UsageToggle,
11360
+ chunkXGFNZTPO_cjs.UsageToggle,
11361
11361
  {
11362
11362
  ariaLabel: "Breakdown by",
11363
11363
  size: "fill",
@@ -11370,12 +11370,12 @@ function ProjectUsageContent({
11370
11370
  }
11371
11371
  ),
11372
11372
  /* @__PURE__ */ jsxRuntime.jsx(
11373
- chunkUUN2WGGM_cjs.UsageSection,
11373
+ chunkXGFNZTPO_cjs.UsageSection,
11374
11374
  {
11375
- footer: /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.UsageLegend, { series }),
11375
+ footer: /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.UsageLegend, { series }),
11376
11376
  title: `Daily AI usage${breakdown === "model" ? ` by ${BREAKDOWN_LABELS[breakdown]}` : ""}`,
11377
11377
  children: /* @__PURE__ */ jsxRuntime.jsx(
11378
- chunkUUN2WGGM_cjs.UsageLineChart,
11378
+ chunkXGFNZTPO_cjs.UsageLineChart,
11379
11379
  {
11380
11380
  dates,
11381
11381
  series,
@@ -11386,12 +11386,12 @@ function ProjectUsageContent({
11386
11386
  }
11387
11387
  ),
11388
11388
  /* @__PURE__ */ jsxRuntime.jsx(
11389
- chunkUUN2WGGM_cjs.UsageSection,
11389
+ chunkXGFNZTPO_cjs.UsageSection,
11390
11390
  {
11391
11391
  title: "Breakdown",
11392
11392
  gap: "md",
11393
11393
  action: /* @__PURE__ */ jsxRuntime.jsx(
11394
- chunkUUN2WGGM_cjs.UsageToggle,
11394
+ chunkXGFNZTPO_cjs.UsageToggle,
11395
11395
  {
11396
11396
  ariaLabel: "Breakdown metric",
11397
11397
  value: metric,
@@ -11403,7 +11403,7 @@ function ProjectUsageContent({
11403
11403
  }
11404
11404
  ),
11405
11405
  children: /* @__PURE__ */ jsxRuntime.jsx(
11406
- chunkUUN2WGGM_cjs.UsageProportionBar,
11406
+ chunkXGFNZTPO_cjs.UsageProportionBar,
11407
11407
  {
11408
11408
  metric,
11409
11409
  items: breakdownItems.map((item) => ({
@@ -11421,13 +11421,13 @@ function ProjectUsageContent({
11421
11421
  );
11422
11422
  }
11423
11423
  function ProjectDetail({ projectExtId, storage }) {
11424
- const { stripeEnabled } = chunkDX5Y2NO5_cjs.useBillingSupport();
11424
+ const { stripeEnabled } = chunkYNSSIULM_cjs.useBillingSupport();
11425
11425
  const [planOpen, setPlanOpen] = react.useState(false);
11426
11426
  const [renameOpen, setRenameOpen] = react.useState(false);
11427
11427
  const [renameValue, setRenameValue] = react.useState("");
11428
11428
  const updateProject = react$1.useUpdateProjectFields();
11429
11429
  const { data: projects, isLoading } = react$1.useProjects();
11430
- const currentUserExtId = chunkDX5Y2NO5_cjs.useSelfExtId();
11430
+ const currentUserExtId = chunkYNSSIULM_cjs.useSelfExtId();
11431
11431
  const project = projects?.find((p) => p.external_id === projectExtId);
11432
11432
  const handleSaveRename = react.useCallback(() => {
11433
11433
  const trimmed = renameValue.trim();
@@ -11461,7 +11461,7 @@ function ProjectDetail({ projectExtId, storage }) {
11461
11461
  }
11462
11462
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-6 space-y-6 max-w-4xl", "data-testid": `project-detail-${project.external_id}`, children: [
11463
11463
  /* @__PURE__ */ jsxRuntime.jsx(
11464
- chunkUUN2WGGM_cjs.ProjectDetailHeader,
11464
+ chunkXGFNZTPO_cjs.ProjectDetailHeader,
11465
11465
  {
11466
11466
  icon: /* @__PURE__ */ jsxRuntime.jsx(ui.EntityIcon, { entityType: "PROJECT" }),
11467
11467
  name: project.name,
@@ -11469,11 +11469,11 @@ function ProjectDetail({ projectExtId, storage }) {
11469
11469
  setRenameValue(project.name);
11470
11470
  setRenameOpen(true);
11471
11471
  },
11472
- badge: stripeEnabled ? /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PlanBadge, { ...chunkDX5Y2NO5_cjs.planBadgeView(project), size: "md" }) : void 0
11472
+ badge: stripeEnabled ? /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PlanBadge, { ...chunkYNSSIULM_cjs.planBadgeView(project), size: "md" }) : void 0
11473
11473
  }
11474
11474
  ),
11475
11475
  hasBilling && /* @__PURE__ */ jsxRuntime.jsx(ProjectBilling, { project, onChangePlan: () => setPlanOpen(true) }),
11476
- /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.ProjectDetailSection, { title: hasBilling ? "Collaborator limits" : "Plan limits", children: [
11476
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.ProjectDetailSection, { title: hasBilling ? "Collaborator limits" : "Plan limits", children: [
11477
11477
  !hasBilling && /* @__PURE__ */ jsxRuntime.jsx(SubscriptionStatus, { project }),
11478
11478
  /* @__PURE__ */ jsxRuntime.jsxs(
11479
11479
  "div",
@@ -11489,7 +11489,7 @@ function ProjectDetail({ projectExtId, storage }) {
11489
11489
  }
11490
11490
  )
11491
11491
  ] }),
11492
- /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.ProjectDetailSection, { title: "Usage", children: /* @__PURE__ */ jsxRuntime.jsx(
11492
+ /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.ProjectDetailSection, { title: "Usage", children: /* @__PURE__ */ jsxRuntime.jsx(
11493
11493
  ProjectUsageContent,
11494
11494
  {
11495
11495
  projectExtId: project.external_id,
@@ -11499,7 +11499,7 @@ function ProjectDetail({ projectExtId, storage }) {
11499
11499
  ) }),
11500
11500
  storage,
11501
11501
  /* @__PURE__ */ jsxRuntime.jsx(
11502
- chunkUUN2WGGM_cjs.RenameDialog,
11502
+ chunkXGFNZTPO_cjs.RenameDialog,
11503
11503
  {
11504
11504
  open: renameOpen,
11505
11505
  onClose: () => setRenameOpen(false),
@@ -11514,7 +11514,7 @@ function ProjectDetail({ projectExtId, storage }) {
11514
11514
  ] });
11515
11515
  }
11516
11516
  function createProjectErrorMessage(error, fallback = "Failed to create project") {
11517
- const detail = chunkDX5Y2NO5_cjs.apiErrorDetail(error);
11517
+ const detail = chunkYNSSIULM_cjs.apiErrorDetail(error);
11518
11518
  if (typeof detail === "string" && detail) return detail;
11519
11519
  const message = detail?.message;
11520
11520
  return typeof message === "string" && message ? message : fallback;
@@ -11524,7 +11524,7 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
11524
11524
  const [plan, setPlan] = react.useState("pro");
11525
11525
  const [isAnnual, setIsAnnual] = react.useState(false);
11526
11526
  const [promoCode, setPromoCode] = react.useState("");
11527
- const [addonBudget, setAddonBudget] = react.useState(String(chunkDX5Y2NO5_cjs.DEFAULT_SPEND_CAP_PENCE / 100));
11527
+ const [addonBudget, setAddonBudget] = react.useState(String(chunkYNSSIULM_cjs.DEFAULT_SPEND_CAP_PENCE / 100));
11528
11528
  const [checkoutBudget, setCheckoutBudget] = react.useState(null);
11529
11529
  const [aiBlocks, setAiBlocks] = react.useState(0);
11530
11530
  const [storageBlocks, setStorageBlocks] = react.useState(0);
@@ -11538,7 +11538,7 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
11538
11538
  const [checkoutProjectName, setCheckoutProjectName] = react.useState("");
11539
11539
  const [checkoutInterval, setCheckoutInterval] = react.useState("month");
11540
11540
  const paymentCompletedRef = react.useRef(false);
11541
- const { stripeEnabled } = chunkDX5Y2NO5_cjs.useBillingSupport();
11541
+ const { stripeEnabled } = chunkYNSSIULM_cjs.useBillingSupport();
11542
11542
  const { data: products, isLoading: productsLoading } = react$1.useProducts({
11543
11543
  enabled: stripeEnabled
11544
11544
  });
@@ -11567,18 +11567,18 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
11567
11567
  setPlan("pro");
11568
11568
  setPromoCode("");
11569
11569
  setPostalCode("");
11570
- setAddonBudget(String(chunkDX5Y2NO5_cjs.DEFAULT_SPEND_CAP_PENCE / 100));
11570
+ setAddonBudget(String(chunkYNSSIULM_cjs.DEFAULT_SPEND_CAP_PENCE / 100));
11571
11571
  setAiBlocks(0);
11572
11572
  setStorageBlocks(0);
11573
11573
  setIsCreating(false);
11574
11574
  }
11575
11575
  onOpenChange(newOpen);
11576
11576
  };
11577
- const prices = chunkDX5Y2NO5_cjs.findProPrices(products);
11577
+ const prices = chunkYNSSIULM_cjs.findProPrices(products);
11578
11578
  const intervalPrice = isAnnual ? prices.annual : prices.monthly;
11579
- const selectedPrice = chunkDX5Y2NO5_cjs.packPrice(intervalPrice);
11579
+ const selectedPrice = chunkYNSSIULM_cjs.packPrice(intervalPrice);
11580
11580
  const currency = intervalPrice?.currency ?? "gbp";
11581
- const savingsPercent = chunkDX5Y2NO5_cjs.calcSavingsPercent(prices.monthly, prices.annual);
11581
+ const savingsPercent = chunkYNSSIULM_cjs.calcSavingsPercent(prices.monthly, prices.annual);
11582
11582
  const isPro = stripeEnabled && plan !== "free";
11583
11583
  const quote = useCheckoutQuote({
11584
11584
  interval: isAnnual ? "year" : "month",
@@ -11588,14 +11588,14 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
11588
11588
  storageBlocks,
11589
11589
  enabled: open && isPro && !!selectedPrice
11590
11590
  });
11591
- const canSubmit = !!projectName.trim() && !isCreating && !createProject.isPending && (!isPro || !!selectedPrice && chunkDX5Y2NO5_cjs.parseBudgetPounds(addonBudget) !== void 0 && quote.canContinue);
11591
+ const canSubmit = !!projectName.trim() && !isCreating && !createProject.isPending && (!isPro || !!selectedPrice && chunkYNSSIULM_cjs.parseBudgetPounds(addonBudget) !== void 0 && quote.canContinue);
11592
11592
  const handleCreateFree = () => {
11593
11593
  setIsCreating(true);
11594
11594
  createProject.mutate(
11595
11595
  {
11596
11596
  name: projectName.trim(),
11597
11597
  plan: "free",
11598
- daily_cap_per_user: chunkDX5Y2NO5_cjs.SUGGESTED_DAILY_CAP_PER_USER
11598
+ daily_cap_per_user: chunkYNSSIULM_cjs.SUGGESTED_DAILY_CAP_PER_USER
11599
11599
  },
11600
11600
  {
11601
11601
  onSuccess: () => {
@@ -11612,14 +11612,14 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
11612
11612
  };
11613
11613
  const handleSubscribe = () => {
11614
11614
  const interval = isAnnual ? "year" : "month";
11615
- const parsed = chunkDX5Y2NO5_cjs.parseBudgetPounds(addonBudget);
11616
- const budgetToSend = parsed == null || parsed === chunkDX5Y2NO5_cjs.DEFAULT_SPEND_CAP_PENCE ? null : parsed;
11615
+ const parsed = chunkYNSSIULM_cjs.parseBudgetPounds(addonBudget);
11616
+ const budgetToSend = parsed == null || parsed === chunkYNSSIULM_cjs.DEFAULT_SPEND_CAP_PENCE ? null : parsed;
11617
11617
  setIsCreating(true);
11618
11618
  createProject.mutate(
11619
11619
  {
11620
11620
  name: projectName.trim(),
11621
11621
  plan: "pro",
11622
- daily_cap_per_user: chunkDX5Y2NO5_cjs.SUGGESTED_DAILY_CAP_PER_USER
11622
+ daily_cap_per_user: chunkYNSSIULM_cjs.SUGGESTED_DAILY_CAP_PER_USER
11623
11623
  },
11624
11624
  {
11625
11625
  onSuccess: (newProject) => {
@@ -11660,8 +11660,8 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
11660
11660
  description: stripeEnabled ? "Name it and pick a plan." : "Projects group your workspaces.",
11661
11661
  showDescription: true,
11662
11662
  size: "xl",
11663
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.PlanStack, { gap: 5, children: [
11664
- /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.PlanStack, { gap: 2, children: [
11663
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.PlanStack, { gap: 5, children: [
11664
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.PlanStack, { gap: 2, children: [
11665
11665
  /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "new-project-name", children: "Name" }),
11666
11666
  /* @__PURE__ */ jsxRuntime.jsx(
11667
11667
  ui.Input,
@@ -11677,16 +11677,16 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
11677
11677
  }
11678
11678
  )
11679
11679
  ] }),
11680
- stripeEnabled && (productsLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PlanNotice, { children: "Loading plans\u2026" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
11681
- /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.PlanPickerCard, { children: [
11680
+ stripeEnabled && (productsLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PlanNotice, { children: "Loading plans\u2026" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
11681
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.PlanPickerCard, { children: [
11682
11682
  /* @__PURE__ */ jsxRuntime.jsx(
11683
- chunkUUN2WGGM_cjs.PlanPickerHeader,
11683
+ chunkXGFNZTPO_cjs.PlanPickerHeader,
11684
11684
  {
11685
11685
  title: "Plan",
11686
11686
  info: /* @__PURE__ */ jsxRuntime.jsx(PlanInfoPopover2, {}),
11687
11687
  infoPlacement: "toggle",
11688
11688
  toggle: plan !== "free" ? /* @__PURE__ */ jsxRuntime.jsx(
11689
- chunkUUN2WGGM_cjs.PricingToggle,
11689
+ chunkXGFNZTPO_cjs.PricingToggle,
11690
11690
  {
11691
11691
  isAnnual,
11692
11692
  onToggle: () => setIsAnnual(!isAnnual),
@@ -11724,7 +11724,7 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
11724
11724
  currency
11725
11725
  }
11726
11726
  ),
11727
- /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PromoCodeInput, { value: promoCode, onChange: setPromoCode }),
11727
+ /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PromoCodeInput, { value: promoCode, onChange: setPromoCode }),
11728
11728
  /* @__PURE__ */ jsxRuntime.jsx(
11729
11729
  CheckoutCountrySelect,
11730
11730
  {
@@ -11743,10 +11743,10 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
11743
11743
  onPostalCodeChange: setPostalCode
11744
11744
  }
11745
11745
  )
11746
- ] }) : /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PlanNotice, { children: "Pro isn't available right now." }))
11746
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PlanNotice, { children: "Pro isn't available right now." }))
11747
11747
  ] })),
11748
- /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PlanActionButton, { onClick: submit, disabled: !canSubmit, children: isCreating ? "Creating\u2026" : isPro ? "Continue to payment" : "Create project" }),
11749
- isSlow && /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PlanNotice, { className: "text-xs", testId: "new-project-still-working", children: "Still working. We'll update here." })
11748
+ /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PlanActionButton, { onClick: submit, disabled: !canSubmit, children: isCreating ? "Creating\u2026" : isPro ? "Continue to payment" : "Create project" }),
11749
+ isSlow && /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PlanNotice, { className: "text-xs", testId: "new-project-still-working", children: "Still working. We'll update here." })
11750
11750
  ] })
11751
11751
  }
11752
11752
  ),
@@ -11774,7 +11774,7 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
11774
11774
  function useAutoRefreshPendingProjects() {
11775
11775
  const { data: projects } = react$1.useProjects();
11776
11776
  const refreshProject = react$1.useRefreshProject();
11777
- const currentUserExtId = chunkDX5Y2NO5_cjs.useSelfExtId();
11777
+ const currentUserExtId = chunkYNSSIULM_cjs.useSelfExtId();
11778
11778
  const refreshedRef = react.useRef(/* @__PURE__ */ new Set());
11779
11779
  react.useEffect(() => {
11780
11780
  if (!projects || !currentUserExtId) return;
@@ -11820,7 +11820,7 @@ function WorkspaceCardsView({
11820
11820
  createDisabledReason,
11821
11821
  workspaceState
11822
11822
  }) {
11823
- const { stripeEnabled } = chunkDX5Y2NO5_cjs.useBillingSupport();
11823
+ const { stripeEnabled } = chunkYNSSIULM_cjs.useBillingSupport();
11824
11824
  const workspaceLabel = ui.getEntityLabel("WORKSPACE");
11825
11825
  const projectLabel = ui.getEntityLabel("PROJECT").toLowerCase();
11826
11826
  const { groups, projects, selfId } = list;
@@ -11839,7 +11839,7 @@ function WorkspaceCardsView({
11839
11839
  }
11840
11840
  return /* @__PURE__ */ jsxRuntime.jsx(chunk3CUORKDL_cjs.WorkspaceList, { testId: "workspace-cards-list", children: groups.map((group) => {
11841
11841
  const project = projects.find((p) => p.external_id === group.projectExtId);
11842
- const { breakdown, readout } = chunkDX5Y2NO5_cjs.projectGroupBilling(project, {
11842
+ const { breakdown, readout } = chunkYNSSIULM_cjs.projectGroupBilling(project, {
11843
11843
  isOwned: group.isOwned,
11844
11844
  stripeEnabled
11845
11845
  });
@@ -11998,7 +11998,7 @@ function useConnectedWorkspaceList({
11998
11998
  [selfId, pinned]
11999
11999
  );
12000
12000
  const filtered = react.useMemo(
12001
- () => chunkUUN2WGGM_cjs.applyTriStateFilters(workspaces, filterMap, attributesOf),
12001
+ () => chunkXGFNZTPO_cjs.applyTriStateFilters(workspaces, filterMap, attributesOf),
12002
12002
  [workspaces, filterMap, attributesOf]
12003
12003
  );
12004
12004
  const groups = react.useMemo(
@@ -12063,7 +12063,7 @@ function useConnectedWorkspaceList({
12063
12063
  };
12064
12064
  }
12065
12065
  var WorkspaceTableView = react.lazy(
12066
- () => import('../WorkspaceTableView-G22XS4ZK.cjs').then((m) => ({ default: m.WorkspaceTableView }))
12066
+ () => import('../WorkspaceTableView-VEW6SMZ6.cjs').then((m) => ({ default: m.WorkspaceTableView }))
12067
12067
  );
12068
12068
  var WORKSPACES_TAB_ID = "workspaces";
12069
12069
  var defaultRenderMember2 = (user, size) => {
@@ -12115,7 +12115,7 @@ function ConnectedWorkspaceList({
12115
12115
  else void openWorkspace(workspace.external_id, { name: workspace.name });
12116
12116
  };
12117
12117
  const createDisabledReason = list.canCreateProjects === false ? react$1.PROJECT_CREATION_DENIED_REASON : void 0;
12118
- if (list.isLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunkG2Z2KARY_cjs.LoadingIndicator, { message: "Loading workspaces..." });
12118
+ if (list.isLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunkSYTZ3UAU_cjs.LoadingIndicator, { message: "Loading workspaces..." });
12119
12119
  if (list.error) {
12120
12120
  return /* @__PURE__ */ jsxRuntime.jsx(
12121
12121
  chunkOHCYJFV2_cjs.HomeLoadError,
@@ -12188,7 +12188,7 @@ function ConnectedWorkspaceList({
12188
12188
  workspaceState
12189
12189
  }
12190
12190
  ) })
12191
- ) : /* @__PURE__ */ jsxRuntime.jsx(react.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkG2Z2KARY_cjs.LoadingIndicator, { message: "Loading grid..." }), children: /* @__PURE__ */ jsxRuntime.jsx(chunkOHCYJFV2_cjs.HomeCenteredColumn, { children: /* @__PURE__ */ jsxRuntime.jsx(
12191
+ ) : /* @__PURE__ */ jsxRuntime.jsx(react.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkSYTZ3UAU_cjs.LoadingIndicator, { message: "Loading grid..." }), children: /* @__PURE__ */ jsxRuntime.jsx(chunkOHCYJFV2_cjs.HomeCenteredColumn, { children: /* @__PURE__ */ jsxRuntime.jsx(
12192
12192
  WorkspaceTableView,
12193
12193
  {
12194
12194
  list,
@@ -12234,7 +12234,7 @@ function ConnectedProjectsPanel({
12234
12234
  const { data: projects } = react$1.useProjects();
12235
12235
  const canCreateProjects = react$1.useCanCreateProjects();
12236
12236
  const { userId } = chunkAYKE6USO_cjs.useConnectedWorkspace();
12237
- const { stripeEnabled } = chunkDX5Y2NO5_cjs.useBillingSupport();
12237
+ const { stripeEnabled } = chunkYNSSIULM_cjs.useBillingSupport();
12238
12238
  const billingPortal = useOpenBillingPortal();
12239
12239
  const [newProjectOpen, setNewProjectOpen] = react.useState(false);
12240
12240
  useAutoRefreshPendingProjects();
@@ -12261,15 +12261,15 @@ function ConnectedProjectsPanel({
12261
12261
  [ownedCount, tabs, projects]
12262
12262
  );
12263
12263
  const paidProject = projects?.find(isPaid);
12264
- const panel = /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.PanelFrame, { className, testId: "projects-panel", children: [
12265
- /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.DraggableHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(
12264
+ const panel = /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.PanelFrame, { className, testId: "projects-panel", children: [
12265
+ /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.DraggableHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(
12266
12266
  chunkMEMWZ72Y_cjs.TabHeader,
12267
12267
  {
12268
12268
  tabs: headerTabs,
12269
12269
  activeTabId: activeProjectId ?? PROJECTS_BASE_TAB_ID,
12270
12270
  onTabChange: (id) => tabs.onSelect(id === PROJECTS_BASE_TAB_ID ? null : id),
12271
12271
  afterTabs: (isCompact) => /* @__PURE__ */ jsxRuntime.jsx(
12272
- chunkUUN2WGGM_cjs.PanelAddButton,
12272
+ chunkXGFNZTPO_cjs.PanelAddButton,
12273
12273
  {
12274
12274
  label: "New project",
12275
12275
  onClick: () => setNewProjectOpen(true),
@@ -12284,15 +12284,15 @@ function ConnectedProjectsPanel({
12284
12284
  compactBreakpoint: 360
12285
12285
  }
12286
12286
  ) }),
12287
- /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PanelFrameBody, { children: activeProjectId ? /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PanelScroll, { children: /* @__PURE__ */ jsxRuntime.jsx(
12287
+ /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PanelFrameBody, { children: activeProjectId ? /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PanelScroll, { children: /* @__PURE__ */ jsxRuntime.jsx(
12288
12288
  ProjectDetail,
12289
12289
  {
12290
12290
  projectExtId: activeProjectId,
12291
12291
  storage: projectStorage?.(activeProjectId)
12292
12292
  }
12293
- ) }) : /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.PanelScroll, { variant: "padded", children: [
12293
+ ) }) : /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.PanelScroll, { variant: "padded", children: [
12294
12294
  /* @__PURE__ */ jsxRuntime.jsx(ProjectsTable, {}),
12295
- stripeEnabled && paidProject && /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PanelActionsRow, { children: /* @__PURE__ */ jsxRuntime.jsxs(
12295
+ stripeEnabled && paidProject && /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PanelActionsRow, { children: /* @__PURE__ */ jsxRuntime.jsxs(
12296
12296
  ui.Button,
12297
12297
  {
12298
12298
  onClick: () => billingPortal.open(paidProject.external_id),
@@ -12389,7 +12389,7 @@ function ConnectedContactCardForm({
12389
12389
  }) {
12390
12390
  const { notify: notify14 } = chunkEFEFLBRM_cjs.useBlocksEnvironment();
12391
12391
  const [form, setForm] = react.useState(
12392
- () => contact?.card ? chunkOISSVUGI_cjs.contactToForm(contact.card) : chunkOISSVUGI_cjs.EMPTY_CONTACT_FORM
12392
+ () => contact?.card ? chunkU7OUZHBH_cjs.contactToForm(contact.card) : chunkU7OUZHBH_cjs.EMPTY_CONTACT_FORM
12393
12393
  );
12394
12394
  const [invite, setInvite] = react.useState(false);
12395
12395
  const [errors, setErrors] = react.useState({});
@@ -12403,14 +12403,14 @@ function ConnectedContactCardForm({
12403
12403
  const locked = !!contact && !contact.card;
12404
12404
  const set = (key, value) => setForm((f) => ({ ...f, [key]: value }));
12405
12405
  const submit = () => {
12406
- const found = chunkOISSVUGI_cjs.validateContactForm(form);
12407
- const email = chunkOISSVUGI_cjs.inviteEmail(form);
12406
+ const found = chunkU7OUZHBH_cjs.validateContactForm(form);
12407
+ const email = chunkU7OUZHBH_cjs.inviteEmail(form);
12408
12408
  if (invite && !email && !found.emails) found.emails = "Add an e-mail address to invite";
12409
12409
  setErrors(found);
12410
12410
  setServerError(null);
12411
12411
  setDuplicateOf(null);
12412
12412
  if (Object.keys(found).length) return;
12413
- const card = chunkOISSVUGI_cjs.formToContactCard(form);
12413
+ const card = chunkU7OUZHBH_cjs.formToContactCard(form);
12414
12414
  const onError = (err) => {
12415
12415
  setServerError(browser.refusalReason(err, "Could not save"));
12416
12416
  if (err instanceof browser.DuplicateContactError && err.contactId !== contact?.external_id)
@@ -12418,10 +12418,10 @@ function ConnectedContactCardForm({
12418
12418
  };
12419
12419
  const onInvited = (result) => {
12420
12420
  if (result.status === "failed") {
12421
- setServerError(result.outcome_detail || chunkOISSVUGI_cjs.DEFAULT_CONTACT_OUTCOME_LABELS.failed);
12421
+ setServerError(result.outcome_detail || chunkU7OUZHBH_cjs.DEFAULT_CONTACT_OUTCOME_LABELS.failed);
12422
12422
  return;
12423
12423
  }
12424
- notify14(chunkOISSVUGI_cjs.contactOutcomeMessage({ ...result, outcome: result.outcome ?? "invited" }), "success");
12424
+ notify14(chunkU7OUZHBH_cjs.contactOutcomeMessage({ ...result, outcome: result.outcome ?? "invited" }), "success");
12425
12425
  onDone();
12426
12426
  };
12427
12427
  if (invite && email) {
@@ -12477,7 +12477,7 @@ function ConnectedContactCardForm({
12477
12477
  linked && contact && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-muted-foreground", "data-testid": "contact-linked-email", children: [
12478
12478
  "ARBI: ",
12479
12479
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-foreground", children: contact.email }),
12480
- chunkOISSVUGI_cjs.contactStatusLabel(contact.status) && ` \xB7 ${chunkOISSVUGI_cjs.contactStatusLabel(contact.status)}`
12480
+ chunkU7OUZHBH_cjs.contactStatusLabel(contact.status) && ` \xB7 ${chunkU7OUZHBH_cjs.contactStatusLabel(contact.status)}`
12481
12481
  ] }),
12482
12482
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-1", children: [
12483
12483
  /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "contact-name", children: "Name" }),
@@ -12680,7 +12680,7 @@ function ImportVcfSummary({
12680
12680
  /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "min-w-0", children: [
12681
12681
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-foreground", children: o.file }),
12682
12682
  ": ",
12683
- "error" in o ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-destructive", children: o.error }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: chunkOISSVUGI_cjs.summarizeImport(o.result) })
12683
+ "error" in o ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-destructive", children: o.error }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: chunkU7OUZHBH_cjs.summarizeImport(o.result) })
12684
12684
  ] }),
12685
12685
  "result" in o && o.result.skipped.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("details", { className: "text-xs text-muted-foreground", children: [
12686
12686
  /* @__PURE__ */ jsxRuntime.jsx("summary", { className: "cursor-pointer", children: "Why cards were skipped" }),
@@ -12718,7 +12718,7 @@ function ConnectedContactsDirectory({
12718
12718
  const [confirmDelete, setConfirmDelete] = react.useState(null);
12719
12719
  const [importState, setImportState] = react.useState(null);
12720
12720
  const contacts = react.useMemo(() => data.filter((c) => !(c.user && ui.isAgent(c.user))), [data]);
12721
- const shown = react.useMemo(() => contacts.filter((c) => chunkOISSVUGI_cjs.matchesContact(c, q)), [contacts, q]);
12721
+ const shown = react.useMemo(() => contacts.filter((c) => chunkU7OUZHBH_cjs.matchesContact(c, q)), [contacts, q]);
12722
12722
  if (editing)
12723
12723
  return /* @__PURE__ */ jsxRuntime.jsxs(
12724
12724
  "section",
@@ -12737,7 +12737,7 @@ function ConnectedContactsDirectory({
12737
12737
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowLeft, { className: "size-4" })
12738
12738
  }
12739
12739
  ),
12740
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "truncate text-base font-semibold text-foreground", children: editing === "new" ? "New contact" : chunkOISSVUGI_cjs.contactName(editing) || "Contact" })
12740
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "truncate text-base font-semibold text-foreground", children: editing === "new" ? "New contact" : chunkU7OUZHBH_cjs.contactName(editing) || "Contact" })
12741
12741
  ] }),
12742
12742
  /* @__PURE__ */ jsxRuntime.jsx(
12743
12743
  ConnectedContactCardForm,
@@ -12809,8 +12809,8 @@ function ConnectedContactsDirectory({
12809
12809
  "\u201D."
12810
12810
  ] }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "grid divide-y divide-border rounded-lg border border-border", children: shown.map((c, i) => {
12811
12811
  const id = c.external_id ?? `row-${i}`;
12812
- const name = chunkOISSVUGI_cjs.contactName(c);
12813
- const status = chunkOISSVUGI_cjs.contactStatusLabel(c.status);
12812
+ const name = chunkU7OUZHBH_cjs.contactName(c);
12813
+ const status = chunkU7OUZHBH_cjs.contactStatusLabel(c.status);
12814
12814
  const peer = onMessage && c.status === "registered" ? c.user : null;
12815
12815
  return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-center justify-between gap-2 px-3 py-2 text-sm", children: [
12816
12816
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -12840,7 +12840,7 @@ function ConnectedContactsDirectory({
12840
12840
  )
12841
12841
  ] }),
12842
12842
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate text-xs text-muted-foreground", children: [
12843
- chunkOISSVUGI_cjs.primaryEmail(c) !== name && chunkOISSVUGI_cjs.primaryEmail(c),
12843
+ chunkU7OUZHBH_cjs.primaryEmail(c) !== name && chunkU7OUZHBH_cjs.primaryEmail(c),
12844
12844
  c.card?.organization,
12845
12845
  c.card?.birthday && `Birthday ${c.card.birthday}`
12846
12846
  ].filter(Boolean).join(" \xB7 ") })
@@ -12911,36 +12911,36 @@ function ConnectedAddContacts({
12911
12911
  const [rows, setRows] = react.useState(null);
12912
12912
  const selfEmail = arbi.isLoggedIn ? arbi.user.identity()?.email : null;
12913
12913
  const submit = async () => {
12914
- if (!chunkOISSVUGI_cjs.emailTokens(text).length) {
12914
+ if (!chunkU7OUZHBH_cjs.emailTokens(text).length) {
12915
12915
  notify14("Please enter at least one email address", "error");
12916
12916
  return;
12917
12917
  }
12918
- const plan = chunkOISSVUGI_cjs.planContactInvites(text, contacts, selfEmail);
12919
- if (plan.send.length > chunkOISSVUGI_cjs.MAX_INVITE_EMAILS) {
12920
- notify14(`Maximum ${chunkOISSVUGI_cjs.MAX_INVITE_EMAILS} new emails allowed per batch`, "error");
12918
+ const plan = chunkU7OUZHBH_cjs.planContactInvites(text, contacts, selfEmail);
12919
+ if (plan.send.length > chunkU7OUZHBH_cjs.MAX_INVITE_EMAILS) {
12920
+ notify14(`Maximum ${chunkU7OUZHBH_cjs.MAX_INVITE_EMAILS} new emails allowed per batch`, "error");
12921
12921
  return;
12922
12922
  }
12923
12923
  setRows(plan.rows);
12924
12924
  if (!plan.send.length) {
12925
- notify14(chunkOISSVUGI_cjs.summarizeUnsentInvites(plan.rows), "info");
12925
+ notify14(chunkU7OUZHBH_cjs.summarizeUnsentInvites(plan.rows), "info");
12926
12926
  onSuccess?.();
12927
12927
  return;
12928
12928
  }
12929
12929
  try {
12930
12930
  const response = await invite.mutateAsync(plan.send);
12931
- setRows(chunkOISSVUGI_cjs.applyContactInviteResults(plan, response));
12932
- const summary = chunkOISSVUGI_cjs.summarizeContactInvites(response);
12931
+ setRows(chunkU7OUZHBH_cjs.applyContactInviteResults(plan, response));
12932
+ const summary = chunkU7OUZHBH_cjs.summarizeContactInvites(response);
12933
12933
  notify14(summary.message, summary.failed ? "error" : "success");
12934
12934
  onSuccess?.();
12935
12935
  } catch (error) {
12936
12936
  const message = browser.refusalReason(error, "Failed to add contacts");
12937
- setRows(chunkOISSVUGI_cjs.failContactInvites(plan, message));
12937
+ setRows(chunkU7OUZHBH_cjs.failContactInvites(plan, message));
12938
12938
  notify14(message, "error");
12939
12939
  }
12940
12940
  };
12941
12941
  if (rows)
12942
12942
  return /* @__PURE__ */ jsxRuntime.jsx(
12943
- chunkOISSVUGI_cjs.AddContactsResults,
12943
+ chunkU7OUZHBH_cjs.AddContactsResults,
12944
12944
  {
12945
12945
  rows,
12946
12946
  onDone: onClose,
@@ -12951,11 +12951,11 @@ function ConnectedAddContacts({
12951
12951
  }
12952
12952
  );
12953
12953
  return /* @__PURE__ */ jsxRuntime.jsx(
12954
- chunkOISSVUGI_cjs.AddContactsForm,
12954
+ chunkU7OUZHBH_cjs.AddContactsForm,
12955
12955
  {
12956
12956
  value: text,
12957
12957
  onChange: setText,
12958
- emailCount: chunkOISSVUGI_cjs.emailTokens(text).length,
12958
+ emailCount: chunkU7OUZHBH_cjs.emailTokens(text).length,
12959
12959
  isPending: invite.isPending,
12960
12960
  onSubmit: () => void submit(),
12961
12961
  onCancel: onClose,
@@ -13035,7 +13035,7 @@ function recentConversations(conversations) {
13035
13035
  return [...conversations].sort((a, b) => time(b.updated_at) - time(a.updated_at)).slice(0, RECENT_ROWS).map((c) => ({
13036
13036
  id: c.external_id,
13037
13037
  title: c.title?.trim() || "Untitled thread",
13038
- subtitle: c.status ? [chunkUJEH5REK_cjs.STATUS_LABELS[chunkUJEH5REK_cjs.asTaskStatus(c.status)], c.due_at ? `due ${shortDate(c.due_at)}` : null].filter(Boolean).join(" \xB7 ") : `${c.message_count} ${c.message_count === 1 ? "message" : "messages"}`,
13038
+ subtitle: c.status ? [chunkAODZXDEE_cjs.STATUS_LABELS[chunkAODZXDEE_cjs.asTaskStatus(c.status)], c.due_at ? `due ${shortDate(c.due_at)}` : null].filter(Boolean).join(" \xB7 ") : `${c.message_count} ${c.message_count === 1 ? "message" : "messages"}`,
13039
13039
  time: timeAndDate(c.updated_at)
13040
13040
  }));
13041
13041
  }
@@ -13809,7 +13809,7 @@ function MailRecipientInput({
13809
13809
  const { head, token } = currentToken(value);
13810
13810
  const found = source.useSuggestions(token);
13811
13811
  const options2 = react.useMemo(() => {
13812
- const chosen = new Set(chunkOISSVUGI_cjs.parseMailRecipients(head).map((r) => r.email.toLowerCase()));
13812
+ const chosen = new Set(chunkU7OUZHBH_cjs.parseMailRecipients(head).map((r) => r.email.toLowerCase()));
13813
13813
  return found.filter((p) => !chosen.has(p.email.toLowerCase())).slice(0, 8);
13814
13814
  }, [found, head]);
13815
13815
  const open = focused && !dismissed && token.length > 0 && options2.length > 0;
@@ -13957,7 +13957,7 @@ function useWordBody({
13957
13957
  }
13958
13958
  var MailBodyEditor = react.lazy(
13959
13959
  () => import('../MailBodyEditor-D7MGJMLH.cjs').catch(() => ({
13960
- default: chunkOISSVUGI_cjs.PlainMailBodyEditor
13960
+ default: chunkU7OUZHBH_cjs.PlainMailBodyEditor
13961
13961
  }))
13962
13962
  );
13963
13963
  var NativeDocxEditor = react.lazy(
@@ -14050,9 +14050,9 @@ function MailComposerForm({
14050
14050
  }, [drafts, draftId, subject]);
14051
14051
  const body = () => ({
14052
14052
  ...initial,
14053
- to: chunkOISSVUGI_cjs.parseMailRecipients(to),
14054
- cc: chunkOISSVUGI_cjs.parseMailRecipients(cc),
14055
- bcc: chunkOISSVUGI_cjs.parseMailRecipients(bcc),
14053
+ to: chunkU7OUZHBH_cjs.parseMailRecipients(to),
14054
+ cc: chunkU7OUZHBH_cjs.parseMailRecipients(cc),
14055
+ bcc: chunkU7OUZHBH_cjs.parseMailRecipients(bcc),
14056
14056
  subject,
14057
14057
  text,
14058
14058
  html,
@@ -14524,7 +14524,7 @@ function MailComposerForm({
14524
14524
  }
14525
14525
  ),
14526
14526
  documents && /* @__PURE__ */ jsxRuntime.jsx(
14527
- chunkOISSVUGI_cjs.MailDocumentPicker,
14527
+ chunkU7OUZHBH_cjs.MailDocumentPicker,
14528
14528
  {
14529
14529
  documents: documents.documents,
14530
14530
  disabled: locked,
@@ -14643,7 +14643,7 @@ function ConnectedMailComposer({
14643
14643
  openId,
14644
14644
  async (from, id) => {
14645
14645
  const message = await client.getMessage(from, id);
14646
- return chunkOISSVUGI_cjs.draftMailCompose(
14646
+ return chunkU7OUZHBH_cjs.draftMailCompose(
14647
14647
  message,
14648
14648
  await hydrateMailAttachments(client, from, message.id, message.attachments, {
14649
14649
  isOnline,
@@ -14657,11 +14657,11 @@ function ConnectedMailComposer({
14657
14657
  const start = react.useMemo(() => {
14658
14658
  if (replyTo)
14659
14659
  return original.data && account ? {
14660
- ...chunkOISSVUGI_cjs.replyMailCompose(original.data, { account, folderRole: "inbox" }),
14660
+ ...chunkU7OUZHBH_cjs.replyMailCompose(original.data, { account, folderRole: "inbox" }),
14661
14661
  text: "",
14662
14662
  html: ""
14663
14663
  } : void 0;
14664
- return reloaded ? draft.data : initial ?? (openId ? draft.data : chunkOISSVUGI_cjs.emptyMailCompose());
14664
+ return reloaded ? draft.data : initial ?? (openId ? draft.data : chunkU7OUZHBH_cjs.emptyMailCompose());
14665
14665
  }, [replyTo, original.data, account, reloaded, initial, openId, draft.data]);
14666
14666
  if (!start)
14667
14667
  return draft.error ?? original.error ? /* @__PURE__ */ jsxRuntime.jsx("p", { role: "alert", className: "p-4 text-sm text-destructive", children: (draft.error ?? original.error)?.message }) : /* @__PURE__ */ jsxRuntime.jsx("p", { className: "p-4 text-sm text-muted-foreground", children: "Loading draft\u2026" });
@@ -14968,7 +14968,7 @@ function ConnectedMailbox({
14968
14968
  const message = detail.data;
14969
14969
  react.useEffect(() => {
14970
14970
  if (!composeAttachments?.length) return;
14971
- openCompose({ ...chunkOISSVUGI_cjs.emptyMailCompose(), attachments: composeAttachments });
14971
+ openCompose({ ...chunkU7OUZHBH_cjs.emptyMailCompose(), attachments: composeAttachments });
14972
14972
  onComposeOpened?.();
14973
14973
  }, [composeAttachments]);
14974
14974
  react.useEffect(() => {
@@ -15096,7 +15096,7 @@ function ConnectedMailbox({
15096
15096
  const editDraft = async () => {
15097
15097
  if (!message) return;
15098
15098
  try {
15099
- openCompose(chunkOISSVUGI_cjs.draftMailCompose(message, await hydrate(message.attachments)));
15099
+ openCompose(chunkU7OUZHBH_cjs.draftMailCompose(message, await hydrate(message.attachments)));
15100
15100
  } catch (e) {
15101
15101
  setActionError(e instanceof Error ? e.message : "Could not load draft attachments");
15102
15102
  }
@@ -15105,7 +15105,7 @@ function ConnectedMailbox({
15105
15105
  if (!message || !account) return;
15106
15106
  try {
15107
15107
  const attachments = forward ? await hydrate(message.attachments) : [];
15108
- openCompose(chunkOISSVUGI_cjs.replyMailCompose(message, { account, folderRole, forward, all, attachments }));
15108
+ openCompose(chunkU7OUZHBH_cjs.replyMailCompose(message, { account, folderRole, forward, all, attachments }));
15109
15109
  } catch (e) {
15110
15110
  setActionError(e instanceof Error ? e.message : "Could not prepare forwarded attachments");
15111
15111
  }
@@ -15136,7 +15136,7 @@ function ConnectedMailbox({
15136
15136
  onTabChange: () => {
15137
15137
  },
15138
15138
  compactBreakpoint: 360,
15139
- firstTabContent: account ? /* @__PURE__ */ jsxRuntime.jsxs(chunk5D5YDIBC_cjs.FilesFilterBar, { children: [
15139
+ firstTabContent: account ? /* @__PURE__ */ jsxRuntime.jsxs(chunkNUAC5GTQ_cjs.FilesFilterBar, { children: [
15140
15140
  /* @__PURE__ */ jsxRuntime.jsx(
15141
15141
  chunk2EI7NCUA_cjs.FilterInput,
15142
15142
  {
@@ -15171,7 +15171,7 @@ function ConnectedMailbox({
15171
15171
  }
15172
15172
  ),
15173
15173
  folderList && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex shrink-0 items-center gap-2", children: /* @__PURE__ */ jsxRuntime.jsx(
15174
- chunk5D5YDIBC_cjs.FolderFilterButton,
15174
+ chunkNUAC5GTQ_cjs.FolderFilterButton,
15175
15175
  {
15176
15176
  label: folderList.find((f) => f.id === folderId)?.name ?? "Folders",
15177
15177
  isActive: false,
@@ -15179,7 +15179,7 @@ function ConnectedMailbox({
15179
15179
  onOpenChange: setFolderMenuOpen,
15180
15180
  testId: "mail-folder-button",
15181
15181
  children: folderList.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
15182
- chunk5D5YDIBC_cjs.FolderPickerRow,
15182
+ chunkNUAC5GTQ_cjs.FolderPickerRow,
15183
15183
  {
15184
15184
  label: item.name,
15185
15185
  count: item.unread > 0 ? item.unread : void 0,
@@ -15225,7 +15225,7 @@ function ConnectedMailbox({
15225
15225
  {
15226
15226
  size: "sm",
15227
15227
  disabled: !ready || !!compose,
15228
- onClick: () => openCompose(chunkOISSVUGI_cjs.emptyMailCompose()),
15228
+ onClick: () => openCompose(chunkU7OUZHBH_cjs.emptyMailCompose()),
15229
15229
  children: [
15230
15230
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "mr-1.5 size-4" }),
15231
15231
  "Email"
@@ -15304,7 +15304,7 @@ function ConnectedMailbox({
15304
15304
  onEdit: (value) => openCompose({ ...value })
15305
15305
  }),
15306
15306
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: deviceFolder ? "hidden" : "min-h-0 flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
15307
- chunkOISSVUGI_cjs.MailGrid,
15307
+ chunkU7OUZHBH_cjs.MailGrid,
15308
15308
  {
15309
15309
  messages: filteredMessages,
15310
15310
  loading: list.isPending && list.fetchStatus !== "idle",
@@ -15368,7 +15368,7 @@ function ConnectedMailbox({
15368
15368
  },
15369
15369
  `${account?.id}-${composeSession}`
15370
15370
  ) : message && selected ? /* @__PURE__ */ jsxRuntime.jsx(
15371
- chunkOISSVUGI_cjs.MailMessageView,
15371
+ chunkU7OUZHBH_cjs.MailMessageView,
15372
15372
  {
15373
15373
  account,
15374
15374
  message,
@@ -15444,7 +15444,7 @@ function ConnectedMailbox({
15444
15444
  }
15445
15445
  ),
15446
15446
  /* @__PURE__ */ jsxRuntime.jsx(
15447
- chunkZAVEMQ37_cjs.ConfirmDialog,
15447
+ chunkDWZXSPMB_cjs.ConfirmDialog,
15448
15448
  {
15449
15449
  isOpen: confirmDelete !== null,
15450
15450
  onClose: () => setConfirmDelete(null),
@@ -15505,7 +15505,7 @@ function ConnectedMailMessage({
15505
15505
  const attachments = forward ? await hydrateMailAttachments(client, account, message.id, message.attachments, {
15506
15506
  isOnline
15507
15507
  }) : [];
15508
- onCompose(chunkOISSVUGI_cjs.replyMailCompose(message, { account, folderRole, forward, all, attachments }));
15508
+ onCompose(chunkU7OUZHBH_cjs.replyMailCompose(message, { account, folderRole, forward, all, attachments }));
15509
15509
  } catch (e) {
15510
15510
  setError(e instanceof Error ? e.message : "Could not prepare forwarded attachments");
15511
15511
  }
@@ -15513,7 +15513,7 @@ function ConnectedMailMessage({
15513
15513
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full min-h-0 flex-col", children: [
15514
15514
  error && /* @__PURE__ */ jsxRuntime.jsx("p", { role: "alert", className: "px-4 pt-3 text-sm text-destructive", children: error }),
15515
15515
  /* @__PURE__ */ jsxRuntime.jsx(
15516
- chunkOISSVUGI_cjs.MailMessageView,
15516
+ chunkU7OUZHBH_cjs.MailMessageView,
15517
15517
  {
15518
15518
  account,
15519
15519
  message,
@@ -15524,7 +15524,7 @@ function ConnectedMailMessage({
15524
15524
  onBack: onClose,
15525
15525
  onEditDraft: () => void hydrateMailAttachments(client, account, message.id, message.attachments, {
15526
15526
  isOnline
15527
- }).then((attachments) => onCompose(chunkOISSVUGI_cjs.draftMailCompose(message, attachments))).catch((e) => setError(e.message)),
15527
+ }).then((attachments) => onCompose(chunkU7OUZHBH_cjs.draftMailCompose(message, attachments))).catch((e) => setError(e.message)),
15528
15528
  onReply: (forward, all) => void reply(forward, all),
15529
15529
  onReplyWithArbi: onReplyWithArbi && account.provider === "native" ? () => onReplyWithArbi(message, account) : void 0,
15530
15530
  onUpdate: (body) => void update(body),
@@ -18855,7 +18855,7 @@ var useFilesPrefs = zustand.create()(
18855
18855
  viewMode: "explorer",
18856
18856
  setViewMode: (viewMode) => set({ viewMode }),
18857
18857
  // New users start at the compact minimum (more rows at once).
18858
- rowHeight: chunk5D5YDIBC_cjs.DOCUMENTS_ROW_HEIGHT_INITIAL,
18858
+ rowHeight: chunkNUAC5GTQ_cjs.DOCUMENTS_ROW_HEIGHT_INITIAL,
18859
18859
  setRowHeight: (rowHeight) => set({ rowHeight })
18860
18860
  }),
18861
18861
  {
@@ -18911,7 +18911,7 @@ var COMPACT_BELOW = 132;
18911
18911
  var NO_DOCUMENTS = [];
18912
18912
  function useFilesWorkspace() {
18913
18913
  const { workspaceId, userId, live } = chunkAYKE6USO_cjs.useConnectedWorkspace();
18914
- const { members, role } = chunkNVVBRQN2_cjs.useConnectedWorkspaceRole();
18914
+ const { members, role } = chunkPTSTVYQD_cjs.useConnectedWorkspaceRole();
18915
18915
  const { data: workspaces } = react$1.useWorkspaces({ enabled: live });
18916
18916
  const workspaceName = workspaces?.find((w) => w.external_id === workspaceId)?.name;
18917
18917
  return {
@@ -18986,8 +18986,8 @@ var ConnectedFilesExplorer = react.forwardRef(function ConnectedFilesExplorer2({
18986
18986
  const { folders, files } = react.useMemo(() => {
18987
18987
  const result = isSearching ? {
18988
18988
  folders: [],
18989
- files: chunk5D5YDIBC_cjs.searchExplorerDocuments(documents, search, sort)
18990
- } : chunk5D5YDIBC_cjs.buildExplorerEntries(documents, currentPath, sort, [...pendingFolders]);
18989
+ files: chunkNUAC5GTQ_cjs.searchExplorerDocuments(documents, search, sort)
18990
+ } : chunkNUAC5GTQ_cjs.buildExplorerEntries(documents, currentPath, sort, [...pendingFolders]);
18991
18991
  if (sortReversed) result.files = [...result.files].reverse();
18992
18992
  return result;
18993
18993
  }, [documents, currentPath, sort, isSearching, search, sortReversed, pendingFolders]);
@@ -18998,7 +18998,7 @@ var ConnectedFilesExplorer = react.forwardRef(function ConnectedFilesExplorer2({
18998
18998
  const orderedFileIds = react.useMemo(() => files.map((d) => d.external_id), [files]);
18999
18999
  const folderDocs = react.useMemo(() => {
19000
19000
  const map = /* @__PURE__ */ new Map();
19001
- for (const f of folders) map.set(f.path.join("/"), chunk5D5YDIBC_cjs.collectFolderDocs(documents, f.path));
19001
+ for (const f of folders) map.set(f.path.join("/"), chunkNUAC5GTQ_cjs.collectFolderDocs(documents, f.path));
19002
19002
  return map;
19003
19003
  }, [folders, documents]);
19004
19004
  const folderSelection = react.useMemo(() => {
@@ -19146,7 +19146,7 @@ var ConnectedFilesExplorer = react.forwardRef(function ConnectedFilesExplorer2({
19146
19146
  let name = base;
19147
19147
  let i = 2;
19148
19148
  while (siblings.has(name.toLowerCase())) name = `${base} ${i++}`;
19149
- const path = chunk5D5YDIBC_cjs.joinFolderPath([...currentPath, name]);
19149
+ const path = chunkNUAC5GTQ_cjs.joinFolderPath([...currentPath, name]);
19150
19150
  if (!path) return;
19151
19151
  addPendingFolder(wsId, path);
19152
19152
  setEditingFolderPath(path);
@@ -19182,10 +19182,10 @@ var ConnectedFilesExplorer = react.forwardRef(function ConnectedFilesExplorer2({
19182
19182
  notify14(`A folder named "${name}" already exists here.`, "error");
19183
19183
  return;
19184
19184
  }
19185
- const oldPath = chunk5D5YDIBC_cjs.joinFolderPath(folder.path);
19185
+ const oldPath = chunkNUAC5GTQ_cjs.joinFolderPath(folder.path);
19186
19186
  const newPrefix = [...folder.path.slice(0, -1), name];
19187
- const newPath = chunk5D5YDIBC_cjs.joinFolderPath(newPrefix);
19188
- const docs = chunk5D5YDIBC_cjs.collectFolderDocs(documents, folder.path);
19187
+ const newPath = chunkNUAC5GTQ_cjs.joinFolderPath(newPrefix);
19188
+ const docs = chunkNUAC5GTQ_cjs.collectFolderDocs(documents, folder.path);
19189
19189
  try {
19190
19190
  if (await renameFolder(docs, folder.path, newPrefix) > 0) {
19191
19191
  notify14(`Renamed folder to "${name}"`, "success");
@@ -19244,7 +19244,7 @@ var ConnectedFilesExplorer = react.forwardRef(function ConnectedFilesExplorer2({
19244
19244
  const handleToggleFolder = react.useCallback(
19245
19245
  (folder, e) => {
19246
19246
  e.stopPropagation();
19247
- const ids = chunk5D5YDIBC_cjs.collectFolderDocs(documents, folder.path).map((d) => d.external_id);
19247
+ const ids = chunkNUAC5GTQ_cjs.collectFolderDocs(documents, folder.path).map((d) => d.external_id);
19248
19248
  if (ids.length === 0) return;
19249
19249
  if (ids.every((id) => selectedSet.has(id))) {
19250
19250
  const remove = new Set(ids);
@@ -19305,9 +19305,9 @@ var ConnectedFilesExplorer = react.forwardRef(function ConnectedFilesExplorer2({
19305
19305
  );
19306
19306
  const handleDelete = react.useCallback(
19307
19307
  async (doc) => {
19308
- const name = chunk5D5YDIBC_cjs.getExplorerDisplayName(doc);
19308
+ const name = chunkNUAC5GTQ_cjs.getExplorerDisplayName(doc);
19309
19309
  const confirmed = await confirm({
19310
- message: `Delete "${name}"? ${chunk5D5YDIBC_cjs.RECENTLY_DELETED_HINT}`,
19310
+ message: `Delete "${name}"? ${chunkNUAC5GTQ_cjs.RECENTLY_DELETED_HINT}`,
19311
19311
  title: "Delete file"
19312
19312
  });
19313
19313
  if (!confirmed) return;
@@ -19327,7 +19327,7 @@ var ConnectedFilesExplorer = react.forwardRef(function ConnectedFilesExplorer2({
19327
19327
  );
19328
19328
  const handleFolderDownload = react.useCallback(
19329
19329
  (folder) => {
19330
- const docs = chunk5D5YDIBC_cjs.collectFolderDocs(documents, folder.path);
19330
+ const docs = chunkNUAC5GTQ_cjs.collectFolderDocs(documents, folder.path);
19331
19331
  if (docs.length > 0) void downloadDocuments(docs);
19332
19332
  },
19333
19333
  [documents, downloadDocuments]
@@ -19336,7 +19336,7 @@ var ConnectedFilesExplorer = react.forwardRef(function ConnectedFilesExplorer2({
19336
19336
  if (onFolderMove) return onFolderMove;
19337
19337
  if (!onMoveSelected) return void 0;
19338
19338
  return (folder) => {
19339
- const ids = chunk5D5YDIBC_cjs.collectFolderDocs(documents, folder.path).map((d) => d.external_id);
19339
+ const ids = chunkNUAC5GTQ_cjs.collectFolderDocs(documents, folder.path).map((d) => d.external_id);
19340
19340
  if (ids.length === 0) return;
19341
19341
  onSelectionChange(ids);
19342
19342
  onMoveSelected();
@@ -19344,14 +19344,14 @@ var ConnectedFilesExplorer = react.forwardRef(function ConnectedFilesExplorer2({
19344
19344
  }, [documents, onFolderMove, onMoveSelected, onSelectionChange]);
19345
19345
  const handleFolderDelete = react.useCallback(
19346
19346
  async (folder) => {
19347
- const docs = chunk5D5YDIBC_cjs.collectFolderDocs(documents, folder.path);
19347
+ const docs = chunkNUAC5GTQ_cjs.collectFolderDocs(documents, folder.path);
19348
19348
  if (docs.length === 0) {
19349
- const path = chunk5D5YDIBC_cjs.joinFolderPath(folder.path);
19349
+ const path = chunkNUAC5GTQ_cjs.joinFolderPath(folder.path);
19350
19350
  if (wsId && path) removePendingFolder(wsId, path);
19351
19351
  return;
19352
19352
  }
19353
19353
  const confirmed = await confirm({
19354
- message: `Delete folder "${folder.name}" and its ${docs.length} item${docs.length === 1 ? "" : "s"}? ${chunk5D5YDIBC_cjs.RECENTLY_DELETED_HINT_PLURAL}`,
19354
+ message: `Delete folder "${folder.name}" and its ${docs.length} item${docs.length === 1 ? "" : "s"}? ${chunkNUAC5GTQ_cjs.RECENTLY_DELETED_HINT_PLURAL}`,
19355
19355
  title: "Delete folder"
19356
19356
  });
19357
19357
  if (!confirmed) return;
@@ -19368,8 +19368,8 @@ var ConnectedFilesExplorer = react.forwardRef(function ConnectedFilesExplorer2({
19368
19368
  [confirm, documents, deleteDocuments, onSelectionChange, removePendingFolder, wsId, notify14]
19369
19369
  );
19370
19370
  const canDeleteFolder = react.useCallback(
19371
- (folder) => canUpload && chunk5D5YDIBC_cjs.collectFolderDocs(documents, folder.path).every(
19372
- (doc) => chunk5D5YDIBC_cjs.canDeleteDocument(doc, userId, role)
19371
+ (folder) => canUpload && chunkNUAC5GTQ_cjs.collectFolderDocs(documents, folder.path).every(
19372
+ (doc) => chunkNUAC5GTQ_cjs.canDeleteDocument(doc, userId, role)
19373
19373
  ),
19374
19374
  [canUpload, documents, userId, role]
19375
19375
  );
@@ -19428,7 +19428,7 @@ var ConnectedFilesExplorer = react.forwardRef(function ConnectedFilesExplorer2({
19428
19428
  setActiveDragId(null);
19429
19429
  const data = event.over?.data.current;
19430
19430
  if (data?.type === "folder" && data.path) {
19431
- const targetFolder = chunk5D5YDIBC_cjs.joinFolderPath(data.path);
19431
+ const targetFolder = chunkNUAC5GTQ_cjs.joinFolderPath(data.path);
19432
19432
  const moving = dragIdsRef.current.filter((id) => {
19433
19433
  const doc = documents.find((d) => d.external_id === id);
19434
19434
  return doc && (doc.folder ?? null) !== targetFolder;
@@ -19468,7 +19468,7 @@ var ConnectedFilesExplorer = react.forwardRef(function ConnectedFilesExplorer2({
19468
19468
  const dropped = Array.from(e.dataTransfer.files ?? []);
19469
19469
  if (dropped.length > 0) {
19470
19470
  e.preventDefault();
19471
- onUploadFiles(dropped, chunk5D5YDIBC_cjs.joinFolderPath(currentPath));
19471
+ onUploadFiles(dropped, chunkNUAC5GTQ_cjs.joinFolderPath(currentPath));
19472
19472
  }
19473
19473
  },
19474
19474
  [canUpload, currentPath, onUploadFiles]
@@ -19485,9 +19485,9 @@ var ConnectedFilesExplorer = react.forwardRef(function ConnectedFilesExplorer2({
19485
19485
  onDragEnd: handleDragEnd,
19486
19486
  onDragCancel: () => setActiveDragId(null),
19487
19487
  children: [
19488
- /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.ExplorerFrame, { "data-testid": "documents-explorer", children: /* @__PURE__ */ jsxRuntime.jsxs(chunk5D5YDIBC_cjs.ExplorerStage, { children: [
19488
+ /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.ExplorerFrame, { "data-testid": "documents-explorer", children: /* @__PURE__ */ jsxRuntime.jsxs(chunkNUAC5GTQ_cjs.ExplorerStage, { children: [
19489
19489
  /* @__PURE__ */ jsxRuntime.jsx(
19490
- chunk5D5YDIBC_cjs.ExplorerScroller,
19490
+ chunkNUAC5GTQ_cjs.ExplorerScroller,
19491
19491
  {
19492
19492
  ref: scrollRef,
19493
19493
  onClick: handleBackgroundClick,
@@ -19497,15 +19497,15 @@ var ConnectedFilesExplorer = react.forwardRef(function ConnectedFilesExplorer2({
19497
19497
  onDragLeave: handleNativeDragLeave,
19498
19498
  onDrop: handleNativeDrop,
19499
19499
  "data-testid": "explorer-scroll",
19500
- children: isLoading && documents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.ExplorerLoadingTiles, {}) : entries.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(
19501
- chunk5D5YDIBC_cjs.ExplorerEmpty,
19500
+ children: isLoading && documents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.ExplorerLoadingTiles, {}) : entries.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(
19501
+ chunkNUAC5GTQ_cjs.ExplorerEmpty,
19502
19502
  {
19503
19503
  title: isSearching ? `No files match "${search.trim()}"` : "This folder is empty",
19504
19504
  description: isSearching ? "Try a different search." : canUpload ? "Drop files here or use Upload to add documents." : "No documents here yet."
19505
19505
  }
19506
19506
  ) : containerWidth === 0 ? (
19507
19507
  // Not measured yet: rendering now would flash one stretched column.
19508
- /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.ExplorerLoadingTiles, {})
19508
+ /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.ExplorerLoadingTiles, {})
19509
19509
  ) : /* @__PURE__ */ jsxRuntime.jsx(
19510
19510
  "div",
19511
19511
  {
@@ -19566,7 +19566,7 @@ var ConnectedFilesExplorer = react.forwardRef(function ConnectedFilesExplorer2({
19566
19566
  dragging: activeDragId === doc.external_id,
19567
19567
  dndActive: activeDragId !== null,
19568
19568
  renaming: renamingId === doc.external_id,
19569
- canDelete: chunk5D5YDIBC_cjs.canDeleteDocument(doc, userId, role),
19569
+ canDelete: chunkNUAC5GTQ_cjs.canDeleteDocument(doc, userId, role),
19570
19570
  thumbnailUrl: thumbnailsById.get(doc.external_id),
19571
19571
  modifiedBy: userById.get(
19572
19572
  doc.updated_by_ext_id ?? doc.created_by_ext_id
@@ -19595,9 +19595,9 @@ var ConnectedFilesExplorer = react.forwardRef(function ConnectedFilesExplorer2({
19595
19595
  )
19596
19596
  }
19597
19597
  ),
19598
- /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.ExplorerMarquee, { ref: marqueeOverlayRef, "data-testid": "explorer-marquee" }),
19598
+ /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.ExplorerMarquee, { ref: marqueeOverlayRef, "data-testid": "explorer-marquee" }),
19599
19599
  isFileDragOver && /* @__PURE__ */ jsxRuntime.jsx(
19600
- chunk5D5YDIBC_cjs.ExplorerDropOverlay,
19600
+ chunkNUAC5GTQ_cjs.ExplorerDropOverlay,
19601
19601
  {
19602
19602
  label: `Drop to upload${currentPath.length > 0 ? ` to "${currentPath[currentPath.length - 1]}"` : ""}`
19603
19603
  }
@@ -19611,7 +19611,7 @@ var ConnectedFilesExplorer = react.forwardRef(function ConnectedFilesExplorer2({
19611
19611
  function DragPreview({ doc, count: count2 }) {
19612
19612
  const Icon = ui.getFileTypeIcon(doc.file_name, { mime: doc.file_type });
19613
19613
  return /* @__PURE__ */ jsxRuntime.jsx(
19614
- chunk5D5YDIBC_cjs.ExplorerDragPreview,
19614
+ chunkNUAC5GTQ_cjs.ExplorerDragPreview,
19615
19615
  {
19616
19616
  icon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { size: 20 }),
19617
19617
  title: ui.getDocumentTitle(doc, doc.file_name ?? "Untitled"),
@@ -19697,7 +19697,7 @@ function ConnectedUploadDropzone({
19697
19697
  const onFiles = browse(fileInputRef);
19698
19698
  const onFolder = browse(folderInputRef);
19699
19699
  const dropTarget = /* @__PURE__ */ jsxRuntime.jsx(
19700
- chunk5D5YDIBC_cjs.UploadDropArea,
19700
+ chunkNUAC5GTQ_cjs.UploadDropArea,
19701
19701
  {
19702
19702
  isActive: dragActive,
19703
19703
  isDisabled: disabled,
@@ -19711,11 +19711,11 @@ function ConnectedUploadDropzone({
19711
19711
  onClick: (e) => {
19712
19712
  if (e.target === e.currentTarget) onFiles();
19713
19713
  },
19714
- actions: compact ? /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.UploadBrowseButtons, { onFiles, onFolder, isDisabled: disabled }) : void 0
19714
+ actions: compact ? /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.UploadBrowseButtons, { onFiles, onFolder, isDisabled: disabled }) : void 0
19715
19715
  }
19716
19716
  );
19717
19717
  const urlDialog = (trigger) => onUrlsSubmit ? /* @__PURE__ */ jsxRuntime.jsx(
19718
- chunk5D5YDIBC_cjs.UrlInputDialog,
19718
+ chunkNUAC5GTQ_cjs.UrlInputDialog,
19719
19719
  {
19720
19720
  onUrlsSubmit,
19721
19721
  processing: disabled,
@@ -19728,12 +19728,12 @@ function ConnectedUploadDropzone({
19728
19728
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
19729
19729
  dropTarget,
19730
19730
  compactLeadingAction,
19731
- onUrlsSubmit && /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.UploadSourceSection, { isIsolated: true, className: "flex flex-wrap justify-center gap-2", children: urlDialog(/* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.UploadUrlButton, { isDisabled: disabled, isCompact: true })) })
19731
+ onUrlsSubmit && /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.UploadSourceSection, { isIsolated: true, className: "flex flex-wrap justify-center gap-2", children: urlDialog(/* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.UploadUrlButton, { isDisabled: disabled, isCompact: true })) })
19732
19732
  ] });
19733
19733
  }
19734
19734
  if (!source) {
19735
19735
  return /* @__PURE__ */ jsxRuntime.jsx(
19736
- chunk5D5YDIBC_cjs.UploadSourcePicker,
19736
+ chunkNUAC5GTQ_cjs.UploadSourcePicker,
19737
19737
  {
19738
19738
  isDisabled: disabled,
19739
19739
  options: [
@@ -19769,14 +19769,14 @@ function ConnectedUploadDropzone({
19769
19769
  }
19770
19770
  if (source === "computer") {
19771
19771
  return /* @__PURE__ */ jsxRuntime.jsxs(
19772
- chunk5D5YDIBC_cjs.UploadSourceSection,
19772
+ chunkNUAC5GTQ_cjs.UploadSourceSection,
19773
19773
  {
19774
19774
  testId: "upload-source-computer",
19775
19775
  className: "flex w-full flex-col gap-3 pointer-coarse:flex-col-reverse",
19776
19776
  children: [
19777
19777
  dropTarget,
19778
19778
  /* @__PURE__ */ jsxRuntime.jsx(
19779
- chunk5D5YDIBC_cjs.UploadBrowseButtons,
19779
+ chunkNUAC5GTQ_cjs.UploadBrowseButtons,
19780
19780
  {
19781
19781
  layout: "grid",
19782
19782
  onFiles,
@@ -19789,15 +19789,15 @@ function ConnectedUploadDropzone({
19789
19789
  );
19790
19790
  }
19791
19791
  if (source === "internet" && onUrlsSubmit) {
19792
- return /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.UploadSourceSection, { testId: "upload-source-internet", className: "flex flex-wrap gap-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.UploadSourceSection, { isIsolated: true, children: urlDialog(/* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.UploadUrlButton, { isDisabled: disabled })) }) });
19792
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.UploadSourceSection, { testId: "upload-source-internet", className: "flex flex-wrap gap-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.UploadSourceSection, { isIsolated: true, children: urlDialog(/* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.UploadUrlButton, { isDisabled: disabled })) }) });
19793
19793
  }
19794
19794
  if (source === "email" && accounts) {
19795
- return /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.UploadSourceSection, { testId: "upload-source-email", isIsolated: true, children: accounts });
19795
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.UploadSourceSection, { testId: "upload-source-email", isIsolated: true, children: accounts });
19796
19796
  }
19797
19797
  return null;
19798
19798
  })();
19799
19799
  return /* @__PURE__ */ jsxRuntime.jsxs(
19800
- chunk5D5YDIBC_cjs.UploadFrame,
19800
+ chunkNUAC5GTQ_cjs.UploadFrame,
19801
19801
  {
19802
19802
  isCompact: compact,
19803
19803
  isDimmed: disabled || processingMessage !== null,
@@ -19904,7 +19904,7 @@ function plural2(count2) {
19904
19904
  function DefaultFooter({ submit, shared, onSharedChange }) {
19905
19905
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 items-center justify-end gap-4 border-t border-border px-4 py-3 sm:px-6", children: [
19906
19906
  /* @__PURE__ */ jsxRuntime.jsx(
19907
- chunk5D5YDIBC_cjs.ShareToggle,
19907
+ chunkNUAC5GTQ_cjs.ShareToggle,
19908
19908
  {
19909
19909
  isVisible: shared,
19910
19910
  onToggle: onSharedChange,
@@ -20069,7 +20069,7 @@ ${summary}`,
20069
20069
  }
20070
20070
  );
20071
20071
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-0 flex-1 flex-col", "data-testid": "upload-documents", children: [
20072
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-0 flex-1 overflow-y-auto pb-2", children: uploading === null ? /* @__PURE__ */ jsxRuntime.jsxs(chunk5D5YDIBC_cjs.UploadContainer, { className: "w-full px-4 pb-4 pt-2 sm:px-6", children: [
20072
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-0 flex-1 overflow-y-auto pb-2", children: uploading === null ? /* @__PURE__ */ jsxRuntime.jsxs(chunkNUAC5GTQ_cjs.UploadContainer, { className: "w-full px-4 pb-4 pt-2 sm:px-6", children: [
20073
20073
  files.length === 0 && /* @__PURE__ */ jsxRuntime.jsx(
20074
20074
  ConnectedUploadDropzone,
20075
20075
  {
@@ -20085,7 +20085,7 @@ ${summary}`,
20085
20085
  }
20086
20086
  ),
20087
20087
  /* @__PURE__ */ jsxRuntime.jsx(
20088
- chunk5D5YDIBC_cjs.SelectedFilesList,
20088
+ chunkNUAC5GTQ_cjs.SelectedFilesList,
20089
20089
  {
20090
20090
  renderFileIcon,
20091
20091
  files,
@@ -20094,10 +20094,10 @@ ${summary}`,
20094
20094
  formatFileSize
20095
20095
  }
20096
20096
  ),
20097
- /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.RejectedFilesList, { files: refused, onClear: () => setRefused([]) }),
20098
- error && /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.UploadErrorMessage, { message: error })
20099
- ] }) : /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.UploadContainer, { className: "w-full p-4 sm:p-6", children: /* @__PURE__ */ jsxRuntime.jsx(
20100
- chunk5D5YDIBC_cjs.UploadProgress,
20097
+ /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.RejectedFilesList, { files: refused, onClear: () => setRefused([]) }),
20098
+ error && /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.UploadErrorMessage, { message: error })
20099
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.UploadContainer, { className: "w-full p-4 sm:p-6", children: /* @__PURE__ */ jsxRuntime.jsx(
20100
+ chunkNUAC5GTQ_cjs.UploadProgress,
20101
20101
  {
20102
20102
  fileCount: count2,
20103
20103
  entityLabel: plural2(count2),
@@ -20139,7 +20139,7 @@ function AddFromAccountsButton({
20139
20139
  className: "gap-2",
20140
20140
  "data-testid": dataTestId,
20141
20141
  children: [
20142
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex items-center gap-1", children: marks.map((m) => /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.VendorLogo, { vendorKey: m.vendorKey, product: m.product, className: "h-4 w-4" }, m.key)) }),
20142
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex items-center gap-1", children: marks.map((m) => /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.VendorLogo, { vendorKey: m.vendorKey, product: m.product, className: "h-4 w-4" }, m.key)) }),
20143
20143
  "Add from accounts"
20144
20144
  ]
20145
20145
  }
@@ -20169,7 +20169,7 @@ function EmptyWorkspaceUpload({
20169
20169
  compactLeadingAction: onImportFromEmail && /* @__PURE__ */ jsxRuntime.jsx(AddFromAccountsButton, { onImportFromEmail })
20170
20170
  }
20171
20171
  ),
20172
- /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.PrivacyExplainerModal, {})
20172
+ /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.PrivacyExplainerModal, {})
20173
20173
  ] })
20174
20174
  }
20175
20175
  );
@@ -20200,9 +20200,9 @@ function ConnectedTagEntity({
20200
20200
  onEditClick();
20201
20201
  }
20202
20202
  };
20203
- const tooltipContent = showTooltip ? /* @__PURE__ */ jsxRuntime.jsxs(chunkG2Z2KARY_cjs.EntityTooltip, { children: [
20203
+ const tooltipContent = showTooltip ? /* @__PURE__ */ jsxRuntime.jsxs(chunkSYTZ3UAU_cjs.EntityTooltip, { children: [
20204
20204
  /* @__PURE__ */ jsxRuntime.jsx(
20205
- chunkG2Z2KARY_cjs.EntityTooltipHeader,
20205
+ chunkSYTZ3UAU_cjs.EntityTooltipHeader,
20206
20206
  {
20207
20207
  lead: /* @__PURE__ */ jsxRuntime.jsx(
20208
20208
  "span",
@@ -20277,7 +20277,7 @@ var CheckboxCellRenderer = react.memo(function CheckboxCellRenderer2({
20277
20277
  if (!params.data) return null;
20278
20278
  const isChecked = params.value === true;
20279
20279
  return /* @__PURE__ */ jsxRuntime.jsx(
20280
- chunk5D5YDIBC_cjs.CheckboxCell,
20280
+ chunkNUAC5GTQ_cjs.CheckboxCell,
20281
20281
  {
20282
20282
  isChecked,
20283
20283
  color: tagColor,
@@ -20300,12 +20300,12 @@ var TagHeaderComponent = react.memo(function TagHeaderComponent2({
20300
20300
  return () => params.column.removeEventListener("sortChanged", updateSort);
20301
20301
  }, [params.column]);
20302
20302
  return /* @__PURE__ */ jsxRuntime.jsx(
20303
- chunk5D5YDIBC_cjs.TagColumnHeader,
20303
+ chunkNUAC5GTQ_cjs.TagColumnHeader,
20304
20304
  {
20305
20305
  isCentered: isCheckbox,
20306
20306
  sort,
20307
20307
  onSort: params.enableSorting ? (additive) => params.progressSort(additive) : void 0,
20308
- filter: /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FilterButton, { params, colId: tag.external_id }),
20308
+ filter: /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FilterButton, { params, colId: tag.external_id }),
20309
20309
  label: /* @__PURE__ */ jsxRuntime.jsx(ConnectedTagEntity, { tag, size: "sm" })
20310
20310
  }
20311
20311
  );
@@ -20394,7 +20394,7 @@ function createTagColumn({
20394
20394
  }
20395
20395
  ) : void 0,
20396
20396
  // Use default rendering for text/number/select - shows value with truncation
20397
- cellEditor: isSelect ? chunk5D5YDIBC_cjs.MultiSelectCellEditor : isText ? "agLargeTextCellEditor" : void 0,
20397
+ cellEditor: isSelect ? chunkNUAC5GTQ_cjs.MultiSelectCellEditor : isText ? "agLargeTextCellEditor" : void 0,
20398
20398
  cellEditorParams: isSelect ? createMultiSelectCellEditorParams(tag.tag_type.options || []) : isText ? { rows: 8, cols: 50 } : void 0,
20399
20399
  cellEditorPopup: isText || isSelect,
20400
20400
  // Text and Select tags use popup editor for better UX
@@ -20511,8 +20511,8 @@ function createDocumentColumns({
20511
20511
  onToggleShared,
20512
20512
  notify: notify14
20513
20513
  }) {
20514
- const isRowEditableByOwner = (params) => chunk5D5YDIBC_cjs.canChangeVisibility(params.data, currentUserExtId);
20515
- const isRowEditableByMember = (params) => chunk5D5YDIBC_cjs.canEditDocumentFields(params.data, currentUserExtId, workspaceRole);
20514
+ const isRowEditableByOwner = (params) => chunkNUAC5GTQ_cjs.canChangeVisibility(params.data, currentUserExtId);
20515
+ const isRowEditableByMember = (params) => chunkNUAC5GTQ_cjs.canEditDocumentFields(params.data, currentUserExtId, workspaceRole);
20516
20516
  const documentNameCellRenderer = (params) => {
20517
20517
  const doc = params.data;
20518
20518
  if (!doc) return null;
@@ -20717,7 +20717,7 @@ function createDocumentColumns({
20717
20717
  singleClickEdit: true,
20718
20718
  cellEditor: "agSelectCellEditor",
20719
20719
  cellEditorParams: {
20720
- values: [...chunk5D5YDIBC_cjs.DOCUMENT_TYPE_OPTIONS]
20720
+ values: [...chunkNUAC5GTQ_cjs.DOCUMENT_TYPE_OPTIONS]
20721
20721
  },
20722
20722
  context: { icon: lucideReact.Sparkles },
20723
20723
  valueGetter: (params) => ui.getDocumentNature(params.data) || "",
@@ -21255,7 +21255,7 @@ function useDocumentTable({
21255
21255
  }
21256
21256
  const stabilizedTagIds = prevTagIdsRef.current;
21257
21257
  const stabilizedTagNames = prevTagNamesRef.current;
21258
- const defaultVisibleColumns = react.useMemo(() => [...chunk5D5YDIBC_cjs.DEFAULT_DOCUMENT_COLUMNS], []);
21258
+ const defaultVisibleColumns = react.useMemo(() => [...chunkNUAC5GTQ_cjs.DEFAULT_DOCUMENT_COLUMNS], []);
21259
21259
  const toggleShared = react.useCallback((docId, shared) => {
21260
21260
  updateDocRef.current.mutate({ documents: [{ external_id: docId, shared }] });
21261
21261
  }, []);
@@ -21518,10 +21518,10 @@ function ConnectedFilesBulkActions({
21518
21518
  const bulk = useDocumentBulkActions(selectedDocuments);
21519
21519
  const count2 = selectedDocuments.length;
21520
21520
  const noun = ui.getEntityLabel("DOCUMENT", count2 === 1 ? "SINGULAR" : "PLURAL");
21521
- const shareState = chunk5D5YDIBC_cjs.shareStateOf(bulk.freshSelectedDocuments);
21521
+ const shareState = chunkNUAC5GTQ_cjs.shareStateOf(bulk.freshSelectedDocuments);
21522
21522
  const handleToggleShare = async (shouldShare) => {
21523
21523
  if (shouldShare) return bulk.share();
21524
- const confirmed = await chunk5D5YDIBC_cjs.confirmHideFromMembers(
21524
+ const confirmed = await chunkNUAC5GTQ_cjs.confirmHideFromMembers(
21525
21525
  confirm,
21526
21526
  bulk.freshSelectedDocuments.length,
21527
21527
  members
@@ -21544,7 +21544,7 @@ function ConnectedFilesBulkActions({
21544
21544
  const { openDocumentsChat, openFieldsManager } = actions;
21545
21545
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
21546
21546
  /* @__PURE__ */ jsxRuntime.jsx(
21547
- chunk5D5YDIBC_cjs.BulkActionsBar,
21547
+ chunkNUAC5GTQ_cjs.BulkActionsBar,
21548
21548
  {
21549
21549
  count: count2,
21550
21550
  onClear: onClearSelection,
@@ -21569,12 +21569,12 @@ function ConnectedFilesBulkActions({
21569
21569
  onDelete: () => setConfirming("delete"),
21570
21570
  shareState,
21571
21571
  shareLabels: shareState === "shared" ? { share: "Make private" } : void 0,
21572
- shareTooltip: chunk5D5YDIBC_cjs.shareTooltipFor(shareState, bulk.freshSelectedDocuments.length === 1),
21572
+ shareTooltip: chunkNUAC5GTQ_cjs.shareTooltipFor(shareState, bulk.freshSelectedDocuments.length === 1),
21573
21573
  onToggleShare: (shouldShare) => void handleToggleShare(shouldShare)
21574
21574
  }
21575
21575
  ),
21576
21576
  /* @__PURE__ */ jsxRuntime.jsx(
21577
- chunkZAVEMQ37_cjs.ConfirmDialog,
21577
+ chunkDWZXSPMB_cjs.ConfirmDialog,
21578
21578
  {
21579
21579
  isOpen: confirming === "delete",
21580
21580
  onClose: () => setConfirming(null),
@@ -21584,13 +21584,13 @@ function ConnectedFilesBulkActions({
21584
21584
  onClearSelection();
21585
21585
  },
21586
21586
  title: `Delete ${count2} ${noun}`,
21587
- description: `Delete ${namedTargets(selectedDocuments)}? ${count2 === 1 ? chunk5D5YDIBC_cjs.RECENTLY_DELETED_HINT : chunk5D5YDIBC_cjs.RECENTLY_DELETED_HINT_PLURAL}`,
21587
+ description: `Delete ${namedTargets(selectedDocuments)}? ${count2 === 1 ? chunkNUAC5GTQ_cjs.RECENTLY_DELETED_HINT : chunkNUAC5GTQ_cjs.RECENTLY_DELETED_HINT_PLURAL}`,
21588
21588
  confirmText: "Delete",
21589
21589
  variant: "destructive"
21590
21590
  }
21591
21591
  ),
21592
21592
  /* @__PURE__ */ jsxRuntime.jsx(
21593
- chunkZAVEMQ37_cjs.ConfirmDialog,
21593
+ chunkDWZXSPMB_cjs.ConfirmDialog,
21594
21594
  {
21595
21595
  isOpen: confirming === "reprocess",
21596
21596
  onClose: () => setConfirming(null),
@@ -22102,7 +22102,7 @@ function useDocumentFilters({
22102
22102
  [documentFilters]
22103
22103
  );
22104
22104
  const baseFilteredDocuments = react.useMemo(
22105
- () => chunkUUN2WGGM_cjs.applyInvertedIndexFilter(documents, documentFilters, invertedIndex, getDocId),
22105
+ () => chunkXGFNZTPO_cjs.applyInvertedIndexFilter(documents, documentFilters, invertedIndex, getDocId),
22106
22106
  [documents, documentFilters, invertedIndex]
22107
22107
  );
22108
22108
  const filteredDocuments = react.useMemo(() => {
@@ -22284,7 +22284,7 @@ function useDocumentFilters({
22284
22284
  const folderPath = react.useMemo(() => {
22285
22285
  for (const [key, state] of documentFilters) {
22286
22286
  if (key.startsWith("folder:") && key !== "folder:none" && state === "include") {
22287
- return chunk5D5YDIBC_cjs.parseFolderSegments(key.slice("folder:".length));
22287
+ return chunkNUAC5GTQ_cjs.parseFolderSegments(key.slice("folder:".length));
22288
22288
  }
22289
22289
  }
22290
22290
  return [];
@@ -22293,7 +22293,7 @@ function useDocumentFilters({
22293
22293
  (path) => {
22294
22294
  const next = new Map(documentFilters);
22295
22295
  for (const key of next.keys()) if (key.startsWith("folder:")) next.set(key, null);
22296
- const joined = chunk5D5YDIBC_cjs.joinFolderPath(path);
22296
+ const joined = chunkNUAC5GTQ_cjs.joinFolderPath(path);
22297
22297
  if (joined) next.set(`folder:${joined}`, "include");
22298
22298
  setDocumentFilters(next);
22299
22299
  },
@@ -22585,7 +22585,7 @@ function ConnectedAiReview({
22585
22585
  }, [kind]);
22586
22586
  const description = phase === "ask" ? `Ask one question \u2014 ARBI answers it for each of the ${docCount} ${scope} document${plural4(docCount)}.` : aiCellsTotal > 0 ? reviewProgress(aiCellsDone, aiCellsEmpty, aiCellsTotal) : `Applied to ${rows.length} document${plural4(rows.length)}`;
22587
22587
  return /* @__PURE__ */ jsxRuntime.jsx(
22588
- chunk5D5YDIBC_cjs.AiReviewDialogView,
22588
+ chunkNUAC5GTQ_cjs.AiReviewDialogView,
22589
22589
  {
22590
22590
  open,
22591
22591
  onOpenChange: handleOpenChange,
@@ -22653,12 +22653,12 @@ function ConnectedMoveToFolder({
22653
22653
  setIsSubmitting(true);
22654
22654
  try {
22655
22655
  if (folderToMove) {
22656
- const docsInFolder = chunk5D5YDIBC_cjs.collectFolderDocs(allDocs, folderToMove.path);
22656
+ const docsInFolder = chunkNUAC5GTQ_cjs.collectFolderDocs(allDocs, folderToMove.path);
22657
22657
  if (docsInFolder.length === 0) {
22658
22658
  onClose();
22659
22659
  return;
22660
22660
  }
22661
- const newPrefixSegments = targetFolder ? [...chunk5D5YDIBC_cjs.parseFolderSegments(targetFolder), folderToMove.name] : [folderToMove.name];
22661
+ const newPrefixSegments = targetFolder ? [...chunkNUAC5GTQ_cjs.parseFolderSegments(targetFolder), folderToMove.name] : [folderToMove.name];
22662
22662
  await renameFolder(docsInFolder, folderToMove.path, newPrefixSegments);
22663
22663
  const dest = targetFolder ? `"${targetFolder}/${folderToMove.name}"` : `"${folderToMove.name}" (root)`;
22664
22664
  notify14(`Moved folder to ${dest}`, "success");
@@ -22685,7 +22685,7 @@ function ConnectedMoveToFolder({
22685
22685
  const isFolderMode = !!folderToMove;
22686
22686
  const folders = useDocumentFolders(allDocs, targetFolder);
22687
22687
  return /* @__PURE__ */ jsxRuntime.jsx(
22688
- chunk5D5YDIBC_cjs.MoveToFolderDialog,
22688
+ chunkNUAC5GTQ_cjs.MoveToFolderDialog,
22689
22689
  {
22690
22690
  open: isOpen,
22691
22691
  onClose,
@@ -22695,7 +22695,7 @@ function ConnectedMoveToFolder({
22695
22695
  isSubmitting,
22696
22696
  onConfirm: handleMove,
22697
22697
  children: /* @__PURE__ */ jsxRuntime.jsx(
22698
- chunk5D5YDIBC_cjs.FolderCommandList,
22698
+ chunkNUAC5GTQ_cjs.FolderCommandList,
22699
22699
  {
22700
22700
  folders,
22701
22701
  value: targetFolder,
@@ -23090,7 +23090,7 @@ function ConnectedFieldsEditor({
23090
23090
  const [sortBy, setSortBy] = react.useState("name-asc");
23091
23091
  const [filterText, setFilterText] = react.useState("");
23092
23092
  const fieldRows = react.useMemo(
23093
- () => browser.flattenTagTree(chunk5D5YDIBC_cjs.sortFields(chunk5D5YDIBC_cjs.filterFieldsByName(tags, filterText), sortBy)),
23093
+ () => browser.flattenTagTree(chunkNUAC5GTQ_cjs.sortFields(chunkNUAC5GTQ_cjs.filterFieldsByName(tags, filterText), sortBy)),
23094
23094
  [tags, filterText, sortBy]
23095
23095
  );
23096
23096
  const exportItems = react.useMemo(
@@ -23110,7 +23110,7 @@ function ConnectedFieldsEditor({
23110
23110
  setIsDeleting(false);
23111
23111
  }
23112
23112
  };
23113
- const copy = chunk5D5YDIBC_cjs.fieldsApplyBarCopy({
23113
+ const copy = chunkNUAC5GTQ_cjs.fieldsApplyBarCopy({
23114
23114
  nouns,
23115
23115
  targetNoun,
23116
23116
  fieldCount,
@@ -23119,9 +23119,9 @@ function ConnectedFieldsEditor({
23119
23119
  isApplying,
23120
23120
  isClearing
23121
23121
  });
23122
- return /* @__PURE__ */ jsxRuntime.jsxs(chunk5D5YDIBC_cjs.FieldsEditorRoot, { children: [
23122
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkNUAC5GTQ_cjs.FieldsEditorRoot, { children: [
23123
23123
  /* @__PURE__ */ jsxRuntime.jsx(
23124
- chunk5D5YDIBC_cjs.FieldsEditorToolbar,
23124
+ chunkNUAC5GTQ_cjs.FieldsEditorToolbar,
23125
23125
  {
23126
23126
  nouns,
23127
23127
  onNew: () => {
@@ -23149,11 +23149,11 @@ function ConnectedFieldsEditor({
23149
23149
  onSortByChange: setSortBy
23150
23150
  }
23151
23151
  ),
23152
- /* @__PURE__ */ jsxRuntime.jsxs(chunk5D5YDIBC_cjs.FieldsEditorList, { children: [
23152
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkNUAC5GTQ_cjs.FieldsEditorList, { children: [
23153
23153
  fieldRows.map(({ tag, depth, childCount }) => {
23154
23154
  const isEditingThis = editingTagId === tag.external_id;
23155
23155
  return /* @__PURE__ */ jsxRuntime.jsx(
23156
- chunk5D5YDIBC_cjs.FieldRow,
23156
+ chunkNUAC5GTQ_cjs.FieldRow,
23157
23157
  {
23158
23158
  tagId: tag.external_id,
23159
23159
  name: tag.name,
@@ -23206,10 +23206,10 @@ function ConnectedFieldsEditor({
23206
23206
  tag.external_id
23207
23207
  );
23208
23208
  }),
23209
- fieldRows.length === 0 && !isCreatingTag && /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FieldsEmptyState, { children: chunk5D5YDIBC_cjs.fieldsEmptyText({ nouns, filterText, hasKind: !!kind }) })
23209
+ fieldRows.length === 0 && !isCreatingTag && /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FieldsEmptyState, { children: chunkNUAC5GTQ_cjs.fieldsEmptyText({ nouns, filterText, hasKind: !!kind }) })
23210
23210
  ] }),
23211
23211
  /* @__PURE__ */ jsxRuntime.jsx(
23212
- chunk5D5YDIBC_cjs.FieldsApplyBar,
23212
+ chunkNUAC5GTQ_cjs.FieldsApplyBar,
23213
23213
  {
23214
23214
  hint: copy.hint,
23215
23215
  applyLabel: copy.applyLabel,
@@ -23286,8 +23286,8 @@ function ConnectedFieldsManager({
23286
23286
  }
23287
23287
  );
23288
23288
  const body = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
23289
- /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FieldsManagerDefinition, { children: DEFINITIONS[activeKind] }),
23290
- /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FieldsManagerBody, { children: /* @__PURE__ */ jsxRuntime.jsx(
23289
+ /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FieldsManagerDefinition, { children: DEFINITIONS[activeKind] }),
23290
+ /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FieldsManagerBody, { children: /* @__PURE__ */ jsxRuntime.jsx(
23291
23291
  ConnectedFieldsEditor,
23292
23292
  {
23293
23293
  group: activeKind,
@@ -23306,7 +23306,7 @@ function ConnectedFieldsManager({
23306
23306
  "data-testid": "fields-manager-dialog",
23307
23307
  children: [
23308
23308
  /* @__PURE__ */ jsxRuntime.jsxs(ui.DialogHeader, { className: "px-4 py-3 border-b", children: [
23309
- /* @__PURE__ */ jsxRuntime.jsx(ui.DialogTitle, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FieldsManagerTitle, { title }) }),
23309
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DialogTitle, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FieldsManagerTitle, { title }) }),
23310
23310
  /* @__PURE__ */ jsxRuntime.jsx(ui.DialogDescription, { className: "sr-only", children: "Create, edit, and delete labels and annotations for your workspace documents." })
23311
23311
  ] }),
23312
23312
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 py-2 border-b", children: tabHeader }),
@@ -23316,8 +23316,8 @@ function ConnectedFieldsManager({
23316
23316
  ) });
23317
23317
  }
23318
23318
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-full", children: [
23319
- /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.DraggableHeader, { children: [
23320
- /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FieldsManagerTitle, { title, className: "px-4 pt-3.5 pb-2" }),
23319
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.DraggableHeader, { children: [
23320
+ /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FieldsManagerTitle, { title, className: "px-4 pt-3.5 pb-2" }),
23321
23321
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-3", children: tabHeader })
23322
23322
  ] }),
23323
23323
  body
@@ -23570,7 +23570,7 @@ function ConnectedBulkTagEditor({
23570
23570
  const documentsLabel = ui.getEntityLabel("DOCUMENT", "PLURAL").toLowerCase();
23571
23571
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
23572
23572
  /* @__PURE__ */ jsxRuntime.jsx(
23573
- chunk5D5YDIBC_cjs.BulkTagEditorDialog,
23573
+ chunkNUAC5GTQ_cjs.BulkTagEditorDialog,
23574
23574
  {
23575
23575
  open,
23576
23576
  onClose,
@@ -23607,7 +23607,7 @@ function ConnectedBulkTagEditor({
23607
23607
  }
23608
23608
  ),
23609
23609
  /* @__PURE__ */ jsxRuntime.jsx(
23610
- chunkZAVEMQ37_cjs.ConfirmDialog,
23610
+ chunkDWZXSPMB_cjs.ConfirmDialog,
23611
23611
  {
23612
23612
  isOpen: showConfirmation,
23613
23613
  onClose: () => setShowConfirmation(false),
@@ -23628,7 +23628,7 @@ function ConnectedBulkTagEditor({
23628
23628
  }
23629
23629
  ),
23630
23630
  /* @__PURE__ */ jsxRuntime.jsx(
23631
- chunk5D5YDIBC_cjs.BulkReplaceDialog,
23631
+ chunkNUAC5GTQ_cjs.BulkReplaceDialog,
23632
23632
  {
23633
23633
  open: showGenerateConfirmation,
23634
23634
  onClose: () => setShowGenerateConfirmation(false),
@@ -23658,7 +23658,7 @@ function FolderPicker({
23658
23658
  onSelect
23659
23659
  }) {
23660
23660
  const folders = useDocumentFolders(documents, value);
23661
- return /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FolderCommandList, { folders, value, onSelect, showRemove: !!value });
23661
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FolderCommandList, { folders, value, onSelect, showRemove: !!value });
23662
23662
  }
23663
23663
  function RelatedDocuments({
23664
23664
  doc,
@@ -23691,7 +23691,7 @@ function DocTagAttribution({ doctag }) {
23691
23691
  updater && `Updated ${ui.formatFriendlyDate(doctag.updated_at)} by ${updater.given_name || updater.email}`
23692
23692
  ].filter((line) => !!line);
23693
23693
  return /* @__PURE__ */ jsxRuntime.jsx(
23694
- chunk5D5YDIBC_cjs.FieldAttribution,
23694
+ chunkNUAC5GTQ_cjs.FieldAttribution,
23695
23695
  {
23696
23696
  avatar: /* @__PURE__ */ jsxRuntime.jsx(DocumentUser, { user: lastUser, tooltip: false }),
23697
23697
  date: ui.formatFriendlyDate(updater ? doctag.updated_at : doctag.created_at),
@@ -23721,7 +23721,7 @@ function LabelsCombobox({
23721
23721
  else if (!appliedTagIds.has(existing.external_id)) onToggle(existing);
23722
23722
  };
23723
23723
  return /* @__PURE__ */ jsxRuntime.jsx(
23724
- chunk5D5YDIBC_cjs.FieldLabelsSelect,
23724
+ chunkNUAC5GTQ_cjs.FieldLabelsSelect,
23725
23725
  {
23726
23726
  options: options2,
23727
23727
  appliedIds: appliedTagIds,
@@ -23743,15 +23743,15 @@ var METADATA_FIELDS = {
23743
23743
  };
23744
23744
  var INPUT_CLASS = "text-sm bg-muted/40 focus:bg-background transition-colors";
23745
23745
  var READ_ONLY_FIELDS = {
23746
- file_name: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FieldValue, { tone: "strong", children: doc.file_name || "N/A" }),
23747
- status: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FieldValue, { tone: "muted", children: doc.status || "N/A" }),
23748
- n_pages: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FieldValue, { tone: "muted", children: doc.n_pages || "N/A" }),
23749
- created_at: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FieldValue, { tone: "muted", children: doc.created_at ? ui.formatFriendlyDate(doc.created_at) : "N/A" }),
23750
- updated_at: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FieldValue, { tone: "muted", children: doc.updated_at ? ui.formatFriendlyDate(doc.updated_at) : "N/A" }),
23751
- file_type: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FieldValue, { tone: "muted", children: ui.friendlyFileType(doc.file_type, doc.file_name) }),
23752
- file_size: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FieldValue, { tone: "muted", children: doc.file_size ? `${Math.round(doc.file_size / 1024)} KB` : "N/A" }),
23753
- doc_id: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FieldValue, { tone: "muted", isMono: true, children: doc.external_id || "N/A" }),
23754
- content_hash: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FieldValue, { tone: "muted", isMono: true, isTruncated: true, children: doc.content_hash || "N/A" })
23746
+ file_name: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FieldValue, { tone: "strong", children: doc.file_name || "N/A" }),
23747
+ status: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FieldValue, { tone: "muted", children: doc.status || "N/A" }),
23748
+ n_pages: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FieldValue, { tone: "muted", children: doc.n_pages || "N/A" }),
23749
+ created_at: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FieldValue, { tone: "muted", children: doc.created_at ? ui.formatFriendlyDate(doc.created_at) : "N/A" }),
23750
+ updated_at: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FieldValue, { tone: "muted", children: doc.updated_at ? ui.formatFriendlyDate(doc.updated_at) : "N/A" }),
23751
+ file_type: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FieldValue, { tone: "muted", children: ui.friendlyFileType(doc.file_type, doc.file_name) }),
23752
+ file_size: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FieldValue, { tone: "muted", children: doc.file_size ? `${Math.round(doc.file_size / 1024)} KB` : "N/A" }),
23753
+ doc_id: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FieldValue, { tone: "muted", isMono: true, children: doc.external_id || "N/A" }),
23754
+ content_hash: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FieldValue, { tone: "muted", isMono: true, isTruncated: true, children: doc.content_hash || "N/A" })
23755
23755
  };
23756
23756
  function documentFieldContent(options2) {
23757
23757
  const { columnId, doc, canEdit, workspaceTags, getColumnLabel, getColumnIcon } = options2;
@@ -23774,7 +23774,7 @@ function documentFieldContent(options2) {
23774
23774
  placeholder: `Add ${getColumnLabel(columnId).toLowerCase()}\u2026`,
23775
23775
  className: INPUT_CLASS
23776
23776
  }
23777
- ) : /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FieldValue, { children: metadata(doc) || "N/A" })
23777
+ ) : /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FieldValue, { children: metadata(doc) || "N/A" })
23778
23778
  );
23779
23779
  }
23780
23780
  const readOnly = READ_ONLY_FIELDS[columnId];
@@ -23783,7 +23783,7 @@ function documentFieldContent(options2) {
23783
23783
  if (columnId === "folder") {
23784
23784
  return standard(
23785
23785
  canEdit ? /* @__PURE__ */ jsxRuntime.jsx(
23786
- chunk5D5YDIBC_cjs.FieldFolderSelect,
23786
+ chunkNUAC5GTQ_cjs.FieldFolderSelect,
23787
23787
  {
23788
23788
  folder: doc.folder,
23789
23789
  picker: /* @__PURE__ */ jsxRuntime.jsx(
@@ -23795,7 +23795,7 @@ function documentFieldContent(options2) {
23795
23795
  }
23796
23796
  )
23797
23797
  }
23798
- ) : /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FieldFolderValue, { folder: doc.folder })
23798
+ ) : /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FieldFolderValue, { folder: doc.folder })
23799
23799
  );
23800
23800
  }
23801
23801
  if (columnId === "related") {
@@ -23837,7 +23837,7 @@ function documentFieldContent(options2) {
23837
23837
  let value;
23838
23838
  if (tag.tag_type.type === "select") {
23839
23839
  value = /* @__PURE__ */ jsxRuntime.jsx(
23840
- chunk5D5YDIBC_cjs.FieldNativeSelect,
23840
+ chunkNUAC5GTQ_cjs.FieldNativeSelect,
23841
23841
  {
23842
23842
  value: doctag?.note || "",
23843
23843
  options: tag.tag_type.options,
@@ -23871,7 +23871,7 @@ function documentFieldContent(options2) {
23871
23871
  return {
23872
23872
  label: tag.name,
23873
23873
  tag,
23874
- children: doctag ? /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FieldWithAttribution, { attribution: /* @__PURE__ */ jsxRuntime.jsx(DocTagAttribution, { doctag }), children: value }) : value
23874
+ children: doctag ? /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FieldWithAttribution, { attribution: /* @__PURE__ */ jsxRuntime.jsx(DocTagAttribution, { doctag }), children: value }) : value
23875
23875
  };
23876
23876
  }
23877
23877
 
@@ -23974,7 +23974,7 @@ function ViewSelector({
23974
23974
  columns: defaultColumns,
23975
23975
  icon: lucideReact.Table,
23976
23976
  // Both built-ins load at the minimal (compact) row height.
23977
- rowHeight: chunk5D5YDIBC_cjs.DOCUMENTS_ROW_HEIGHT_INITIAL,
23977
+ rowHeight: chunkNUAC5GTQ_cjs.DOCUMENTS_ROW_HEIGHT_INITIAL,
23978
23978
  // [] = loading this view unpins everything.
23979
23979
  pinnedLeft: []
23980
23980
  },
@@ -23985,15 +23985,15 @@ function ViewSelector({
23985
23985
  // batch-select checkbox and Title stay fixed left while scrolling.
23986
23986
  columns: defaultColumns,
23987
23987
  icon: lucideReact.Columns3,
23988
- rowHeight: chunk5D5YDIBC_cjs.DOCUMENTS_ROW_HEIGHT_INITIAL,
23988
+ rowHeight: chunkNUAC5GTQ_cjs.DOCUMENTS_ROW_HEIGHT_INITIAL,
23989
23989
  pinnedLeft: DOCUMENT_VIEW_PINNED
23990
23990
  },
23991
23991
  {
23992
23992
  key: "email-default",
23993
23993
  label: "Email view",
23994
- columns: [...chunk5D5YDIBC_cjs.EMAIL_VIEW_COLUMNS],
23994
+ columns: [...chunkNUAC5GTQ_cjs.EMAIL_VIEW_COLUMNS],
23995
23995
  icon: lucideReact.Mail,
23996
- rowHeight: chunk5D5YDIBC_cjs.DOCUMENTS_ROW_HEIGHT_INITIAL,
23996
+ rowHeight: chunkNUAC5GTQ_cjs.DOCUMENTS_ROW_HEIGHT_INITIAL,
23997
23997
  pinnedLeft: []
23998
23998
  }
23999
23999
  ],
@@ -24017,7 +24017,7 @@ function ViewSelector({
24017
24017
  },
24018
24018
  [confirm, workspaceId, deleteView, notify14]
24019
24019
  );
24020
- const menu = chunk5D5YDIBC_cjs.useGridViews({
24020
+ const menu = chunkNUAC5GTQ_cjs.useGridViews({
24021
24021
  getGridApi,
24022
24022
  defaultColumns,
24023
24023
  builtins,
@@ -24032,7 +24032,7 @@ function ViewSelector({
24032
24032
  onDeleteView,
24033
24033
  isSaving
24034
24034
  });
24035
- return /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.ViewSelectorMenu, { ...menu });
24035
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.ViewSelectorMenu, { ...menu });
24036
24036
  }
24037
24037
  function DocumentsFilterBarActions({
24038
24038
  isModal,
@@ -24072,7 +24072,7 @@ function DocumentsFilterBarActions({
24072
24072
  ),
24073
24073
  documentsViewMode === "grid" && // The phone list is a fixed two-line layout, so row density only applies from sm up.
24074
24074
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "hidden sm:block", children: /* @__PURE__ */ jsxRuntime.jsx(
24075
- chunk5D5YDIBC_cjs.RowDensityControl,
24075
+ chunkNUAC5GTQ_cjs.RowDensityControl,
24076
24076
  {
24077
24077
  rowHeight: documentsRowHeight,
24078
24078
  onRowHeightChange: onDocumentsRowHeightChange
@@ -24240,7 +24240,7 @@ function DocumentsUploadButton({
24240
24240
  [hasAccountProviders, onSelectSource, onEmailWorkspace, onCreateNew, onTakePhoto]
24241
24241
  );
24242
24242
  return /* @__PURE__ */ jsxRuntime.jsx(
24243
- chunk5D5YDIBC_cjs.FilesAddMenu,
24243
+ chunkNUAC5GTQ_cjs.FilesAddMenu,
24244
24244
  {
24245
24245
  items,
24246
24246
  isCompact,
@@ -24353,7 +24353,7 @@ function ConnectedFilesPage({
24353
24353
  const deleteDocuments = react$1.useDeleteDocuments();
24354
24354
  const isDocumentsPending = isLoading && documents.length === 0;
24355
24355
  const { workspaceId, userId, live } = chunkAYKE6USO_cjs.useConnectedWorkspace();
24356
- const { role, members } = chunkNVVBRQN2_cjs.useConnectedWorkspaceRole();
24356
+ const { role, members } = chunkPTSTVYQD_cjs.useConnectedWorkspaceRole();
24357
24357
  const { data: workspaces } = react$1.useWorkspaces({ enabled: live });
24358
24358
  const workspaceName = workspaces?.find((w) => w.external_id === workspaceId)?.name;
24359
24359
  const isMember = role != null;
@@ -24445,17 +24445,17 @@ function ConnectedFilesPage({
24445
24445
  }, [relatedDocsMap, onRelatedDocsChange]);
24446
24446
  const defaultVisibleColumns = react.useMemo(
24447
24447
  () => [
24448
- ...chunk5D5YDIBC_cjs.DEFAULT_DOCUMENT_COLUMNS,
24448
+ ...chunkNUAC5GTQ_cjs.DEFAULT_DOCUMENT_COLUMNS,
24449
24449
  ...allTags.filter(browser.isAnnotationTag).map((tag) => tag.external_id)
24450
24450
  ],
24451
24451
  [allTags]
24452
24452
  );
24453
24453
  const handleReorderColumns = react.useCallback((ids, gridApi2) => {
24454
- if (gridApi2) chunk5D5YDIBC_cjs.applyColumnLayout(gridApi2, ids);
24454
+ if (gridApi2) chunkNUAC5GTQ_cjs.applyColumnLayout(gridApi2, ids);
24455
24455
  }, []);
24456
24456
  const handleLoadView = react.useCallback(
24457
24457
  (view, gridApi2) => {
24458
- chunk5D5YDIBC_cjs.applyViewColumns(gridApi2, view, handleReorderColumns);
24458
+ chunkNUAC5GTQ_cjs.applyViewColumns(gridApi2, view, handleReorderColumns);
24459
24459
  if (typeof view.tile_size === "number") setExplorerTileSize(view.tile_size);
24460
24460
  if (typeof view.row_height === "number") setRowHeight(view.row_height);
24461
24461
  },
@@ -24548,7 +24548,7 @@ function ConnectedFilesPage({
24548
24548
  );
24549
24549
  const currentDocument = viewingDocumentId ? filteredDocuments.find((d) => d.external_id === viewingDocumentId) ?? documents.find((d) => d.external_id === viewingDocumentId) ?? null : null;
24550
24550
  const navigatorDocuments = react.useMemo(
24551
- () => chunk5D5YDIBC_cjs.sortExplorerFiles(filteredDocuments, explorerSort, explorerSortReversed),
24551
+ () => chunkNUAC5GTQ_cjs.sortExplorerFiles(filteredDocuments, explorerSort, explorerSortReversed),
24552
24552
  [filteredDocuments, explorerSort, explorerSortReversed]
24553
24553
  );
24554
24554
  const navigatorOnNavigate = react.useCallback(
@@ -24615,7 +24615,7 @@ function ConnectedFilesPage({
24615
24615
  },
24616
24616
  rowHeight
24617
24617
  };
24618
- const documentsTabActions = /* @__PURE__ */ jsxRuntime.jsxs(chunk5D5YDIBC_cjs.FilesFilterBar, { children: [
24618
+ const documentsTabActions = /* @__PURE__ */ jsxRuntime.jsxs(chunkNUAC5GTQ_cjs.FilesFilterBar, { children: [
24619
24619
  /* @__PURE__ */ jsxRuntime.jsx(
24620
24620
  chunk2EI7NCUA_cjs.FilterInput,
24621
24621
  {
@@ -24650,7 +24650,7 @@ function ConnectedFilesPage({
24650
24650
  ),
24651
24651
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [
24652
24652
  /* @__PURE__ */ jsxRuntime.jsx(
24653
- chunk5D5YDIBC_cjs.DocumentsFolderButton,
24653
+ chunkNUAC5GTQ_cjs.DocumentsFolderButton,
24654
24654
  {
24655
24655
  documents,
24656
24656
  documentFilters,
@@ -24658,7 +24658,7 @@ function ConnectedFilesPage({
24658
24658
  onNewFolder: canUpload ? handleNewFolder : void 0
24659
24659
  }
24660
24660
  ),
24661
- onOpenTags && /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FilesTagsButton, { onClick: onOpenTags }),
24661
+ onOpenTags && /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FilesTagsButton, { onClick: onOpenTags }),
24662
24662
  headerExtras
24663
24663
  ] })
24664
24664
  ] });
@@ -24681,9 +24681,9 @@ function ConnectedFilesPage({
24681
24681
  );
24682
24682
  const reviewGridId = isModal ? "documents-modal-grid-v6" : "documents-main-grid-v6";
24683
24683
  const showBulkBar = (viewMode === "grid" || viewMode === "explorer" || viewMode === "navigator") && documents.length > 0;
24684
- return /* @__PURE__ */ jsxRuntime.jsxs(chunk5D5YDIBC_cjs.FilesPage, { isModal, ref: setPageEl, children: [
24684
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkNUAC5GTQ_cjs.FilesPage, { isModal, ref: setPageEl, children: [
24685
24685
  /* @__PURE__ */ jsxRuntime.jsx(
24686
- chunk5D5YDIBC_cjs.UrlInputDialog,
24686
+ chunkNUAC5GTQ_cjs.UrlInputDialog,
24687
24687
  {
24688
24688
  open: urlDialogOpen,
24689
24689
  onOpenChange: setUrlDialogOpen,
@@ -24692,7 +24692,7 @@ function ConnectedFilesPage({
24692
24692
  titleIcon: workspaceIcon
24693
24693
  }
24694
24694
  ),
24695
- /* @__PURE__ */ jsxRuntime.jsxs(chunk5D5YDIBC_cjs.FilesPageHeader, { children: [
24695
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkNUAC5GTQ_cjs.FilesPageHeader, { children: [
24696
24696
  /* @__PURE__ */ jsxRuntime.jsx(
24697
24697
  chunkMEMWZ72Y_cjs.TabHeader,
24698
24698
  {
@@ -24713,7 +24713,7 @@ function ConnectedFilesPage({
24713
24713
  activeTabId: "documents",
24714
24714
  onTabChange: () => handleViewModeChange(lastDocsViewRef.current),
24715
24715
  firstTabContent: isNarrowFilterRow ? null : documentsTabActions,
24716
- centerContent: /* @__PURE__ */ jsxRuntime.jsxs(chunk5D5YDIBC_cjs.FilesViewCenter, { className: isNarrowFilterRow ? "min-w-0" : void 0, children: [
24716
+ centerContent: /* @__PURE__ */ jsxRuntime.jsxs(chunkNUAC5GTQ_cjs.FilesViewCenter, { className: isNarrowFilterRow ? "min-w-0" : void 0, children: [
24717
24717
  !isNarrowFilterRow && viewToggle,
24718
24718
  /* @__PURE__ */ jsxRuntime.jsx(ProgressiveLoadingChip, {})
24719
24719
  ] }),
@@ -24743,14 +24743,14 @@ function ConnectedFilesPage({
24743
24743
  }
24744
24744
  ),
24745
24745
  /* @__PURE__ */ jsxRuntime.jsx(
24746
- chunk5D5YDIBC_cjs.FilesToolbar,
24746
+ chunkNUAC5GTQ_cjs.FilesToolbar,
24747
24747
  {
24748
24748
  className: "px-3 pb-2",
24749
24749
  rightActions: viewMode === "grid" || viewMode === "explorer" || viewMode === "navigator" ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
24750
24750
  viewMode === "grid" ? (
24751
24751
  // ‹ n / N › over the table's displayed rows; a step opens the document.
24752
24752
  /* @__PURE__ */ jsxRuntime.jsx(
24753
- chunkG2Z2KARY_cjs.GridRowNavigator,
24753
+ chunkSYTZ3UAU_cjs.GridRowNavigator,
24754
24754
  {
24755
24755
  gridApi,
24756
24756
  selectedId: viewingDocumentId ?? selectedDocumentIds[0] ?? null,
@@ -24765,7 +24765,7 @@ function ConnectedFilesPage({
24765
24765
  ) : viewMode === "explorer" ? (
24766
24766
  // The same over the explorer's tiles.
24767
24767
  /* @__PURE__ */ jsxRuntime.jsx(
24768
- chunk5D5YDIBC_cjs.ExplorerFileNavigator,
24768
+ chunkNUAC5GTQ_cjs.ExplorerFileNavigator,
24769
24769
  {
24770
24770
  fileIds: explorerFileIds,
24771
24771
  selectedId: viewingDocumentId ?? selectedDocumentIds[0] ?? null,
@@ -24804,7 +24804,7 @@ function ConnectedFilesPage({
24804
24804
  }
24805
24805
  ),
24806
24806
  viewMode === "navigator" && currentDocument && /* @__PURE__ */ jsxRuntime.jsx(
24807
- chunk5D5YDIBC_cjs.NavigatorPickerBar,
24807
+ chunkNUAC5GTQ_cjs.NavigatorPickerBar,
24808
24808
  {
24809
24809
  currentDocument,
24810
24810
  documents: navigatorDocuments,
@@ -24816,11 +24816,11 @@ function ConnectedFilesPage({
24816
24816
  }
24817
24817
  )
24818
24818
  ] }),
24819
- /* @__PURE__ */ jsxRuntime.jsxs(chunk5D5YDIBC_cjs.FilesPageMain, { children: [
24819
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkNUAC5GTQ_cjs.FilesPageMain, { children: [
24820
24820
  viewMode === "grid" && /* @__PURE__ */ jsxRuntime.jsx(
24821
- chunk5D5YDIBC_cjs.DocumentGrid,
24821
+ chunkNUAC5GTQ_cjs.DocumentGrid,
24822
24822
  {
24823
- layout: chunk5D5YDIBC_cjs.resolveDocumentGridLayout(isNarrowFilterRow, isModal, isTabletWidth),
24823
+ layout: chunkNUAC5GTQ_cjs.resolveDocumentGridLayout(isNarrowFilterRow, isModal, isTabletWidth),
24824
24824
  presets: gridPresets,
24825
24825
  GridComponent,
24826
24826
  showEmptyWorkspace: documents.length === 0 && !isLoading && isMember,
@@ -24913,9 +24913,9 @@ function ConnectedFilesPage({
24913
24913
  onProduce
24914
24914
  }
24915
24915
  ),
24916
- isModal && onClose && /* @__PURE__ */ jsxRuntime.jsx(chunk5D5YDIBC_cjs.FilesModalFooter, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { variant: "outline", onClick: onClose, children: "Close" }) }),
24916
+ isModal && onClose && /* @__PURE__ */ jsxRuntime.jsx(chunkNUAC5GTQ_cjs.FilesModalFooter, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { variant: "outline", onClick: onClose, children: "Close" }) }),
24917
24917
  /* @__PURE__ */ jsxRuntime.jsx(
24918
- chunkZAVEMQ37_cjs.ConfirmDialog,
24918
+ chunkDWZXSPMB_cjs.ConfirmDialog,
24919
24919
  {
24920
24920
  isOpen: !!deleteRequest,
24921
24921
  onClose: () => requestDelete(null),
@@ -24924,7 +24924,7 @@ function ConnectedFilesPage({
24924
24924
  requestDelete(null);
24925
24925
  },
24926
24926
  title: "Delete Document",
24927
- description: deleteRequest ? `Delete "${ui.getDocumentTitle(deleteRequest, "this document")}"? ${chunk5D5YDIBC_cjs.RECENTLY_DELETED_HINT}` : "",
24927
+ description: deleteRequest ? `Delete "${ui.getDocumentTitle(deleteRequest, "this document")}"? ${chunkNUAC5GTQ_cjs.RECENTLY_DELETED_HINT}` : "",
24928
24928
  confirmText: "Delete",
24929
24929
  variant: "destructive"
24930
24930
  }
@@ -25371,10 +25371,10 @@ function ConnectedChatThread({
25371
25371
  };
25372
25372
  const History = host.ThreadHistory;
25373
25373
  return /* @__PURE__ */ jsxRuntime.jsx(
25374
- chunkOISSVUGI_cjs.DmThreadFrame,
25374
+ chunkU7OUZHBH_cjs.DmThreadFrame,
25375
25375
  {
25376
25376
  accessBanner: pendingAccessRequest ? /* @__PURE__ */ jsxRuntime.jsx(
25377
- chunkOISSVUGI_cjs.DmAccessRequestBanner,
25377
+ chunkU7OUZHBH_cjs.DmAccessRequestBanner,
25378
25378
  {
25379
25379
  name: peer?.given_name ?? "They",
25380
25380
  onReview: () => host.onReviewAccessRequest?.(pendingAccessRequest)
@@ -25747,7 +25747,7 @@ function ConnectedMessenger({
25747
25747
  ) : null;
25748
25748
  const emptyState = isLoading ? "Loading conversations\u2026" : "No one to message yet \u2014 invite a colleague above.";
25749
25749
  if (!activeId) {
25750
- return /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.PanelFrame, { testId: "dm-messenger", children: [
25750
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.PanelFrame, { testId: "dm-messenger", children: [
25751
25751
  /* @__PURE__ */ jsxRuntime.jsx(
25752
25752
  react$1.ConversationList,
25753
25753
  {
@@ -25756,9 +25756,9 @@ function ConnectedMessenger({
25756
25756
  onSelect: onOpen,
25757
25757
  emptyState,
25758
25758
  header: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
25759
- onInvite && /* @__PURE__ */ jsxRuntime.jsx(chunkOISSVUGI_cjs.DmInviteChip, { onClick: onInvite }),
25759
+ onInvite && /* @__PURE__ */ jsxRuntime.jsx(chunkU7OUZHBH_cjs.DmInviteChip, { onClick: onInvite }),
25760
25760
  PeoplePicker && /* @__PURE__ */ jsxRuntime.jsx(
25761
- chunkOISSVUGI_cjs.DmInviteChip,
25761
+ chunkU7OUZHBH_cjs.DmInviteChip,
25762
25762
  {
25763
25763
  testId: "dm-new-group-chip",
25764
25764
  title: "New group",
@@ -25777,9 +25777,9 @@ function ConnectedMessenger({
25777
25777
  const groupChat = activeIsGroup ? active.chat : null;
25778
25778
  const groupTitle = active?.title ?? null;
25779
25779
  const presence = activePeer ? host.presenceOf?.(activePeer.external_id) : void 0;
25780
- return /* @__PURE__ */ jsxRuntime.jsxs(chunkUUN2WGGM_cjs.PanelFrame, { testId: "dm-messenger", children: [
25780
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkXGFNZTPO_cjs.PanelFrame, { testId: "dm-messenger", children: [
25781
25781
  groupChat ? /* @__PURE__ */ jsxRuntime.jsx(
25782
- chunkOISSVUGI_cjs.DmThreadHeader,
25782
+ chunkU7OUZHBH_cjs.DmThreadHeader,
25783
25783
  {
25784
25784
  avatar: groupChat.kind === "meeting" ? /* @__PURE__ */ jsxRuntime.jsx(MeetingAvatar, {}) : /* @__PURE__ */ jsxRuntime.jsx(GroupAvatars, { users: active.others, host }),
25785
25785
  name: groupTitle ?? (groupChat.kind === "meeting" ? "Meeting" : "Group"),
@@ -25800,7 +25800,7 @@ function ConnectedMessenger({
25800
25800
  ] })
25801
25801
  }
25802
25802
  ) : /* @__PURE__ */ jsxRuntime.jsx(
25803
- chunkOISSVUGI_cjs.DmThreadHeader,
25803
+ chunkU7OUZHBH_cjs.DmThreadHeader,
25804
25804
  {
25805
25805
  avatar: activePeer ? avatar(activePeer) : void 0,
25806
25806
  name: activePeer ? react$1.userDisplayName(activePeer) : "Conversation",
@@ -25826,7 +25826,7 @@ function ConnectedMessenger({
25826
25826
  groupChat.external_id
25827
25827
  ) : null,
25828
25828
  peoplePicker,
25829
- /* @__PURE__ */ jsxRuntime.jsx(chunkUUN2WGGM_cjs.PanelFrameBody, { className: "flex flex-col overflow-visible", children: active ? /* @__PURE__ */ jsxRuntime.jsx(ConnectedChatThread, { chat: active.chat, peer: activePeer, host }, activeId) : /* @__PURE__ */ jsxRuntime.jsx("p", { className: "p-4 text-sm text-muted-foreground", children: isLoading ? "Loading conversation\u2026" : "This conversation is no longer available." }) })
25829
+ /* @__PURE__ */ jsxRuntime.jsx(chunkXGFNZTPO_cjs.PanelFrameBody, { className: "flex flex-col overflow-visible", children: active ? /* @__PURE__ */ jsxRuntime.jsx(ConnectedChatThread, { chat: active.chat, peer: activePeer, host }, activeId) : /* @__PURE__ */ jsxRuntime.jsx("p", { className: "p-4 text-sm text-muted-foreground", children: isLoading ? "Loading conversation\u2026" : "This conversation is no longer available." }) })
25830
25830
  ] });
25831
25831
  }
25832
25832
  function ActiveChat({ agentId, workspaceId }) {
@@ -25898,55 +25898,55 @@ function ConnectedAgentChatPanel({
25898
25898
 
25899
25899
  Object.defineProperty(exports, "CAP_REACHED_MESSAGE", {
25900
25900
  enumerable: true,
25901
- get: function () { return chunkDX5Y2NO5_cjs.CAP_REACHED_MESSAGE; }
25901
+ get: function () { return chunkYNSSIULM_cjs.CAP_REACHED_MESSAGE; }
25902
25902
  });
25903
25903
  Object.defineProperty(exports, "ZERO_BUDGET_MESSAGE", {
25904
25904
  enumerable: true,
25905
- get: function () { return chunkDX5Y2NO5_cjs.ZERO_BUDGET_MESSAGE; }
25905
+ get: function () { return chunkYNSSIULM_cjs.ZERO_BUDGET_MESSAGE; }
25906
25906
  });
25907
25907
  Object.defineProperty(exports, "aiUsageResetTimestamp", {
25908
25908
  enumerable: true,
25909
- get: function () { return chunkDX5Y2NO5_cjs.aiUsageResetTimestamp; }
25909
+ get: function () { return chunkYNSSIULM_cjs.aiUsageResetTimestamp; }
25910
25910
  });
25911
25911
  Object.defineProperty(exports, "formatMoney", {
25912
25912
  enumerable: true,
25913
- get: function () { return chunkDX5Y2NO5_cjs.formatMoney; }
25913
+ get: function () { return chunkYNSSIULM_cjs.formatMoney; }
25914
25914
  });
25915
25915
  Object.defineProperty(exports, "formatResetDate", {
25916
25916
  enumerable: true,
25917
- get: function () { return chunkDX5Y2NO5_cjs.formatResetDate; }
25917
+ get: function () { return chunkYNSSIULM_cjs.formatResetDate; }
25918
25918
  });
25919
25919
  Object.defineProperty(exports, "getQuotaItems", {
25920
25920
  enumerable: true,
25921
- get: function () { return chunkDX5Y2NO5_cjs.getQuotaItems; }
25921
+ get: function () { return chunkYNSSIULM_cjs.getQuotaItems; }
25922
25922
  });
25923
25923
  Object.defineProperty(exports, "isAddonBudgetZero", {
25924
25924
  enumerable: true,
25925
- get: function () { return chunkDX5Y2NO5_cjs.isAddonBudgetZero; }
25925
+ get: function () { return chunkYNSSIULM_cjs.isAddonBudgetZero; }
25926
25926
  });
25927
25927
  Object.defineProperty(exports, "isProProject", {
25928
25928
  enumerable: true,
25929
- get: function () { return chunkDX5Y2NO5_cjs.isProProject; }
25929
+ get: function () { return chunkYNSSIULM_cjs.isProProject; }
25930
25930
  });
25931
25931
  Object.defineProperty(exports, "planBadgeView", {
25932
25932
  enumerable: true,
25933
- get: function () { return chunkDX5Y2NO5_cjs.planBadgeView; }
25933
+ get: function () { return chunkYNSSIULM_cjs.planBadgeView; }
25934
25934
  });
25935
25935
  Object.defineProperty(exports, "planName", {
25936
25936
  enumerable: true,
25937
- get: function () { return chunkDX5Y2NO5_cjs.planName; }
25937
+ get: function () { return chunkYNSSIULM_cjs.planName; }
25938
25938
  });
25939
25939
  Object.defineProperty(exports, "projectGroupBilling", {
25940
25940
  enumerable: true,
25941
- get: function () { return chunkDX5Y2NO5_cjs.projectGroupBilling; }
25941
+ get: function () { return chunkYNSSIULM_cjs.projectGroupBilling; }
25942
25942
  });
25943
25943
  Object.defineProperty(exports, "useBillingSupport", {
25944
25944
  enumerable: true,
25945
- get: function () { return chunkDX5Y2NO5_cjs.useBillingSupport; }
25945
+ get: function () { return chunkYNSSIULM_cjs.useBillingSupport; }
25946
25946
  });
25947
25947
  Object.defineProperty(exports, "useRewardBalance", {
25948
25948
  enumerable: true,
25949
- get: function () { return chunkDX5Y2NO5_cjs.useRewardBalance; }
25949
+ get: function () { return chunkYNSSIULM_cjs.useRewardBalance; }
25950
25950
  });
25951
25951
  Object.defineProperty(exports, "ConnectedAssistantDock", {
25952
25952
  enumerable: true,
@@ -25982,43 +25982,43 @@ Object.defineProperty(exports, "useWorkspaceDocs", {
25982
25982
  });
25983
25983
  Object.defineProperty(exports, "ConnectedWorkflowDocumentsField", {
25984
25984
  enumerable: true,
25985
- get: function () { return chunkNVVBRQN2_cjs.ConnectedWorkflowDocumentsField; }
25985
+ get: function () { return chunkPTSTVYQD_cjs.ConnectedWorkflowDocumentsField; }
25986
25986
  });
25987
25987
  Object.defineProperty(exports, "ConnectedWorkflowLauncher", {
25988
25988
  enumerable: true,
25989
- get: function () { return chunkNVVBRQN2_cjs.ConnectedWorkflowLauncher; }
25989
+ get: function () { return chunkPTSTVYQD_cjs.ConnectedWorkflowLauncher; }
25990
25990
  });
25991
25991
  Object.defineProperty(exports, "ConnectedWorkflowsTable", {
25992
25992
  enumerable: true,
25993
- get: function () { return chunkNVVBRQN2_cjs.ConnectedWorkflowsTable; }
25993
+ get: function () { return chunkPTSTVYQD_cjs.ConnectedWorkflowsTable; }
25994
25994
  });
25995
25995
  Object.defineProperty(exports, "DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS", {
25996
25996
  enumerable: true,
25997
- get: function () { return chunkNVVBRQN2_cjs.DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS; }
25997
+ get: function () { return chunkPTSTVYQD_cjs.DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS; }
25998
25998
  });
25999
25999
  Object.defineProperty(exports, "toWorkflowFieldDocument", {
26000
26000
  enumerable: true,
26001
- get: function () { return chunkNVVBRQN2_cjs.toWorkflowFieldDocument; }
26001
+ get: function () { return chunkPTSTVYQD_cjs.toWorkflowFieldDocument; }
26002
26002
  });
26003
26003
  Object.defineProperty(exports, "useConnectedAgentOptions", {
26004
26004
  enumerable: true,
26005
- get: function () { return chunkNVVBRQN2_cjs.useConnectedAgentOptions; }
26005
+ get: function () { return chunkPTSTVYQD_cjs.useConnectedAgentOptions; }
26006
26006
  });
26007
26007
  Object.defineProperty(exports, "useConnectedWorkflowScopeSource", {
26008
26008
  enumerable: true,
26009
- get: function () { return chunkNVVBRQN2_cjs.useConnectedWorkflowScopeSource; }
26009
+ get: function () { return chunkPTSTVYQD_cjs.useConnectedWorkflowScopeSource; }
26010
26010
  });
26011
26011
  Object.defineProperty(exports, "useConnectedWorkspaceRole", {
26012
26012
  enumerable: true,
26013
- get: function () { return chunkNVVBRQN2_cjs.useConnectedWorkspaceRole; }
26013
+ get: function () { return chunkPTSTVYQD_cjs.useConnectedWorkspaceRole; }
26014
26014
  });
26015
26015
  Object.defineProperty(exports, "useDocxCommentTarget", {
26016
26016
  enumerable: true,
26017
- get: function () { return chunkNVVBRQN2_cjs.useDocxCommentTarget; }
26017
+ get: function () { return chunkPTSTVYQD_cjs.useDocxCommentTarget; }
26018
26018
  });
26019
26019
  Object.defineProperty(exports, "useNativeDocxSupport", {
26020
26020
  enumerable: true,
26021
- get: function () { return chunkNVVBRQN2_cjs.useNativeDocxSupport; }
26021
+ get: function () { return chunkPTSTVYQD_cjs.useNativeDocxSupport; }
26022
26022
  });
26023
26023
  Object.defineProperty(exports, "ConnectedDocumentToolsProvider", {
26024
26024
  enumerable: true,