@arbidocs/blocks 0.5.95 → 0.5.96
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.
- package/README.md +13 -7
- package/dist/{ConnectedCallDock-HI2KMQZ3.cjs → ConnectedCallDock-D4DG4VDA.cjs} +12 -12
- package/dist/{ConnectedCallDock-HI2KMQZ3.cjs.map → ConnectedCallDock-D4DG4VDA.cjs.map} +1 -1
- package/dist/{ConnectedCallDock-Y64FTKFF.js → ConnectedCallDock-VVZUSFFK.js} +11 -11
- package/dist/{ConnectedCallDock-Y64FTKFF.js.map → ConnectedCallDock-VVZUSFFK.js.map} +1 -1
- package/dist/{ConnectedCallRoom-LEBIJGFT.js → ConnectedCallRoom-EDHNAJHA.js} +11 -11
- package/dist/{ConnectedCallRoom-LEBIJGFT.js.map → ConnectedCallRoom-EDHNAJHA.js.map} +1 -1
- package/dist/{ConnectedCallRoom-UXIJJKNG.cjs → ConnectedCallRoom-VDQD25QW.cjs} +12 -12
- package/dist/{ConnectedCallRoom-UXIJJKNG.cjs.map → ConnectedCallRoom-VDQD25QW.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-KIMSYQV2.cjs → ConnectedNativeDocxComparison-ADQURGHU.cjs} +11 -11
- package/dist/{ConnectedNativeDocxComparison-KIMSYQV2.cjs.map → ConnectedNativeDocxComparison-ADQURGHU.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-FNHQKY57.js → ConnectedNativeDocxComparison-IS27M6FV.js} +10 -10
- package/dist/{ConnectedNativeDocxComparison-FNHQKY57.js.map → ConnectedNativeDocxComparison-IS27M6FV.js.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-UOZGILPM.cjs → ConnectedNativeDocxEditor-7EQ6DE3Q.cjs} +11 -11
- package/dist/{ConnectedNativeDocxEditor-UOZGILPM.cjs.map → ConnectedNativeDocxEditor-7EQ6DE3Q.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-WFDFGJYW.js → ConnectedNativeDocxEditor-JYXGX55F.js} +9 -9
- package/dist/{ConnectedNativeDocxEditor-WFDFGJYW.js.map → ConnectedNativeDocxEditor-JYXGX55F.js.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-WFKYXIX5.cjs → ConnectedStreamedWordArtifact-IYAQ2L7G.cjs} +11 -11
- package/dist/ConnectedStreamedWordArtifact-IYAQ2L7G.cjs.map +1 -0
- package/dist/{ConnectedStreamedWordArtifact-SFELZUTS.js → ConnectedStreamedWordArtifact-KLLG6W5L.js} +10 -10
- package/dist/ConnectedStreamedWordArtifact-KLLG6W5L.js.map +1 -0
- package/dist/{DocumentReviewCard-7XUBPCQD.cjs → DocumentReviewCard-3H66FMMO.cjs} +7 -7
- package/dist/{DocumentReviewCard-7XUBPCQD.cjs.map → DocumentReviewCard-3H66FMMO.cjs.map} +1 -1
- package/dist/{DocumentReviewCard-X5DXEU2G.js → DocumentReviewCard-FEVDNY6U.js} +7 -7
- package/dist/{DocumentReviewCard-X5DXEU2G.js.map → DocumentReviewCard-FEVDNY6U.js.map} +1 -1
- package/dist/{FilesViewerDialog-H4ZXFNLV.cjs → FilesViewerDialog-DSK5HMLL.cjs} +48 -39
- package/dist/FilesViewerDialog-DSK5HMLL.cjs.map +1 -0
- package/dist/{FilesViewerDialog-4Q6WJMSX.js → FilesViewerDialog-HL4E57K5.js} +46 -37
- package/dist/FilesViewerDialog-HL4E57K5.js.map +1 -0
- package/dist/{WorkspaceTableView-ZIQ7JWT5.cjs → WorkspaceTableView-5DWNJN6J.cjs} +8 -8
- package/dist/{WorkspaceTableView-ZIQ7JWT5.cjs.map → WorkspaceTableView-5DWNJN6J.cjs.map} +1 -1
- package/dist/{WorkspaceTableView-DYABS53K.js → WorkspaceTableView-X3KZ7YFI.js} +6 -6
- package/dist/{WorkspaceTableView-DYABS53K.js.map → WorkspaceTableView-X3KZ7YFI.js.map} +1 -1
- package/dist/agents/index.cjs +255 -255
- package/dist/agents/index.js +5 -5
- package/dist/calls/index.cjs +2 -2
- package/dist/calls/index.js +2 -2
- package/dist/{chunk-SOBLG72E.js → chunk-2JXJE7Y4.js} +5 -5
- package/dist/{chunk-SOBLG72E.js.map → chunk-2JXJE7Y4.js.map} +1 -1
- package/dist/{chunk-TG4S236F.js → chunk-4DRLOAVD.js} +9 -9
- package/dist/{chunk-TG4S236F.js.map → chunk-4DRLOAVD.js.map} +1 -1
- package/dist/{chunk-Y7UHKEVT.js → chunk-4HMJQ66B.js} +4 -4
- package/dist/{chunk-Y7UHKEVT.js.map → chunk-4HMJQ66B.js.map} +1 -1
- package/dist/{chunk-ZSWMRG72.cjs → chunk-5YIUHRTR.cjs} +4 -4
- package/dist/{chunk-ZSWMRG72.cjs.map → chunk-5YIUHRTR.cjs.map} +1 -1
- package/dist/{chunk-NZQZ2HFU.cjs → chunk-64KZM3RZ.cjs} +3 -3
- package/dist/{chunk-NZQZ2HFU.cjs.map → chunk-64KZM3RZ.cjs.map} +1 -1
- package/dist/{chunk-CJBDBBN2.cjs → chunk-6NMLRGUJ.cjs} +4 -4
- package/dist/{chunk-CJBDBBN2.cjs.map → chunk-6NMLRGUJ.cjs.map} +1 -1
- package/dist/{chunk-MMSHLHTA.cjs → chunk-6OXR4R6J.cjs} +3 -3
- package/dist/{chunk-MMSHLHTA.cjs.map → chunk-6OXR4R6J.cjs.map} +1 -1
- package/dist/{chunk-OXHAUVK2.cjs → chunk-7XVQATK2.cjs} +3 -3
- package/dist/{chunk-OXHAUVK2.cjs.map → chunk-7XVQATK2.cjs.map} +1 -1
- package/dist/{chunk-K6UKLIRR.js → chunk-AS3HX7LL.js} +3 -3
- package/dist/{chunk-K6UKLIRR.js.map → chunk-AS3HX7LL.js.map} +1 -1
- package/dist/{chunk-DDIV3MYQ.cjs → chunk-BAJNXRI5.cjs} +5 -5
- package/dist/{chunk-DDIV3MYQ.cjs.map → chunk-BAJNXRI5.cjs.map} +1 -1
- package/dist/{chunk-HXWBXYVN.cjs → chunk-CMMFXSTS.cjs} +3 -3
- package/dist/{chunk-HXWBXYVN.cjs.map → chunk-CMMFXSTS.cjs.map} +1 -1
- package/dist/{chunk-H2DG5HIO.js → chunk-DCNBNLWC.js} +4 -4
- package/dist/{chunk-H2DG5HIO.js.map → chunk-DCNBNLWC.js.map} +1 -1
- package/dist/{chunk-MBXQSBG3.cjs → chunk-FAKRTCAL.cjs} +11 -11
- package/dist/{chunk-MBXQSBG3.cjs.map → chunk-FAKRTCAL.cjs.map} +1 -1
- package/dist/{chunk-45M4QWCM.js → chunk-GEUP5IV7.js} +3 -3
- package/dist/{chunk-45M4QWCM.js.map → chunk-GEUP5IV7.js.map} +1 -1
- package/dist/{chunk-NIXAAPIG.js → chunk-HA27RMKD.js} +7 -7
- package/dist/{chunk-NIXAAPIG.js.map → chunk-HA27RMKD.js.map} +1 -1
- package/dist/{chunk-D3ABKS7T.cjs → chunk-HDPT7D6F.cjs} +3 -3
- package/dist/{chunk-D3ABKS7T.cjs.map → chunk-HDPT7D6F.cjs.map} +1 -1
- package/dist/{chunk-KTHBUDYQ.cjs → chunk-IMFE6FKN.cjs} +7 -7
- package/dist/{chunk-KTHBUDYQ.cjs.map → chunk-IMFE6FKN.cjs.map} +1 -1
- package/dist/{chunk-I4PB257E.js → chunk-KQUFEMPP.js} +3 -3
- package/dist/{chunk-I4PB257E.js.map → chunk-KQUFEMPP.js.map} +1 -1
- package/dist/{chunk-DCHNB7DF.cjs → chunk-KVKKVSBT.cjs} +53 -53
- package/dist/{chunk-DCHNB7DF.cjs.map → chunk-KVKKVSBT.cjs.map} +1 -1
- package/dist/{chunk-XTCNETMI.cjs → chunk-MB2OXZEA.cjs} +4 -4
- package/dist/{chunk-XTCNETMI.cjs.map → chunk-MB2OXZEA.cjs.map} +1 -1
- package/dist/{chunk-RQW2CFOQ.js → chunk-NCGJKKGR.js} +9 -9
- package/dist/{chunk-RQW2CFOQ.js.map → chunk-NCGJKKGR.js.map} +1 -1
- package/dist/{chunk-ITK7GW7B.js → chunk-NRE7ZR6M.js} +3 -3
- package/dist/{chunk-ITK7GW7B.js.map → chunk-NRE7ZR6M.js.map} +1 -1
- package/dist/{chunk-SDXK2COQ.cjs → chunk-O2ATVRRO.cjs} +27 -27
- package/dist/{chunk-SDXK2COQ.cjs.map → chunk-O2ATVRRO.cjs.map} +1 -1
- package/dist/{chunk-AJ4TBTA3.js → chunk-PCAWLVHE.js} +3 -3
- package/dist/{chunk-AJ4TBTA3.js.map → chunk-PCAWLVHE.js.map} +1 -1
- package/dist/{chunk-HU3MX5PY.js → chunk-QJVDQAYQ.js} +3 -3
- package/dist/{chunk-HU3MX5PY.js.map → chunk-QJVDQAYQ.js.map} +1 -1
- package/dist/{chunk-KJLHFS7T.js → chunk-RMJNCYPD.js} +3 -3
- package/dist/{chunk-KJLHFS7T.js.map → chunk-RMJNCYPD.js.map} +1 -1
- package/dist/{chunk-FNGFSHVE.js → chunk-S2CKH2LH.js} +3 -3
- package/dist/{chunk-FNGFSHVE.js.map → chunk-S2CKH2LH.js.map} +1 -1
- package/dist/{chunk-VVQEEHDV.cjs → chunk-TANZTMPL.cjs} +4 -4
- package/dist/{chunk-VVQEEHDV.cjs.map → chunk-TANZTMPL.cjs.map} +1 -1
- package/dist/{chunk-N77UYRV7.js → chunk-VEK64VEE.js} +3 -3
- package/dist/{chunk-N77UYRV7.js.map → chunk-VEK64VEE.js.map} +1 -1
- package/dist/{chunk-CY2K4K5M.js → chunk-VSZPY4LK.js} +6 -6
- package/dist/{chunk-CY2K4K5M.js.map → chunk-VSZPY4LK.js.map} +1 -1
- package/dist/{chunk-O5MH74TI.js → chunk-YIKE2IY4.js} +3 -3
- package/dist/{chunk-O5MH74TI.js.map → chunk-YIKE2IY4.js.map} +1 -1
- package/dist/{chunk-U4ZLFL6M.cjs → chunk-ZA3ZELSH.cjs} +5 -5
- package/dist/{chunk-U4ZLFL6M.cjs.map → chunk-ZA3ZELSH.cjs.map} +1 -1
- package/dist/{chunk-6HI5OXB6.cjs → chunk-ZBQTFA5X.cjs} +4 -4
- package/dist/{chunk-6HI5OXB6.cjs.map → chunk-ZBQTFA5X.cjs.map} +1 -1
- package/dist/{chunk-5ZWEUUJN.cjs → chunk-ZJ3NII4U.cjs} +10 -10
- package/dist/{chunk-5ZWEUUJN.cjs.map → chunk-ZJ3NII4U.cjs.map} +1 -1
- package/dist/collaboration/index.cjs +1 -1
- package/dist/collaboration/index.js +1 -1
- package/dist/connect/docx.cjs +14 -14
- package/dist/connect/docx.js +10 -10
- package/dist/connect/index.cjs +725 -698
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.js +71 -44
- package/dist/connect/index.js.map +1 -1
- package/dist/connect/viewer.cjs +9 -9
- package/dist/connect/viewer.js +8 -8
- package/dist/connection/files/page/ConnectedFilesPage.d.ts +11 -7
- package/dist/connection/viewer/DocumentViewerDialog.d.ts +3 -0
- package/dist/connection/viewer/documentPlace.d.ts +10 -4
- package/dist/dashboards/index.cjs +1 -1
- package/dist/dashboards/index.js +1 -1
- package/dist/embed/index.cjs +19 -19
- package/dist/embed/index.js +13 -13
- package/dist/facts/index.cjs +43 -43
- package/dist/facts/index.js +2 -2
- package/dist/index.cjs +392 -392
- package/dist/index.js +13 -13
- package/dist/settings/index.cjs +151 -151
- package/dist/settings/index.js +2 -2
- package/dist/shell/index.cjs +33 -33
- package/dist/shell/index.js +3 -3
- package/dist/studio/index.cjs +5 -5
- package/dist/studio/index.js +4 -4
- package/dist/workflow-canvas/index.cjs +31 -31
- package/dist/workflow-canvas/index.js +16 -16
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/ConnectedStreamedWordArtifact-SFELZUTS.js.map +0 -1
- package/dist/ConnectedStreamedWordArtifact-WFKYXIX5.cjs.map +0 -1
- package/dist/FilesViewerDialog-4Q6WJMSX.js.map +0 -1
- package/dist/FilesViewerDialog-H4ZXFNLV.cjs.map +0 -1
package/dist/connect/index.cjs
CHANGED
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var chunk3532KA6K_cjs = require('../chunk-3532KA6K.cjs');
|
|
5
|
-
var
|
|
5
|
+
var chunkBAJNXRI5_cjs = require('../chunk-BAJNXRI5.cjs');
|
|
6
6
|
var chunkWVEYUH6C_cjs = require('../chunk-WVEYUH6C.cjs');
|
|
7
7
|
var chunkTBARSVW7_cjs = require('../chunk-TBARSVW7.cjs');
|
|
8
8
|
var chunkPSIKUQYM_cjs = require('../chunk-PSIKUQYM.cjs');
|
|
9
|
-
var
|
|
10
|
-
var chunkDCHNB7DF_cjs = require('../chunk-DCHNB7DF.cjs');
|
|
9
|
+
var chunk64KZM3RZ_cjs = require('../chunk-64KZM3RZ.cjs');
|
|
11
10
|
var chunkC5CWKZ5D_cjs = require('../chunk-C5CWKZ5D.cjs');
|
|
11
|
+
var chunkKVKKVSBT_cjs = require('../chunk-KVKKVSBT.cjs');
|
|
12
12
|
var chunkCIXA5A65_cjs = require('../chunk-CIXA5A65.cjs');
|
|
13
13
|
var chunkKWJW5TMH_cjs = require('../chunk-KWJW5TMH.cjs');
|
|
14
|
-
var
|
|
15
|
-
var
|
|
14
|
+
var chunkO2ATVRRO_cjs = require('../chunk-O2ATVRRO.cjs');
|
|
15
|
+
var chunkMB2OXZEA_cjs = require('../chunk-MB2OXZEA.cjs');
|
|
16
16
|
var chunkTZHLO7HF_cjs = require('../chunk-TZHLO7HF.cjs');
|
|
17
|
-
var
|
|
17
|
+
var chunkHDPT7D6F_cjs = require('../chunk-HDPT7D6F.cjs');
|
|
18
18
|
var chunkTJY7XPDE_cjs = require('../chunk-TJY7XPDE.cjs');
|
|
19
19
|
var chunkECZXW346_cjs = require('../chunk-ECZXW346.cjs');
|
|
20
20
|
var chunkE5TPRRAW_cjs = require('../chunk-E5TPRRAW.cjs');
|
|
@@ -22,7 +22,7 @@ require('../chunk-UMMZNZV3.cjs');
|
|
|
22
22
|
require('../chunk-AEQT2QQX.cjs');
|
|
23
23
|
var chunkSFRKKPBB_cjs = require('../chunk-SFRKKPBB.cjs');
|
|
24
24
|
require('../chunk-XNW62J54.cjs');
|
|
25
|
-
var
|
|
25
|
+
var chunkZJ3NII4U_cjs = require('../chunk-ZJ3NII4U.cjs');
|
|
26
26
|
var chunk464YPRAE_cjs = require('../chunk-464YPRAE.cjs');
|
|
27
27
|
var chunkLCPU44GW_cjs = require('../chunk-LCPU44GW.cjs');
|
|
28
28
|
var chunkSIYNZR5B_cjs = require('../chunk-SIYNZR5B.cjs');
|
|
@@ -32,7 +32,7 @@ var chunkKJM5X7NX_cjs = require('../chunk-KJM5X7NX.cjs');
|
|
|
32
32
|
var chunkHEM27NA3_cjs = require('../chunk-HEM27NA3.cjs');
|
|
33
33
|
var chunk7E3SUV4J_cjs = require('../chunk-7E3SUV4J.cjs');
|
|
34
34
|
var chunkGFG7DCJ3_cjs = require('../chunk-GFG7DCJ3.cjs');
|
|
35
|
-
var
|
|
35
|
+
var chunk6OXR4R6J_cjs = require('../chunk-6OXR4R6J.cjs');
|
|
36
36
|
var chunk33MKOWSA_cjs = require('../chunk-33MKOWSA.cjs');
|
|
37
37
|
var chunk223D4727_cjs = require('../chunk-223D4727.cjs');
|
|
38
38
|
var chunkSNUBQMIS_cjs = require('../chunk-SNUBQMIS.cjs');
|
|
@@ -43,11 +43,11 @@ require('../chunk-JH6JTI76.cjs');
|
|
|
43
43
|
var chunkQQMMCXBP_cjs = require('../chunk-QQMMCXBP.cjs');
|
|
44
44
|
require('../chunk-DTMBAFIL.cjs');
|
|
45
45
|
require('../chunk-ZESMRGDV.cjs');
|
|
46
|
-
var
|
|
46
|
+
var chunkZA3ZELSH_cjs = require('../chunk-ZA3ZELSH.cjs');
|
|
47
47
|
var chunkYSCDHY53_cjs = require('../chunk-YSCDHY53.cjs');
|
|
48
48
|
require('../chunk-NEGFHF3V.cjs');
|
|
49
|
-
var chunkZ3LFF3YT_cjs = require('../chunk-Z3LFF3YT.cjs');
|
|
50
49
|
var chunkI6GEQWIV_cjs = require('../chunk-I6GEQWIV.cjs');
|
|
50
|
+
var chunkZ3LFF3YT_cjs = require('../chunk-Z3LFF3YT.cjs');
|
|
51
51
|
var chunk4B6HYQTW_cjs = require('../chunk-4B6HYQTW.cjs');
|
|
52
52
|
var chunkADMNU2CR_cjs = require('../chunk-ADMNU2CR.cjs');
|
|
53
53
|
require('../chunk-PCB2BPN3.cjs');
|
|
@@ -57,7 +57,7 @@ var chunkYN7ZQEHS_cjs = require('../chunk-YN7ZQEHS.cjs');
|
|
|
57
57
|
require('../chunk-7G2LJMUG.cjs');
|
|
58
58
|
var chunkJIOHDVWH_cjs = require('../chunk-JIOHDVWH.cjs');
|
|
59
59
|
var chunkRC25WMVB_cjs = require('../chunk-RC25WMVB.cjs');
|
|
60
|
-
var
|
|
60
|
+
var chunkCMMFXSTS_cjs = require('../chunk-CMMFXSTS.cjs');
|
|
61
61
|
var chunkMZZ3SBQL_cjs = require('../chunk-MZZ3SBQL.cjs');
|
|
62
62
|
var chunkLBRJA4ZJ_cjs = require('../chunk-LBRJA4ZJ.cjs');
|
|
63
63
|
var chunkGFLZHV54_cjs = require('../chunk-GFLZHV54.cjs');
|
|
@@ -73,11 +73,11 @@ var chunkZU2B2RZK_cjs = require('../chunk-ZU2B2RZK.cjs');
|
|
|
73
73
|
var chunkNSD37OF5_cjs = require('../chunk-NSD37OF5.cjs');
|
|
74
74
|
require('../chunk-OEJQFPWO.cjs');
|
|
75
75
|
require('../chunk-BQOL4XNZ.cjs');
|
|
76
|
-
var
|
|
76
|
+
var chunkFAKRTCAL_cjs = require('../chunk-FAKRTCAL.cjs');
|
|
77
77
|
var chunkKNC77LZZ_cjs = require('../chunk-KNC77LZZ.cjs');
|
|
78
78
|
require('../chunk-I4IS6ST6.cjs');
|
|
79
79
|
require('../chunk-EVZH6Z5O.cjs');
|
|
80
|
-
var
|
|
80
|
+
var chunkZBQTFA5X_cjs = require('../chunk-ZBQTFA5X.cjs');
|
|
81
81
|
require('../chunk-3YEXZX4H.cjs');
|
|
82
82
|
var chunkZHUQYIV3_cjs = require('../chunk-ZHUQYIV3.cjs');
|
|
83
83
|
var chunkOYXWQTHF_cjs = require('../chunk-OYXWQTHF.cjs');
|
|
@@ -93,19 +93,6 @@ var chunkU2FFG2B3_cjs = require('../chunk-U2FFG2B3.cjs');
|
|
|
93
93
|
var chunk25UUJRSJ_cjs = require('../chunk-25UUJRSJ.cjs');
|
|
94
94
|
var chunkVYJF4ZQY_cjs = require('../chunk-VYJF4ZQY.cjs');
|
|
95
95
|
var chunkM74FWYNL_cjs = require('../chunk-M74FWYNL.cjs');
|
|
96
|
-
var chunk4ZM3J3SL_cjs = require('../chunk-4ZM3J3SL.cjs');
|
|
97
|
-
require('../chunk-OAIOOVFN.cjs');
|
|
98
|
-
var chunkIOCEKN44_cjs = require('../chunk-IOCEKN44.cjs');
|
|
99
|
-
require('../chunk-F5T4W2R2.cjs');
|
|
100
|
-
var chunk5HEMXXHR_cjs = require('../chunk-5HEMXXHR.cjs');
|
|
101
|
-
var chunkBFKTZUFT_cjs = require('../chunk-BFKTZUFT.cjs');
|
|
102
|
-
var chunkWV65MJ43_cjs = require('../chunk-WV65MJ43.cjs');
|
|
103
|
-
var chunkTMX7YFVM_cjs = require('../chunk-TMX7YFVM.cjs');
|
|
104
|
-
var chunkMOIZ2R5X_cjs = require('../chunk-MOIZ2R5X.cjs');
|
|
105
|
-
var chunkLUO46ELJ_cjs = require('../chunk-LUO46ELJ.cjs');
|
|
106
|
-
var chunkSJSGSHIT_cjs = require('../chunk-SJSGSHIT.cjs');
|
|
107
|
-
var chunkZW6FPIFC_cjs = require('../chunk-ZW6FPIFC.cjs');
|
|
108
|
-
require('../chunk-ZT5MIFLC.cjs');
|
|
109
96
|
var chunkI6SPGHFY_cjs = require('../chunk-I6SPGHFY.cjs');
|
|
110
97
|
var chunkQUMUAJ2P_cjs = require('../chunk-QUMUAJ2P.cjs');
|
|
111
98
|
var chunkVZOOGA47_cjs = require('../chunk-VZOOGA47.cjs');
|
|
@@ -129,6 +116,19 @@ var chunk5GQOIQCB_cjs = require('../chunk-5GQOIQCB.cjs');
|
|
|
129
116
|
require('../chunk-UDSHVNU3.cjs');
|
|
130
117
|
var chunkIPSHAMO2_cjs = require('../chunk-IPSHAMO2.cjs');
|
|
131
118
|
var chunkFX3K6LNZ_cjs = require('../chunk-FX3K6LNZ.cjs');
|
|
119
|
+
var chunk4ZM3J3SL_cjs = require('../chunk-4ZM3J3SL.cjs');
|
|
120
|
+
require('../chunk-OAIOOVFN.cjs');
|
|
121
|
+
var chunkIOCEKN44_cjs = require('../chunk-IOCEKN44.cjs');
|
|
122
|
+
require('../chunk-F5T4W2R2.cjs');
|
|
123
|
+
var chunk5HEMXXHR_cjs = require('../chunk-5HEMXXHR.cjs');
|
|
124
|
+
var chunkBFKTZUFT_cjs = require('../chunk-BFKTZUFT.cjs');
|
|
125
|
+
var chunkWV65MJ43_cjs = require('../chunk-WV65MJ43.cjs');
|
|
126
|
+
var chunkTMX7YFVM_cjs = require('../chunk-TMX7YFVM.cjs');
|
|
127
|
+
var chunkMOIZ2R5X_cjs = require('../chunk-MOIZ2R5X.cjs');
|
|
128
|
+
var chunkLUO46ELJ_cjs = require('../chunk-LUO46ELJ.cjs');
|
|
129
|
+
var chunkSJSGSHIT_cjs = require('../chunk-SJSGSHIT.cjs');
|
|
130
|
+
var chunkZW6FPIFC_cjs = require('../chunk-ZW6FPIFC.cjs');
|
|
131
|
+
require('../chunk-ZT5MIFLC.cjs');
|
|
132
132
|
var chunkZBP4ZSAJ_cjs = require('../chunk-ZBP4ZSAJ.cjs');
|
|
133
133
|
require('../chunk-PPCATBOY.cjs');
|
|
134
134
|
var chunkUIXY4HKM_cjs = require('../chunk-UIXY4HKM.cjs');
|
|
@@ -244,7 +244,7 @@ function ConnectedWorkspaceActivity({
|
|
|
244
244
|
[feed.data]
|
|
245
245
|
);
|
|
246
246
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
247
|
-
|
|
247
|
+
chunkZA3ZELSH_cjs.WorkspaceActivityList,
|
|
248
248
|
{
|
|
249
249
|
...listProps,
|
|
250
250
|
items,
|
|
@@ -1124,7 +1124,7 @@ function NotificationCenter({
|
|
|
1124
1124
|
}
|
|
1125
1125
|
];
|
|
1126
1126
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-full bg-background", "data-testid": "notifications-page", children: [
|
|
1127
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1127
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.DraggableHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1128
1128
|
chunkSJSGSHIT_cjs.TabHeader,
|
|
1129
1129
|
{
|
|
1130
1130
|
tabs,
|
|
@@ -1448,7 +1448,7 @@ function ConnectedOfflineStatus({ compact = false }) {
|
|
|
1448
1448
|
notify17("Still offline \u2014 check your connection and try again.", "warning");
|
|
1449
1449
|
};
|
|
1450
1450
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1451
|
-
|
|
1451
|
+
chunkCMMFXSTS_cjs.OfflinePill,
|
|
1452
1452
|
{
|
|
1453
1453
|
tone,
|
|
1454
1454
|
label,
|
|
@@ -1566,7 +1566,7 @@ function ConnectedSkillUpload({ onDone, labels, className }) {
|
|
|
1566
1566
|
onChange: (e) => {
|
|
1567
1567
|
const file = e.target.files?.[0];
|
|
1568
1568
|
e.target.value = "";
|
|
1569
|
-
if (file) void add(() =>
|
|
1569
|
+
if (file) void add(() => chunkFAKRTCAL_cjs.importSkillFile(file));
|
|
1570
1570
|
}
|
|
1571
1571
|
}
|
|
1572
1572
|
),
|
|
@@ -1591,7 +1591,7 @@ function ConnectedSkillUpload({ onDone, labels, className }) {
|
|
|
1591
1591
|
className: "space-y-2",
|
|
1592
1592
|
onSubmit: (e) => {
|
|
1593
1593
|
e.preventDefault();
|
|
1594
|
-
if (url.trim()) void add(() =>
|
|
1594
|
+
if (url.trim()) void add(() => chunkFAKRTCAL_cjs.importSkillFromUrl(url));
|
|
1595
1595
|
},
|
|
1596
1596
|
children: [
|
|
1597
1597
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "skills-add-url", children: l.fromLink }),
|
|
@@ -1654,9 +1654,9 @@ function ConnectedSkillsLibrary({
|
|
|
1654
1654
|
const [type, setType] = react$1.useState("all");
|
|
1655
1655
|
const [view, setView] = react$1.useState("gallery");
|
|
1656
1656
|
const [isBusy, setIsBusy] = react$1.useState(false);
|
|
1657
|
-
const all = react$1.useMemo(() =>
|
|
1657
|
+
const all = react$1.useMemo(() => chunkFAKRTCAL_cjs.buildLibrarySkills(builtins, listings ?? []), [builtins, listings]);
|
|
1658
1658
|
const shown = react$1.useMemo(
|
|
1659
|
-
() =>
|
|
1659
|
+
() => chunkFAKRTCAL_cjs.filterLibrarySkills(all, { query, source, type }),
|
|
1660
1660
|
[all, query, source, type]
|
|
1661
1661
|
);
|
|
1662
1662
|
const current = all.find((s) => s.slug === selected) ?? null;
|
|
@@ -1667,21 +1667,21 @@ function ConnectedSkillsLibrary({
|
|
|
1667
1667
|
const count2 = (s) => all.filter((x) => x.source === s).length;
|
|
1668
1668
|
const sourceOptions = [
|
|
1669
1669
|
{ id: "all", label: "All", count: all.length },
|
|
1670
|
-
{ id: "builtin", label:
|
|
1671
|
-
{ id: "mine", label:
|
|
1672
|
-
{ id: "shared", label:
|
|
1670
|
+
{ id: "builtin", label: chunkFAKRTCAL_cjs.SKILL_SOURCE_LABELS.builtin, count: count2("builtin") },
|
|
1671
|
+
{ id: "mine", label: chunkFAKRTCAL_cjs.SKILL_SOURCE_LABELS.mine, count: count2("mine") },
|
|
1672
|
+
{ id: "shared", label: chunkFAKRTCAL_cjs.SKILL_SOURCE_LABELS.shared, count: count2("shared") }
|
|
1673
1673
|
];
|
|
1674
1674
|
const types = [...new Set(all.map((s) => s.type))];
|
|
1675
1675
|
const typeOptions = [
|
|
1676
1676
|
{ id: "all", label: "Any kind" },
|
|
1677
|
-
...types.map((t) => ({ id: t, label:
|
|
1677
|
+
...types.map((t) => ({ id: t, label: chunkFAKRTCAL_cjs.SKILL_TYPE_LABELS[t] ?? t }))
|
|
1678
1678
|
];
|
|
1679
1679
|
const pick = (slug) => {
|
|
1680
1680
|
setSelected(slug);
|
|
1681
1681
|
setMode("detail");
|
|
1682
1682
|
};
|
|
1683
1683
|
const markdownOf = async (skill) => {
|
|
1684
|
-
if (!skill.docExtId) return
|
|
1684
|
+
if (!skill.docExtId) return chunkFAKRTCAL_cjs.workflowToSkillMarkdown(skill.workflow);
|
|
1685
1685
|
const response = await arbi.documents.download(skill.docExtId);
|
|
1686
1686
|
if (!response.ok) throw new Error(`Could not read the skill (${response.status})`);
|
|
1687
1687
|
return response.text();
|
|
@@ -1745,7 +1745,7 @@ function ConnectedSkillsLibrary({
|
|
|
1745
1745
|
try {
|
|
1746
1746
|
documentTools.downloadBlob(
|
|
1747
1747
|
new Blob([await markdownOf(skill)], { type: "text/markdown" }),
|
|
1748
|
-
|
|
1748
|
+
chunkFAKRTCAL_cjs.SKILL_MAIN_FILENAME
|
|
1749
1749
|
);
|
|
1750
1750
|
} catch (error) {
|
|
1751
1751
|
notify17(errorText(error, "Could not export the skill"), "error");
|
|
@@ -1786,10 +1786,10 @@ function ConnectedSkillsLibrary({
|
|
|
1786
1786
|
}
|
|
1787
1787
|
)
|
|
1788
1788
|
] }),
|
|
1789
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1789
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.SkillViewToggle, { value: view, onChange: setView })
|
|
1790
1790
|
] }),
|
|
1791
1791
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1792
|
-
|
|
1792
|
+
chunkFAKRTCAL_cjs.SkillFilterChips,
|
|
1793
1793
|
{
|
|
1794
1794
|
label: "Show",
|
|
1795
1795
|
value: source,
|
|
@@ -1798,7 +1798,7 @@ function ConnectedSkillsLibrary({
|
|
|
1798
1798
|
}
|
|
1799
1799
|
),
|
|
1800
1800
|
types.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1801
|
-
|
|
1801
|
+
chunkFAKRTCAL_cjs.SkillFilterChips,
|
|
1802
1802
|
{
|
|
1803
1803
|
label: "Kind",
|
|
1804
1804
|
value: type,
|
|
@@ -1845,12 +1845,12 @@ function ConnectedSkillsLibrary({
|
|
|
1845
1845
|
view === "gallery" ? "grid grid-cols-[repeat(auto-fill,minmax(9.5rem,1fr))]" : "flex flex-col"
|
|
1846
1846
|
),
|
|
1847
1847
|
children: shown.map((skill) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1848
|
-
|
|
1848
|
+
chunkFAKRTCAL_cjs.SkillTile,
|
|
1849
1849
|
{
|
|
1850
1850
|
name: skill.title,
|
|
1851
1851
|
testId: `skill-tile-${skill.slug}`,
|
|
1852
1852
|
description: skill.description,
|
|
1853
|
-
sourceLabel: skill.isShared ? `${
|
|
1853
|
+
sourceLabel: skill.isShared ? `${chunkFAKRTCAL_cjs.SKILL_SOURCE_LABELS.mine}, shared` : chunkFAKRTCAL_cjs.SKILL_SOURCE_LABELS[skill.source],
|
|
1854
1854
|
type: skill.type,
|
|
1855
1855
|
icon,
|
|
1856
1856
|
layout: view,
|
|
@@ -1885,7 +1885,7 @@ function ConnectedSkillsLibrary({
|
|
|
1885
1885
|
}
|
|
1886
1886
|
),
|
|
1887
1887
|
mode === "new" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1888
|
-
|
|
1888
|
+
chunkFAKRTCAL_cjs.SkillGenerateForm,
|
|
1889
1889
|
{
|
|
1890
1890
|
icon,
|
|
1891
1891
|
onGenerate: (desc) => {
|
|
@@ -1912,11 +1912,11 @@ function ConnectedSkillsLibrary({
|
|
|
1912
1912
|
),
|
|
1913
1913
|
mode === "add" && /* @__PURE__ */ jsxRuntime.jsx(ConnectedSkillUpload, { onDone: done }),
|
|
1914
1914
|
mode === "detail" && current && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1915
|
-
|
|
1915
|
+
chunkFAKRTCAL_cjs.SkillLibraryDetail,
|
|
1916
1916
|
{
|
|
1917
1917
|
skill: current,
|
|
1918
1918
|
icon,
|
|
1919
|
-
instructions: current.docExtId ? currentText ?
|
|
1919
|
+
instructions: current.docExtId ? currentText ? chunkFAKRTCAL_cjs.parseSkillFrontmatter(currentText, chunkFAKRTCAL_cjs.SKILL_MAIN_FILENAME).content : "" : current.workflow.run.kind === "prompt" ? current.workflow.run.promptTemplate : "",
|
|
1920
1920
|
isLoading: !!current.docExtId && textLoading,
|
|
1921
1921
|
actions: {
|
|
1922
1922
|
onRun: () => onRun(current.slug),
|
|
@@ -1951,7 +1951,7 @@ function SkillEditor({
|
|
|
1951
1951
|
const [seeded, setSeeded] = react$1.useState(!isEditing);
|
|
1952
1952
|
const [nameError, setNameError] = react$1.useState(null);
|
|
1953
1953
|
if (isEditing && !seeded && text2 !== void 0) {
|
|
1954
|
-
const parsed =
|
|
1954
|
+
const parsed = chunkFAKRTCAL_cjs.parseSkillFrontmatter(text2, chunkFAKRTCAL_cjs.SKILL_MAIN_FILENAME);
|
|
1955
1955
|
setDescription(parsed.description ?? "");
|
|
1956
1956
|
setBody(parsed.content ?? "");
|
|
1957
1957
|
setSeeded(true);
|
|
@@ -1965,15 +1965,15 @@ function SkillEditor({
|
|
|
1965
1965
|
notify17("Add a short description.", "error");
|
|
1966
1966
|
return;
|
|
1967
1967
|
}
|
|
1968
|
-
const slug =
|
|
1968
|
+
const slug = chunkFAKRTCAL_cjs.skillSlug(name);
|
|
1969
1969
|
try {
|
|
1970
|
-
await onSave(slug,
|
|
1970
|
+
await onSave(slug, chunkFAKRTCAL_cjs.serializeSkill({ name: slug, description, body }), isEditing);
|
|
1971
1971
|
} catch (err) {
|
|
1972
1972
|
notify17(errorText(err, "Could not save the skill"), "error");
|
|
1973
1973
|
}
|
|
1974
1974
|
};
|
|
1975
1975
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1976
|
-
|
|
1976
|
+
chunkFAKRTCAL_cjs.SkillEditForm,
|
|
1977
1977
|
{
|
|
1978
1978
|
name,
|
|
1979
1979
|
onNameChange: setName,
|
|
@@ -2012,7 +2012,7 @@ var DEFAULT_CONNECTED_SKILLS_BROWSER_LABELS = {
|
|
|
2012
2012
|
function ConnectedSkillsBrowser({
|
|
2013
2013
|
props,
|
|
2014
2014
|
onClose: close,
|
|
2015
|
-
builtins =
|
|
2015
|
+
builtins = chunkFAKRTCAL_cjs.BUILTIN_SKILLS,
|
|
2016
2016
|
renderEditor,
|
|
2017
2017
|
labels
|
|
2018
2018
|
}) {
|
|
@@ -2065,7 +2065,7 @@ function ConnectedSkillsBrowser({
|
|
|
2065
2065
|
}
|
|
2066
2066
|
) }),
|
|
2067
2067
|
runSkillId && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2068
|
-
|
|
2068
|
+
chunkKVKKVSBT_cjs.ConnectedTaskComposer,
|
|
2069
2069
|
{
|
|
2070
2070
|
kind: "workflow",
|
|
2071
2071
|
open: true,
|
|
@@ -2089,9 +2089,9 @@ function ConnectedAgentCreator({
|
|
|
2089
2089
|
agent,
|
|
2090
2090
|
initialName,
|
|
2091
2091
|
onSaved,
|
|
2092
|
-
capabilities =
|
|
2093
|
-
templates =
|
|
2094
|
-
types =
|
|
2092
|
+
capabilities = chunkFAKRTCAL_cjs.DEFAULT_AGENT_CAPABILITIES,
|
|
2093
|
+
templates = chunkFAKRTCAL_cjs.DEFAULT_AGENT_TEMPLATES,
|
|
2094
|
+
types = chunkFAKRTCAL_cjs.DEFAULT_AGENT_TYPES,
|
|
2095
2095
|
canRevokeWorkspaces = false,
|
|
2096
2096
|
labels
|
|
2097
2097
|
}) {
|
|
@@ -2133,7 +2133,7 @@ function ConnectedAgentCreator({
|
|
|
2133
2133
|
const initialValues = react$1.useMemo(
|
|
2134
2134
|
() => ({
|
|
2135
2135
|
name: agent?.given_name ?? initialName ?? "",
|
|
2136
|
-
persona: isEdit ?
|
|
2136
|
+
persona: isEdit ? chunkFAKRTCAL_cjs.stripPersonaPreamble(String(agents.PERSONA ?? "")) : "",
|
|
2137
2137
|
modelName: String(agents.AGENT_MODEL_NAME ?? ""),
|
|
2138
2138
|
capabilities: Object.fromEntries(capabilities.map(({ key }) => [key, Boolean(agents[key])])),
|
|
2139
2139
|
type: "builtin",
|
|
@@ -2152,7 +2152,7 @@ function ConnectedAgentCreator({
|
|
|
2152
2152
|
try {
|
|
2153
2153
|
let agentExtId = agent?.external_id ?? early?.id ?? "";
|
|
2154
2154
|
if (!agentExtId) {
|
|
2155
|
-
if (!
|
|
2155
|
+
if (!chunkFAKRTCAL_cjs.isValidAgentName(values.name)) {
|
|
2156
2156
|
notify17("Give the agent a name first.", "error");
|
|
2157
2157
|
return;
|
|
2158
2158
|
}
|
|
@@ -2188,7 +2188,7 @@ function ConnectedAgentCreator({
|
|
|
2188
2188
|
title: `agent-${name}`,
|
|
2189
2189
|
sections: {
|
|
2190
2190
|
Agents: {
|
|
2191
|
-
PERSONA:
|
|
2191
|
+
PERSONA: chunkFAKRTCAL_cjs.composePersona(name, values.persona),
|
|
2192
2192
|
...values.modelName ? { AGENT_MODEL_NAME: values.modelName } : {},
|
|
2193
2193
|
...Object.fromEntries(capabilities.map(({ key }) => [key, !!values.capabilities[key]])),
|
|
2194
2194
|
ENABLED_SKILLS: values.capabilities.SKILLS_ENABLED && skills.length ? skills : null,
|
|
@@ -2211,7 +2211,7 @@ function ConnectedAgentCreator({
|
|
|
2211
2211
|
};
|
|
2212
2212
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2213
2213
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2214
|
-
|
|
2214
|
+
chunkFAKRTCAL_cjs.AgentCreator,
|
|
2215
2215
|
{
|
|
2216
2216
|
open: ready,
|
|
2217
2217
|
onOpenChange,
|
|
@@ -2227,11 +2227,11 @@ function ConnectedAgentCreator({
|
|
|
2227
2227
|
) : void 0,
|
|
2228
2228
|
revokingWorkspaceId: revokeAccess.isPending ? revokeAccess.variables?.workspaceId : void 0,
|
|
2229
2229
|
avatar: (values) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2230
|
-
|
|
2230
|
+
chunkFAKRTCAL_cjs.AgentAvatarField,
|
|
2231
2231
|
{
|
|
2232
2232
|
picture,
|
|
2233
2233
|
isBusy: avatarBusy,
|
|
2234
|
-
canGenerate: isEdit ||
|
|
2234
|
+
canGenerate: isEdit || chunkFAKRTCAL_cjs.isValidAgentName(values.name),
|
|
2235
2235
|
onGenerate: () => handleGenerateAvatar(values)
|
|
2236
2236
|
}
|
|
2237
2237
|
),
|
|
@@ -2283,7 +2283,7 @@ function ConnectedAgentCreator({
|
|
|
2283
2283
|
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogTitle, { children: "Connect your agent" }),
|
|
2284
2284
|
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogDescription, { children: "This key is shown once. Run the script on the machine that will host the agent." })
|
|
2285
2285
|
] }),
|
|
2286
|
-
connect && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2286
|
+
connect && /* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.AgentConnectInstructions, { email: connect.email, signingKey: connect.signingKey })
|
|
2287
2287
|
]
|
|
2288
2288
|
}
|
|
2289
2289
|
) })
|
|
@@ -2675,7 +2675,7 @@ function useMemoryCount(enabled) {
|
|
|
2675
2675
|
}
|
|
2676
2676
|
function AgentsTasks({ tasks, isLoading, agents, labels: l, onCompose }) {
|
|
2677
2677
|
const { notify: notify17, openConversation, openDocument } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
2678
|
-
const people =
|
|
2678
|
+
const people = chunkKVKKVSBT_cjs.useTaskPeople();
|
|
2679
2679
|
const canEditShared = react.useCanEditShared();
|
|
2680
2680
|
const isWorkspaceOwner = react.useIsWorkspaceOwner();
|
|
2681
2681
|
const { data: workflows = [] } = react.useWorkflows({ live: true });
|
|
@@ -2701,7 +2701,7 @@ function AgentsTasks({ tasks, isLoading, agents, labels: l, onCompose }) {
|
|
|
2701
2701
|
}, [documents]);
|
|
2702
2702
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2703
2703
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2704
|
-
|
|
2704
|
+
chunkFAKRTCAL_cjs.TaskTable,
|
|
2705
2705
|
{
|
|
2706
2706
|
tasks,
|
|
2707
2707
|
isLoading,
|
|
@@ -2728,7 +2728,7 @@ function AgentsTasks({ tasks, isLoading, agents, labels: l, onCompose }) {
|
|
|
2728
2728
|
}
|
|
2729
2729
|
),
|
|
2730
2730
|
activityFor && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2731
|
-
|
|
2731
|
+
chunkKVKKVSBT_cjs.ConnectedTaskActivityDialog,
|
|
2732
2732
|
{
|
|
2733
2733
|
conversationId: activityFor.external_id,
|
|
2734
2734
|
taskName: activityFor.title || l.untitledTask,
|
|
@@ -2744,7 +2744,7 @@ function AgentsLauncher({ workflows, renderIcon, labels: l, testId }) {
|
|
|
2744
2744
|
const { notify: notify17, openConversation } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
2745
2745
|
const { workspaceId, ensureWorkspaceOpen } = chunkWV65MJ43_cjs.useConnectedWorkspace();
|
|
2746
2746
|
const { data: skills = [] } = react.useSkills({ enabled: !!workspaceId, live: true });
|
|
2747
|
-
const workflowTasks =
|
|
2747
|
+
const workflowTasks = chunkKVKKVSBT_cjs.useWorkflowTasks();
|
|
2748
2748
|
const launchable = react$1.useMemo(
|
|
2749
2749
|
() => [
|
|
2750
2750
|
...workflows,
|
|
@@ -2767,7 +2767,7 @@ function AgentsLauncher({ workflows, renderIcon, labels: l, testId }) {
|
|
|
2767
2767
|
[workflows, skills, l.skillFiles]
|
|
2768
2768
|
);
|
|
2769
2769
|
const launch = async ({ workflow, inputs, agentId }) => {
|
|
2770
|
-
const values =
|
|
2770
|
+
const values = chunkFAKRTCAL_cjs.defaultTaskComposerValues(launchable, {
|
|
2771
2771
|
workflowId: workflow.id,
|
|
2772
2772
|
assignee: "agent",
|
|
2773
2773
|
inputs,
|
|
@@ -2788,7 +2788,7 @@ function AgentsLauncher({ workflows, renderIcon, labels: l, testId }) {
|
|
|
2788
2788
|
}
|
|
2789
2789
|
};
|
|
2790
2790
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2791
|
-
|
|
2791
|
+
chunkZJ3NII4U_cjs.ConnectedWorkflowLauncher,
|
|
2792
2792
|
{
|
|
2793
2793
|
workflows: launchable,
|
|
2794
2794
|
onLaunch: launch,
|
|
@@ -2887,7 +2887,7 @@ function ConnectedAgentsPageScope(props) {
|
|
|
2887
2887
|
children,
|
|
2888
2888
|
/* @__PURE__ */ jsxRuntime.jsx(ConnectedAgentCreator, { ...management.editorProps, ...agentOptions.creator }),
|
|
2889
2889
|
taskDialog && /* @__PURE__ */ jsxRuntime.jsx(
|
|
2890
|
-
|
|
2890
|
+
chunkKVKKVSBT_cjs.ConnectedTaskComposer,
|
|
2891
2891
|
{
|
|
2892
2892
|
open: true,
|
|
2893
2893
|
onOpenChange: (open) => !open && setTaskDialog(null),
|
|
@@ -2909,7 +2909,7 @@ function AgentsGallery() {
|
|
|
2909
2909
|
cardTestIds
|
|
2910
2910
|
} = agentOptions;
|
|
2911
2911
|
const { openConversation } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
2912
|
-
const tasksByAgent = react$1.useMemo(() =>
|
|
2912
|
+
const tasksByAgent = react$1.useMemo(() => chunkFAKRTCAL_cjs.groupAgentTasks(tasks), [tasks]);
|
|
2913
2913
|
const behaviour = useAgentBehaviour(l.defaultBehaviour, details.includes("behaviour"));
|
|
2914
2914
|
const { agents } = management;
|
|
2915
2915
|
const cardDetails = (agent) => details.map(
|
|
@@ -2924,7 +2924,7 @@ function AgentsGallery() {
|
|
|
2924
2924
|
) : detail === "workspaces" ? /* @__PURE__ */ jsxRuntime.jsx(AgentWorkspaceAccess, { agentExtId: agent.external_id, labels: l }, detail) : /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: behaviour.behaviourOf(agent.given_name) }, detail)
|
|
2925
2925
|
);
|
|
2926
2926
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2927
|
-
|
|
2927
|
+
chunkFAKRTCAL_cjs.AgentGallery,
|
|
2928
2928
|
{
|
|
2929
2929
|
count: agents.length,
|
|
2930
2930
|
onCreate: management.create,
|
|
@@ -2934,9 +2934,9 @@ function AgentsGallery() {
|
|
|
2934
2934
|
const agentTasks = tasksByAgent.get(agent.external_id) ?? [];
|
|
2935
2935
|
const running = agentTasks.filter((t) => t.in_progress);
|
|
2936
2936
|
const watchConversationId = running[0]?.external_id ?? null;
|
|
2937
|
-
const progress = agentTasks[0] ?
|
|
2937
|
+
const progress = agentTasks[0] ? chunkFAKRTCAL_cjs.goalProgress(agentTasks[0]) : null;
|
|
2938
2938
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2939
|
-
|
|
2939
|
+
chunkFAKRTCAL_cjs.AgentCard,
|
|
2940
2940
|
{
|
|
2941
2941
|
name: displayName(agent),
|
|
2942
2942
|
avatar: /* @__PURE__ */ jsxRuntime.jsx(AgentInitialsAvatar, { agent }),
|
|
@@ -3044,7 +3044,7 @@ function AgentsSectionBody({ id }) {
|
|
|
3044
3044
|
) });
|
|
3045
3045
|
case "scheduled":
|
|
3046
3046
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-[min(32rem,70dvh)] min-h-64 flex-col", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3047
|
-
|
|
3047
|
+
chunkZJ3NII4U_cjs.ConnectedWorkflowsTable,
|
|
3048
3048
|
{
|
|
3049
3049
|
filter: "scheduled",
|
|
3050
3050
|
onEdit: (w) => openWorkflow?.(w.external_id),
|
|
@@ -3106,7 +3106,7 @@ function ConnectedAgentsPage({
|
|
|
3106
3106
|
className: "flex h-full flex-col",
|
|
3107
3107
|
"data-testid": scope.testIds?.root ?? DEFAULT_TEST_IDS.root,
|
|
3108
3108
|
children: [
|
|
3109
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3109
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.DraggableHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3110
3110
|
chunkSJSGSHIT_cjs.TabHeader,
|
|
3111
3111
|
{
|
|
3112
3112
|
tabs: [
|
|
@@ -3218,10 +3218,10 @@ function cascadeTagCombination(tags, previous, next) {
|
|
|
3218
3218
|
function tagCombinationMatches(combination, items) {
|
|
3219
3219
|
if (!isCombining(combination)) return void 0;
|
|
3220
3220
|
const pass = (list) => new Set(
|
|
3221
|
-
|
|
3221
|
+
chunk6OXR4R6J_cjs.applyInvertedIndexFilter(
|
|
3222
3222
|
[...list],
|
|
3223
3223
|
combination,
|
|
3224
|
-
|
|
3224
|
+
chunk6OXR4R6J_cjs.buildInvertedIndex(
|
|
3225
3225
|
[...list],
|
|
3226
3226
|
(item) => item.id,
|
|
3227
3227
|
(item) => item.tagIds
|
|
@@ -3348,7 +3348,7 @@ function ConnectedTagTable({
|
|
|
3348
3348
|
const fail2 = (fallback) => (e) => notify17(browser.refusalReason(e, fallback), "error");
|
|
3349
3349
|
const snapshot2 = (data) => {
|
|
3350
3350
|
const title = exportTitle ?? ui.tagKindTitle(kind, { plural: true });
|
|
3351
|
-
const bytes =
|
|
3351
|
+
const bytes = chunkZA3ZELSH_cjs.tagTableDocx(data, {
|
|
3352
3352
|
title,
|
|
3353
3353
|
nameOf: (id) => people.find((p) => p.value === id)?.label
|
|
3354
3354
|
});
|
|
@@ -3357,7 +3357,7 @@ function ConnectedTagTable({
|
|
|
3357
3357
|
return { blob: new Blob([bytes], { type: chunkJIOHDVWH_cjs.DOCX_MIME_TYPE }), name };
|
|
3358
3358
|
};
|
|
3359
3359
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3360
|
-
|
|
3360
|
+
chunkZA3ZELSH_cjs.TagTable,
|
|
3361
3361
|
{
|
|
3362
3362
|
...props,
|
|
3363
3363
|
table,
|
|
@@ -3727,9 +3727,9 @@ function GlossaryExport({ labelId, nameOf }) {
|
|
|
3727
3727
|
const narrowed = agreements.find((a) => a.id === narrowTo);
|
|
3728
3728
|
const title = narrowed ? `Glossary - ${narrowed.name}` : "Glossary";
|
|
3729
3729
|
const download = (format) => {
|
|
3730
|
-
const entries =
|
|
3731
|
-
const blob = format === "docx" ? new Blob([
|
|
3732
|
-
documentTools.downloadBlob(blob,
|
|
3730
|
+
const entries = chunkZA3ZELSH_cjs.glossaryEntries(sources, { labelId: narrowed?.id });
|
|
3731
|
+
const blob = format === "docx" ? new Blob([chunkZA3ZELSH_cjs.glossaryDocx(entries, { title })], { type: chunkJIOHDVWH_cjs.DOCX_MIME_TYPE }) : new Blob([chunkZA3ZELSH_cjs.glossaryMarkdown(entries, { title })], { type: "text/markdown" });
|
|
3732
|
+
documentTools.downloadBlob(blob, chunkZA3ZELSH_cjs.glossaryFileName(title, format));
|
|
3733
3733
|
};
|
|
3734
3734
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", "data-testid": "tags-glossary", children: [
|
|
3735
3735
|
agreements.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -4193,7 +4193,7 @@ function TagFilterChips({
|
|
|
4193
4193
|
const name = (id) => tags.find((t) => t.external_id === id)?.name ?? id;
|
|
4194
4194
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1.5", "data-testid": "tags-filter-chips", children: [
|
|
4195
4195
|
set.map(([id, state]) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
4196
|
-
|
|
4196
|
+
chunk6OXR4R6J_cjs.FilterChip,
|
|
4197
4197
|
{
|
|
4198
4198
|
label: name(id),
|
|
4199
4199
|
labelContent: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4258,7 +4258,7 @@ function KindSection({
|
|
|
4258
4258
|
{
|
|
4259
4259
|
testId: `tags-kind-${kind}`,
|
|
4260
4260
|
title: ui.tagKindTitle(kind, { plural: true }),
|
|
4261
|
-
description:
|
|
4261
|
+
description: chunkZA3ZELSH_cjs.tagKindDescription(kind),
|
|
4262
4262
|
children: [
|
|
4263
4263
|
browser.isEntityTag({ kind }) && extractingCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4264
4264
|
"p",
|
|
@@ -4268,9 +4268,9 @@ function KindSection({
|
|
|
4268
4268
|
children: [
|
|
4269
4269
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-4 animate-spin" }),
|
|
4270
4270
|
"Extracting ",
|
|
4271
|
-
|
|
4271
|
+
chunkZA3ZELSH_cjs.entitiesPhrase().toLowerCase(),
|
|
4272
4272
|
" from ",
|
|
4273
|
-
|
|
4273
|
+
chunkZA3ZELSH_cjs.documentCount(extractingCount),
|
|
4274
4274
|
"\u2026"
|
|
4275
4275
|
]
|
|
4276
4276
|
}
|
|
@@ -4288,7 +4288,7 @@ function KindSection({
|
|
|
4288
4288
|
onOpenTag: ctx.onOpenTag,
|
|
4289
4289
|
onOpenRow: ctx.onOpenTag,
|
|
4290
4290
|
onOpenTaggedItems: ctx.onOpenTaggedItems,
|
|
4291
|
-
labels:
|
|
4291
|
+
labels: chunkZA3ZELSH_cjs.tagTableLabels(kind),
|
|
4292
4292
|
testId: `tags-table-${kind}`
|
|
4293
4293
|
}
|
|
4294
4294
|
)
|
|
@@ -4396,15 +4396,15 @@ function TagSection({
|
|
|
4396
4396
|
onOpenTag: ctx.onOpenTag,
|
|
4397
4397
|
onOpenRow: ctx.onOpenTag,
|
|
4398
4398
|
onOpenTaggedItems: ctx.onOpenTaggedItems,
|
|
4399
|
-
labels:
|
|
4399
|
+
labels: chunkZA3ZELSH_cjs.tagTableLabels(tag.kind),
|
|
4400
4400
|
testId: "tags-rows"
|
|
4401
4401
|
}
|
|
4402
4402
|
),
|
|
4403
4403
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4404
|
-
|
|
4404
|
+
chunkZA3ZELSH_cjs.TagDetail,
|
|
4405
4405
|
{
|
|
4406
4406
|
onOpenTaggedItems: ctx.onOpenTaggedItems,
|
|
4407
|
-
fieldLabels:
|
|
4407
|
+
fieldLabels: chunkZA3ZELSH_cjs.tagTableLabels(tag.kind),
|
|
4408
4408
|
row: detailRow,
|
|
4409
4409
|
fields: schema.data?.fields ?? [],
|
|
4410
4410
|
isLoading: detail.isLoading,
|
|
@@ -4412,7 +4412,7 @@ function TagSection({
|
|
|
4412
4412
|
tags: tagOptions,
|
|
4413
4413
|
onOpenTag: ctx.onOpenTag,
|
|
4414
4414
|
onChangeValue: (id, fieldId, value) => setValues.mutateAsync({ tagId: id, values: { [fieldId]: value } }).catch((e) => notify17(browser.refusalReason(e, "Could not save the value"), "error")),
|
|
4415
|
-
labels:
|
|
4415
|
+
labels: chunkZA3ZELSH_cjs.tagDetailLabels(),
|
|
4416
4416
|
testId: "tags-detail"
|
|
4417
4417
|
}
|
|
4418
4418
|
)
|
|
@@ -4487,7 +4487,7 @@ function ConnectedTagsPage() {
|
|
|
4487
4487
|
const onDelete = async (t) => {
|
|
4488
4488
|
const nested = browser.getChildTags([...tags], t.external_id);
|
|
4489
4489
|
const uses = browser.tagUseCount(t);
|
|
4490
|
-
const n2 =
|
|
4490
|
+
const n2 = chunkZA3ZELSH_cjs.tagsPageNouns();
|
|
4491
4491
|
const tagNoun = (count2) => (count2 === 1 ? n2.tag : n2.tags).toLowerCase();
|
|
4492
4492
|
const carriers = uses === 1 ? `${n2.document}, ${n2.fact} or ${n2.thread}` : `${n2.documents}, ${n2.facts} and ${n2.threads}`;
|
|
4493
4493
|
const message = `Delete ${ui.tagKindNouns(t.kind).singular} "${t.name}"?` + (uses > 0 ? `
|
|
@@ -4508,11 +4508,11 @@ ${nested.length} nested ${tagNoun(nested.length)} ${nested.length === 1 ? "moves
|
|
|
4508
4508
|
try {
|
|
4509
4509
|
await extract.mutateAsync(docIds);
|
|
4510
4510
|
notify17(
|
|
4511
|
-
`Extracting ${
|
|
4511
|
+
`Extracting ${chunkZA3ZELSH_cjs.entitiesPhrase().toLowerCase()} from ${chunkZA3ZELSH_cjs.documentCount(docIds.length)}. You will be notified when it is done.`,
|
|
4512
4512
|
"info"
|
|
4513
4513
|
);
|
|
4514
4514
|
} catch (error) {
|
|
4515
|
-
notify17(browser.refusalReason(error, `Could not extract ${
|
|
4515
|
+
notify17(browser.refusalReason(error, `Could not extract ${chunkZA3ZELSH_cjs.entitiesPhrase().toLowerCase()}`), "error");
|
|
4516
4516
|
throw error;
|
|
4517
4517
|
}
|
|
4518
4518
|
};
|
|
@@ -4526,10 +4526,10 @@ ${nested.length} nested ${tagNoun(nested.length)} ${nested.length === 1 ? "moves
|
|
|
4526
4526
|
onOpenTag: openTag,
|
|
4527
4527
|
onOpenTaggedItems
|
|
4528
4528
|
};
|
|
4529
|
-
const n =
|
|
4529
|
+
const n = chunkZA3ZELSH_cjs.tagsPageNouns();
|
|
4530
4530
|
const action = view === "person" || view === "organisation" ? {
|
|
4531
4531
|
label: "Extract",
|
|
4532
|
-
title: `Extract ${
|
|
4532
|
+
title: `Extract ${chunkZA3ZELSH_cjs.entitiesPhrase().toLowerCase()} from ${n.documents.toLowerCase()}`,
|
|
4533
4533
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "h-4 w-4" }),
|
|
4534
4534
|
run: () => setExtracting(true),
|
|
4535
4535
|
testId: "tags-extract-entities"
|
|
@@ -4698,7 +4698,7 @@ ${nested.length} nested ${tagNoun(nested.length)} ${nested.length === 1 ? "moves
|
|
|
4698
4698
|
}
|
|
4699
4699
|
),
|
|
4700
4700
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4701
|
-
|
|
4701
|
+
chunkZA3ZELSH_cjs.ExtractEntitiesDialog,
|
|
4702
4702
|
{
|
|
4703
4703
|
open: extracting,
|
|
4704
4704
|
onOpenChange: setExtracting,
|
|
@@ -4882,7 +4882,7 @@ function ConnectedPanelHost({
|
|
|
4882
4882
|
onClose();
|
|
4883
4883
|
}, [onClose]);
|
|
4884
4884
|
const setFocusedArea = react.useArbiSessionStore().setFocusedArea;
|
|
4885
|
-
const { popoutTitle } =
|
|
4885
|
+
const { popoutTitle } = chunkCMMFXSTS_cjs.usePanelHostSupport();
|
|
4886
4886
|
const focusedArea = react.useArbiSessionState((s) => s.shell.focusedArea);
|
|
4887
4887
|
const handlePanelFocus = react$1.useCallback(() => {
|
|
4888
4888
|
setFocusedArea(panelId);
|
|
@@ -4915,7 +4915,7 @@ function ConnectedPanelHost({
|
|
|
4915
4915
|
}, [isExiting]);
|
|
4916
4916
|
if (!isOpen && !isExiting) return null;
|
|
4917
4917
|
const modeSwitcher = /* @__PURE__ */ jsxRuntime.jsx(
|
|
4918
|
-
|
|
4918
|
+
chunkCMMFXSTS_cjs.PanelModeSwitcher,
|
|
4919
4919
|
{
|
|
4920
4920
|
mode,
|
|
4921
4921
|
onModeChange: setPanelMode,
|
|
@@ -4925,7 +4925,7 @@ function ConnectedPanelHost({
|
|
|
4925
4925
|
}
|
|
4926
4926
|
);
|
|
4927
4927
|
const panelElement = /* @__PURE__ */ jsxRuntime.jsx(
|
|
4928
|
-
|
|
4928
|
+
chunk6OXR4R6J_cjs.FloatingPanel,
|
|
4929
4929
|
{
|
|
4930
4930
|
panelId,
|
|
4931
4931
|
mode,
|
|
@@ -4937,7 +4937,7 @@ function ConnectedPanelHost({
|
|
|
4937
4937
|
}
|
|
4938
4938
|
);
|
|
4939
4939
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4940
|
-
|
|
4940
|
+
chunkCMMFXSTS_cjs.PanelPortal,
|
|
4941
4941
|
{
|
|
4942
4942
|
defaultWidth,
|
|
4943
4943
|
panelId,
|
|
@@ -6058,7 +6058,7 @@ function ConnectedFieldsManager({
|
|
|
6058
6058
|
) })
|
|
6059
6059
|
] });
|
|
6060
6060
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-full", children: [
|
|
6061
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
6061
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.DraggableHeader, { children: [
|
|
6062
6062
|
/* @__PURE__ */ jsxRuntime.jsx(chunk33MKOWSA_cjs.FieldsManagerTitle, { title, className: "px-4 pt-3.5 pb-2" }),
|
|
6063
6063
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-3", children: tabHeader })
|
|
6064
6064
|
] }),
|
|
@@ -6175,7 +6175,7 @@ function ConnectedFactsSmartSearch({
|
|
|
6175
6175
|
const runSearch = () => search().catch(() => notify17(`Could not search ${factsWord}. Please try again.`, "error"));
|
|
6176
6176
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full min-h-0 flex-col", "data-testid": "facts-smart-search", children: [
|
|
6177
6177
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6178
|
-
|
|
6178
|
+
chunkHDPT7D6F_cjs.FactSearchBar,
|
|
6179
6179
|
{
|
|
6180
6180
|
query,
|
|
6181
6181
|
onQueryChange: setQuery,
|
|
@@ -6184,7 +6184,7 @@ function ConnectedFactsSmartSearch({
|
|
|
6184
6184
|
isSearching
|
|
6185
6185
|
}
|
|
6186
6186
|
),
|
|
6187
|
-
!isSearching && hits !== null && hits.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6187
|
+
!isSearching && hits !== null && hits.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkHDPT7D6F_cjs.FactSearchTotals, { children: [
|
|
6188
6188
|
hits.length.toLocaleString(),
|
|
6189
6189
|
" ",
|
|
6190
6190
|
hits.length === 1 ? factWord : factsWord,
|
|
@@ -6192,18 +6192,18 @@ function ConnectedFactsSmartSearch({
|
|
|
6192
6192
|
lastQuery,
|
|
6193
6193
|
"\u201D"
|
|
6194
6194
|
] }),
|
|
6195
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "scrollbar-subtle min-h-0 flex-1 overflow-y-auto px-4 pb-3", children: isSearching ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6195
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "scrollbar-subtle min-h-0 flex-1 overflow-y-auto px-4 pb-3", children: isSearching ? /* @__PURE__ */ jsxRuntime.jsxs(chunkHDPT7D6F_cjs.FactSearchPending, { children: [
|
|
6196
6196
|
"Searching ",
|
|
6197
6197
|
factsWord,
|
|
6198
6198
|
"\u2026"
|
|
6199
|
-
] }) : hits === null ? /* @__PURE__ */ jsxRuntime.jsx(chunkNX56DIG3_cjs.SearchEmptyState, { nouns, count: allFacts.length }) : hits.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6199
|
+
] }) : hits === null ? /* @__PURE__ */ jsxRuntime.jsx(chunkNX56DIG3_cjs.SearchEmptyState, { nouns, count: allFacts.length }) : hits.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkHDPT7D6F_cjs.FactSearchNoMatches, { children: [
|
|
6200
6200
|
"No ",
|
|
6201
6201
|
factsWord,
|
|
6202
6202
|
" matched \u201C",
|
|
6203
6203
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-foreground", children: lastQuery }),
|
|
6204
6204
|
"\u201D."
|
|
6205
6205
|
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-2", children: hits.map((h, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6206
|
-
|
|
6206
|
+
chunkHDPT7D6F_cjs.FactSearchResult,
|
|
6207
6207
|
{
|
|
6208
6208
|
id: h.external_id,
|
|
6209
6209
|
rank: i + 1,
|
|
@@ -6303,7 +6303,7 @@ function FactSourcesPopover({
|
|
|
6303
6303
|
const olderVersion = refOf(docId) !== docId ? refOf(docId).split("@v")[1] : null;
|
|
6304
6304
|
const cited = passagesOf(docId);
|
|
6305
6305
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6306
|
-
|
|
6306
|
+
chunkHDPT7D6F_cjs.FactSourceGroup,
|
|
6307
6307
|
{
|
|
6308
6308
|
docId,
|
|
6309
6309
|
isViewing,
|
|
@@ -6392,7 +6392,7 @@ function FactMarkdownEditor({
|
|
|
6392
6392
|
const editorRef = react$1.useRef(null);
|
|
6393
6393
|
react$1.useEffect(() => {
|
|
6394
6394
|
if (!editorRef.current) return;
|
|
6395
|
-
return
|
|
6395
|
+
return chunkHDPT7D6F_cjs.enableFactTableColumnResize(editorRef.current);
|
|
6396
6396
|
}, []);
|
|
6397
6397
|
react$1.useEffect(() => {
|
|
6398
6398
|
if (!editing) return;
|
|
@@ -6958,10 +6958,10 @@ function useFactFilters(notes, view, chat) {
|
|
|
6958
6958
|
);
|
|
6959
6959
|
const setFactFilters = view.setFilters;
|
|
6960
6960
|
const quickFilteredNotes = react$1.useMemo(
|
|
6961
|
-
() =>
|
|
6961
|
+
() => chunk6OXR4R6J_cjs.applyInvertedIndexFilter(
|
|
6962
6962
|
notes,
|
|
6963
6963
|
factFilters,
|
|
6964
|
-
|
|
6964
|
+
chunk6OXR4R6J_cjs.buildInvertedIndex(
|
|
6965
6965
|
notes,
|
|
6966
6966
|
(f) => f.external_id,
|
|
6967
6967
|
(f) => Object.entries(getFactFilterAttributes(f)).filter(([id, on]) => on && factFilterIds.includes(id)).map(([id]) => id)
|
|
@@ -7031,7 +7031,7 @@ function useFactFilters(notes, view, chat) {
|
|
|
7031
7031
|
const makeTagPicker = react$1.useCallback(
|
|
7032
7032
|
(selected, setSelected, opts) => {
|
|
7033
7033
|
const applied = new Set(selected);
|
|
7034
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7034
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkHDPT7D6F_cjs.FactFieldRow, { label: "Labels", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7035
7035
|
chunk33MKOWSA_cjs.FieldLabelsSelect,
|
|
7036
7036
|
{
|
|
7037
7037
|
options: labelOptions,
|
|
@@ -7223,14 +7223,14 @@ function useFactSelection(notes, gridApiRef, setFactTags, chat) {
|
|
|
7223
7223
|
}
|
|
7224
7224
|
function renderSourcesCell(params) {
|
|
7225
7225
|
const fact = params.data;
|
|
7226
|
-
const count2 =
|
|
7226
|
+
const count2 = chunkHDPT7D6F_cjs.sourceDocCount(fact);
|
|
7227
7227
|
if (!fact || count2 === 0) return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground/40", children: "\u2014" });
|
|
7228
7228
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7229
7229
|
"button",
|
|
7230
7230
|
{
|
|
7231
7231
|
type: "button",
|
|
7232
7232
|
onClick: () => params.context?.openEdit?.(fact),
|
|
7233
|
-
title:
|
|
7233
|
+
title: chunkHDPT7D6F_cjs.DEFAULT_FACT_COLUMN_LABELS.sourcedFrom(count2),
|
|
7234
7234
|
"data-testid": `facts-grid-sources-${fact.external_id}`,
|
|
7235
7235
|
className: "inline-flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground",
|
|
7236
7236
|
children: [
|
|
@@ -7287,14 +7287,14 @@ function createFactPageColumns({
|
|
|
7287
7287
|
onToggleConfirmed,
|
|
7288
7288
|
onToggleShared
|
|
7289
7289
|
}) {
|
|
7290
|
-
const columns =
|
|
7290
|
+
const columns = chunkHDPT7D6F_cjs.createFactColumns({
|
|
7291
7291
|
onToggleInChat,
|
|
7292
7292
|
isInChat,
|
|
7293
7293
|
renderHeader: (params, colId) => /* @__PURE__ */ jsxRuntime.jsx(FactHeader, { params, colId }),
|
|
7294
7294
|
renderRowActions: (fact, params) => {
|
|
7295
7295
|
const ctx = params.context;
|
|
7296
7296
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7297
|
-
|
|
7297
|
+
chunkHDPT7D6F_cjs.FactRowActions,
|
|
7298
7298
|
{
|
|
7299
7299
|
onEdit: () => ctx?.openEdit?.(fact),
|
|
7300
7300
|
canEdit: ctx?.canRewrite?.(fact) !== false,
|
|
@@ -7424,7 +7424,7 @@ function useFactsGrid({
|
|
|
7424
7424
|
);
|
|
7425
7425
|
const renderFactTags = react$1.useCallback(
|
|
7426
7426
|
(fact, rowHeight) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7427
|
-
|
|
7427
|
+
chunkHDPT7D6F_cjs.FactLabelsCell,
|
|
7428
7428
|
{
|
|
7429
7429
|
options: labelOptions,
|
|
7430
7430
|
selectedIds: fact.tags.map((t) => t.tag_ext_id),
|
|
@@ -7789,7 +7789,7 @@ function ConnectedFactsPage() {
|
|
|
7789
7789
|
};
|
|
7790
7790
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: setFactSection, className: "relative flex h-full flex-col", "data-testid": "facts-page", children: [
|
|
7791
7791
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7792
|
-
|
|
7792
|
+
chunkHDPT7D6F_cjs.FactsToolbar,
|
|
7793
7793
|
{
|
|
7794
7794
|
count: filteredNotes.length,
|
|
7795
7795
|
hasActiveFilters: filters.hasActiveFilters,
|
|
@@ -7818,7 +7818,7 @@ function ConnectedFactsPage() {
|
|
|
7818
7818
|
onNewFact: composing && !editingId ? () => void 0 : composer.startNewFact,
|
|
7819
7819
|
navSlotRef: setNavSlot,
|
|
7820
7820
|
navigator: view === "table" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7821
|
-
|
|
7821
|
+
chunkZA3ZELSH_cjs.GridRowNavigator,
|
|
7822
7822
|
{
|
|
7823
7823
|
gridApi,
|
|
7824
7824
|
selectedId: editingId,
|
|
@@ -7829,7 +7829,7 @@ function ConnectedFactsPage() {
|
|
|
7829
7829
|
) : null,
|
|
7830
7830
|
showToolbarRow: view !== "smart_search",
|
|
7831
7831
|
tools: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7832
|
-
view === "table" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7832
|
+
view === "table" && /* @__PURE__ */ jsxRuntime.jsx(chunkHDPT7D6F_cjs.FactsFieldsButton, { getGridApi: () => gridApiRef.current }),
|
|
7833
7833
|
view === "table" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7834
7834
|
chunk33MKOWSA_cjs.RowDensityControl,
|
|
7835
7835
|
{
|
|
@@ -7867,7 +7867,7 @@ function ConnectedFactsPage() {
|
|
|
7867
7867
|
}
|
|
7868
7868
|
) }),
|
|
7869
7869
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7870
|
-
|
|
7870
|
+
chunkHDPT7D6F_cjs.FactComposer,
|
|
7871
7871
|
{
|
|
7872
7872
|
isOpen: composing,
|
|
7873
7873
|
isEditing: !!editingId,
|
|
@@ -7897,7 +7897,7 @@ function ConnectedFactsPage() {
|
|
|
7897
7897
|
reserveSourcesSpace: view === "gantt" || view === "calendar",
|
|
7898
7898
|
citationContainer: factSection,
|
|
7899
7899
|
renderDocumentPicker: (onSelect, selectedIds, onOpen, sourcesToggle, sourcesOpen) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
7900
|
-
|
|
7900
|
+
chunkHDPT7D6F_cjs.FactSourcesRow,
|
|
7901
7901
|
{
|
|
7902
7902
|
toggle: sourcesToggle,
|
|
7903
7903
|
picker: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7943,7 +7943,7 @@ function ConnectedFactsPage() {
|
|
|
7943
7943
|
}
|
|
7944
7944
|
),
|
|
7945
7945
|
dateInput: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7946
|
-
|
|
7946
|
+
chunkHDPT7D6F_cjs.FactDateInput,
|
|
7947
7947
|
{
|
|
7948
7948
|
value: composer.draftDateFields,
|
|
7949
7949
|
onChange: composer.setDraftDateFields,
|
|
@@ -7953,7 +7953,7 @@ function ConnectedFactsPage() {
|
|
|
7953
7953
|
}
|
|
7954
7954
|
),
|
|
7955
7955
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "scrollbar-subtle flex-1 overflow-y-auto pb-2", children: [
|
|
7956
|
-
isLoading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7956
|
+
isLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunkHDPT7D6F_cjs.FactsLoading, {}) : isError ? /* @__PURE__ */ jsxRuntime.jsx(chunkHDPT7D6F_cjs.FactsLoadError, { onRetry: () => refetch() }) : view === "smart_search" ? (
|
|
7957
7957
|
// Searches facts only (never documents). Kept before the empty-state guard so the
|
|
7958
7958
|
// search UI is reachable even in an empty workspace.
|
|
7959
7959
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7966,7 +7966,7 @@ function ConnectedFactsPage() {
|
|
|
7966
7966
|
)
|
|
7967
7967
|
) : notes.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-full flex-col items-center justify-center", children: [
|
|
7968
7968
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7969
|
-
|
|
7969
|
+
chunkHDPT7D6F_cjs.FactsEmptyState,
|
|
7970
7970
|
{
|
|
7971
7971
|
onUseExample: (text2) => {
|
|
7972
7972
|
composer.setDraft(text2);
|
|
@@ -7977,7 +7977,7 @@ function ConnectedFactsPage() {
|
|
|
7977
7977
|
),
|
|
7978
7978
|
/* @__PURE__ */ jsxRuntime.jsx(FactsFindInDocuments, {})
|
|
7979
7979
|
] }) : view === "calendar" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7980
|
-
|
|
7980
|
+
chunkHDPT7D6F_cjs.FactsCalendar,
|
|
7981
7981
|
{
|
|
7982
7982
|
facts: filteredNotes,
|
|
7983
7983
|
onSelect: (n) => openEditIfAllowed(n),
|
|
@@ -7986,7 +7986,7 @@ function ConnectedFactsPage() {
|
|
|
7986
7986
|
navigatorTotal: filteredNotes.length
|
|
7987
7987
|
}
|
|
7988
7988
|
) : view === "gantt" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7989
|
-
|
|
7989
|
+
chunkHDPT7D6F_cjs.FactsGanttPane,
|
|
7990
7990
|
{
|
|
7991
7991
|
items: ganttItems,
|
|
7992
7992
|
labelWidth: pageView.labelWidth,
|
|
@@ -8036,7 +8036,7 @@ function ConnectedFactsPage() {
|
|
|
8036
8036
|
)
|
|
8037
8037
|
] }),
|
|
8038
8038
|
selectable && notes.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8039
|
-
|
|
8039
|
+
chunkHDPT7D6F_cjs.FactsBulkBar,
|
|
8040
8040
|
{
|
|
8041
8041
|
count: selection.selectedFacts.length,
|
|
8042
8042
|
onClear: selection.clearSelection,
|
|
@@ -8095,7 +8095,7 @@ function useConnectedShellWorkspaces(options2 = {}) {
|
|
|
8095
8095
|
function ConnectedSsoDisconnect() {
|
|
8096
8096
|
const { client } = react.useAccountClient();
|
|
8097
8097
|
const { data: profile } = react.useProfile();
|
|
8098
|
-
const auth =
|
|
8098
|
+
const auth = chunkO2ATVRRO_cjs.useAuthPages();
|
|
8099
8099
|
const { notify: notify17 } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
8100
8100
|
const [open, setOpen] = react$1.useState(false);
|
|
8101
8101
|
const [step, setStep] = react$1.useState("email");
|
|
@@ -8240,7 +8240,7 @@ function ConnectedBoxPortalSection() {
|
|
|
8240
8240
|
function ServerConnectionRow({ onRefresh, ...status }) {
|
|
8241
8241
|
const { runtimeConfig } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
8242
8242
|
const [isRefreshing, setIsRefreshing] = react$1.useState(false);
|
|
8243
|
-
const view =
|
|
8243
|
+
const view = chunk6OXR4R6J_cjs.serverConnectionView(status, runtimeConfig.deploymentDomain || "server");
|
|
8244
8244
|
const refresh = async () => {
|
|
8245
8245
|
setIsRefreshing(true);
|
|
8246
8246
|
try {
|
|
@@ -8250,7 +8250,7 @@ function ServerConnectionRow({ onRefresh, ...status }) {
|
|
|
8250
8250
|
}
|
|
8251
8251
|
};
|
|
8252
8252
|
return /* @__PURE__ */ jsxRuntime.jsx(chunkQQMMCXBP_cjs.SettingsRow, { label: "Server connection", description: view.description, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8253
|
-
|
|
8253
|
+
chunk6OXR4R6J_cjs.ServerConnectionButton,
|
|
8254
8254
|
{
|
|
8255
8255
|
state: view.state,
|
|
8256
8256
|
label: view.label,
|
|
@@ -8273,14 +8273,14 @@ function ConnectedAccountSettings({
|
|
|
8273
8273
|
}) {
|
|
8274
8274
|
const [logoutOpen, setLogoutOpen] = react$1.useState(false);
|
|
8275
8275
|
return /* @__PURE__ */ jsxRuntime.jsxs(chunkQQMMCXBP_cjs.SettingsPanel, { className: "max-w-2xl", children: [
|
|
8276
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8276
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkO2ATVRRO_cjs.ConnectedProfileCard, { avatarClassName, nameBadge: profileBadge }),
|
|
8277
8277
|
/* @__PURE__ */ jsxRuntime.jsx(ConnectedBoxPortalSection, {}),
|
|
8278
8278
|
/* @__PURE__ */ jsxRuntime.jsxs(chunkQQMMCXBP_cjs.SettingsDisclosure, { title: "More", testId: "account-more-settings", children: [
|
|
8279
8279
|
/* @__PURE__ */ jsxRuntime.jsx(ConnectedSsoDisconnect, {}),
|
|
8280
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8280
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkO2ATVRRO_cjs.ConnectedSecuritySection, { children: securityRows }),
|
|
8281
8281
|
moreSettings,
|
|
8282
8282
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8283
|
-
|
|
8283
|
+
chunkO2ATVRRO_cjs.ConnectedIdentityVerification,
|
|
8284
8284
|
{
|
|
8285
8285
|
collapsible: true,
|
|
8286
8286
|
onManageBilling,
|
|
@@ -8290,7 +8290,7 @@ function ConnectedAccountSettings({
|
|
|
8290
8290
|
] }),
|
|
8291
8291
|
/* @__PURE__ */ jsxRuntime.jsx(chunkQQMMCXBP_cjs.SettingsSection, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Wifi, {}), title: "Session", children: /* @__PURE__ */ jsxRuntime.jsxs(chunkQQMMCXBP_cjs.SettingsCard, { children: [
|
|
8292
8292
|
connection && /* @__PURE__ */ jsxRuntime.jsx(ServerConnectionRow, { ...connection }),
|
|
8293
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8293
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkO2ATVRRO_cjs.ConnectedSessionsRow, { renderSessionIcon }),
|
|
8294
8294
|
/* @__PURE__ */ jsxRuntime.jsx(chunkQQMMCXBP_cjs.SettingsRow, { label: "Logout", description: "Sign out of your account on this device.", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8295
8295
|
ui.Button,
|
|
8296
8296
|
{
|
|
@@ -8307,9 +8307,9 @@ function ConnectedAccountSettings({
|
|
|
8307
8307
|
}
|
|
8308
8308
|
) })
|
|
8309
8309
|
] }) }),
|
|
8310
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8310
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkO2ATVRRO_cjs.ConnectedDangerZone, { renderSubscriptionLink }),
|
|
8311
8311
|
!onLogout && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8312
|
-
|
|
8312
|
+
chunkO2ATVRRO_cjs.ConnectedLogoutDialog,
|
|
8313
8313
|
{
|
|
8314
8314
|
open: logoutOpen,
|
|
8315
8315
|
onClose: () => setLogoutOpen(false),
|
|
@@ -8617,7 +8617,7 @@ function ConnectedPrivacySettings({
|
|
|
8617
8617
|
}
|
|
8618
8618
|
)
|
|
8619
8619
|
] }) }),
|
|
8620
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8620
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkO2ATVRRO_cjs.ConnectedNotificationPreferences, {})
|
|
8621
8621
|
] });
|
|
8622
8622
|
}
|
|
8623
8623
|
var PROVIDER_NAMES = {
|
|
@@ -8658,13 +8658,13 @@ var COLUMNS = [
|
|
|
8658
8658
|
flex: 1,
|
|
8659
8659
|
minWidth: 120,
|
|
8660
8660
|
cellRenderer: (params) => isStandard(params.data) ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
8661
|
-
|
|
8661
|
+
chunk6OXR4R6J_cjs.ModelProviderLabel,
|
|
8662
8662
|
{
|
|
8663
8663
|
logo: /* @__PURE__ */ jsxRuntime.jsx(ui.ArbiIcon, { size: 14, "aria-label": "ARBI", className: "flex-shrink-0 rounded-sm" }),
|
|
8664
8664
|
children: "ARBI CITY"
|
|
8665
8665
|
}
|
|
8666
8666
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
8667
|
-
|
|
8667
|
+
chunk6OXR4R6J_cjs.ModelProviderLabel,
|
|
8668
8668
|
{
|
|
8669
8669
|
logo: /* @__PURE__ */ jsxRuntime.jsx(ui.ProviderIcon, { modelName: params.data?.model_name, provider: params.value, size: 14 }),
|
|
8670
8670
|
children: PROVIDER_NAMES[params.value ?? ""] || params.value || "\u2014"
|
|
@@ -8741,7 +8741,7 @@ function ConnectedPremiumModels() {
|
|
|
8741
8741
|
);
|
|
8742
8742
|
if (premiumModels.length === 0) return null;
|
|
8743
8743
|
return /* @__PURE__ */ jsxRuntime.jsx(chunkQQMMCXBP_cjs.SettingsPanel, { className: "max-w-2xl space-y-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkQQMMCXBP_cjs.SettingsSection, { title: "Premium models", children: /* @__PURE__ */ jsxRuntime.jsx(chunkQQMMCXBP_cjs.SettingsCard, { className: "space-y-0", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8744
|
-
|
|
8744
|
+
chunk6OXR4R6J_cjs.PremiumModelsFrame,
|
|
8745
8745
|
{
|
|
8746
8746
|
enabled: premiumModel !== "",
|
|
8747
8747
|
onEnabledChange: (enabled) => {
|
|
@@ -9069,10 +9069,10 @@ function ConnectedAppsSettings({
|
|
|
9069
9069
|
}
|
|
9070
9070
|
};
|
|
9071
9071
|
if (isLoading) {
|
|
9072
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9072
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.ConnectionsLoading, { message: "Loading connected apps\u2026" });
|
|
9073
9073
|
}
|
|
9074
9074
|
if (catalogError) {
|
|
9075
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9075
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.ConnectionsError, { message: "Failed to load connector catalog. Please refresh and try again." });
|
|
9076
9076
|
}
|
|
9077
9077
|
const visibleCatalog = catalog.filter((c) => isVendorVisible(c.vendor_key));
|
|
9078
9078
|
const sharePointVisible = isVendorVisible("microsoft_sharepoint");
|
|
@@ -9081,7 +9081,7 @@ function ConnectedAppsSettings({
|
|
|
9081
9081
|
(c) => !react.isMailboxSyncVendor(c.vendor_key) && !react.isSharePointVendor(c.vendor_key)
|
|
9082
9082
|
);
|
|
9083
9083
|
const renderCard = (entry) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
9084
|
-
|
|
9084
|
+
chunk6OXR4R6J_cjs.ConnectionCard,
|
|
9085
9085
|
{
|
|
9086
9086
|
connection: toConnectionCardView(entry, connectedByVendor[entry.vendor_key], {
|
|
9087
9087
|
isDisconnecting: disconnect.isPending && disconnect.variables?.vendorKey === entry.vendor_key,
|
|
@@ -9209,7 +9209,7 @@ function ConnectedAppsSettings({
|
|
|
9209
9209
|
}
|
|
9210
9210
|
)
|
|
9211
9211
|
] }),
|
|
9212
|
-
catalog.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkQQMMCXBP_cjs.SettingsCard, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9212
|
+
catalog.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunkQQMMCXBP_cjs.SettingsCard, { children: /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.ConnectionsEmpty, { message: "No connectors available yet." }) }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
9213
9213
|
renderGroup("Email & Drive", EMAIL_AND_DRIVE_SUBTITLE, /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mail, {}), emailCatalog),
|
|
9214
9214
|
renderGroup(
|
|
9215
9215
|
"Apps & Integrations (MCP)",
|
|
@@ -9662,7 +9662,7 @@ function ConnectedStorageProjectCard({
|
|
|
9662
9662
|
project.personal && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-0.5 text-sm text-muted-foreground", children: "Mail, recordings of calls you host, chat attachments and everything not in a project." })
|
|
9663
9663
|
] }),
|
|
9664
9664
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9665
|
-
|
|
9665
|
+
chunk6OXR4R6J_cjs.UsageToggle,
|
|
9666
9666
|
{
|
|
9667
9667
|
value: view,
|
|
9668
9668
|
onChange: setView,
|
|
@@ -9747,7 +9747,7 @@ function ConnectedStorageProjectCard({
|
|
|
9747
9747
|
] })
|
|
9748
9748
|
] }),
|
|
9749
9749
|
view === "largest" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
9750
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9750
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.UsageToggle, { value: kind, onChange: setKind, options: KIND_FILTERS, ariaLabel: "Kind" }),
|
|
9751
9751
|
largest.isLoading ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: "Loading\u2026" }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
9752
9752
|
StorageItemsTable,
|
|
9753
9753
|
{
|
|
@@ -10006,7 +10006,7 @@ function ConnectedSettingsPage({
|
|
|
10006
10006
|
}, [requested]);
|
|
10007
10007
|
const controlled = section !== void 0;
|
|
10008
10008
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
10009
|
-
|
|
10009
|
+
chunk6OXR4R6J_cjs.SettingsPage,
|
|
10010
10010
|
{
|
|
10011
10011
|
...page,
|
|
10012
10012
|
sections,
|
|
@@ -10038,7 +10038,7 @@ function UsageSettings({ icon: icon2 }) {
|
|
|
10038
10038
|
description: "AI usage today, in \xA3 (ex VAT).",
|
|
10039
10039
|
testId: "settings-usage",
|
|
10040
10040
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
10041
|
-
|
|
10041
|
+
chunk6OXR4R6J_cjs.UsageSummary,
|
|
10042
10042
|
{
|
|
10043
10043
|
stats: [
|
|
10044
10044
|
{
|
|
@@ -10156,7 +10156,7 @@ function ReaderAppearance({ bundle }) {
|
|
|
10156
10156
|
const { defaults } = bundle;
|
|
10157
10157
|
const isDefault = state.pairingId === defaults.pairingId && state.colorScheme === defaults.colorScheme && state.textSize === defaults.textSize;
|
|
10158
10158
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
10159
|
-
|
|
10159
|
+
chunk6OXR4R6J_cjs.AppearanceSettings,
|
|
10160
10160
|
{
|
|
10161
10161
|
colorScheme: state.colorScheme,
|
|
10162
10162
|
onColorSchemeChange: state.setColorScheme,
|
|
@@ -10376,7 +10376,7 @@ function SwitchRow({ row: row2 }) {
|
|
|
10376
10376
|
const { on, set } = react.useFeatureSwitch(row2.feature);
|
|
10377
10377
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
10378
10378
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10379
|
-
|
|
10379
|
+
chunk6OXR4R6J_cjs.SettingsSwitchRow,
|
|
10380
10380
|
{
|
|
10381
10381
|
id: row2.id ?? row2.feature,
|
|
10382
10382
|
testId: row2.testId ?? `toggle-${row2.feature}`,
|
|
@@ -10387,14 +10387,14 @@ function SwitchRow({ row: row2 }) {
|
|
|
10387
10387
|
onCheckedChange: set
|
|
10388
10388
|
}
|
|
10389
10389
|
),
|
|
10390
|
-
on && row2.rows && row2.rows.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
10390
|
+
on && row2.rows && row2.rows.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.SettingsSwitchGroup, { children: row2.rows.map((sub) => /* @__PURE__ */ jsxRuntime.jsx(FeatureRow, { row: sub }, sub.feature)) })
|
|
10391
10391
|
] });
|
|
10392
10392
|
}
|
|
10393
10393
|
function CallsRow({ row: row2 }) {
|
|
10394
10394
|
const { on, set } = react.useFeatureSwitch(row2.feature);
|
|
10395
|
-
const state =
|
|
10395
|
+
const state = chunk6OXR4R6J_cjs.callsSwitchState(react.useCallsConfig(), on);
|
|
10396
10396
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
10397
|
-
|
|
10397
|
+
chunk6OXR4R6J_cjs.SettingsSwitchRow,
|
|
10398
10398
|
{
|
|
10399
10399
|
id: row2.id ?? row2.feature,
|
|
10400
10400
|
testId: row2.testId ?? `toggle-${row2.feature}`,
|
|
@@ -10598,7 +10598,7 @@ function ConnectedRecoveryKeyDialog({
|
|
|
10598
10598
|
const arbi = react.useArbi();
|
|
10599
10599
|
const { user, isSso: isSsoMode } = react.useArbiSession();
|
|
10600
10600
|
const userEmail = user?.email;
|
|
10601
|
-
const sso =
|
|
10601
|
+
const sso = chunkO2ATVRRO_cjs.useSsoSignIn();
|
|
10602
10602
|
const handleVerify = async () => {
|
|
10603
10603
|
setError(null);
|
|
10604
10604
|
if (!password) {
|
|
@@ -10755,7 +10755,7 @@ function ConnectedMailOfflineSettings() {
|
|
|
10755
10755
|
] });
|
|
10756
10756
|
}
|
|
10757
10757
|
var JUST_CONNECTED_VIEW = "settings.justConnected";
|
|
10758
|
-
var identityFeeLabel = (status) => `${
|
|
10758
|
+
var identityFeeLabel = (status) => `${chunkBAJNXRI5_cjs.formatMoney(status.price_pence, status.currency.toLowerCase())} incl. VAT`;
|
|
10759
10759
|
var openLogout = () => chunkJDFBEGQO_cjs.openDialog("logout");
|
|
10760
10760
|
function RecoveryKeyRow() {
|
|
10761
10761
|
const [open, setOpen] = react$1.useState(false);
|
|
@@ -10846,7 +10846,7 @@ function useSettingsSections({
|
|
|
10846
10846
|
] })
|
|
10847
10847
|
}),
|
|
10848
10848
|
// "Work offline" flips the one offline switch even while the server is reachable.
|
|
10849
|
-
actions: /* @__PURE__ */ jsxRuntime.jsx(
|
|
10849
|
+
actions: /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.WorkOfflineToggle, { isOffline: forceOffline, onToggle: setWorkOffline })
|
|
10850
10850
|
},
|
|
10851
10851
|
...showMail ? [
|
|
10852
10852
|
mailSettingsSection({
|
|
@@ -10993,7 +10993,7 @@ function ConnectedDeploymentStorage() {
|
|
|
10993
10993
|
deployment.unattributed_bytes > 0 && ` \xB7 ${chunk2VJBIBPE_cjs.formatBytes(deployment.unattributed_bytes)} not owned by any ${ui.entityNoun("PROJECT")}`
|
|
10994
10994
|
] }),
|
|
10995
10995
|
trend.dates.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
10996
|
-
|
|
10996
|
+
chunk6OXR4R6J_cjs.UsageLineChart,
|
|
10997
10997
|
{
|
|
10998
10998
|
dates: trend.dates,
|
|
10999
10999
|
series: trend.series,
|
|
@@ -11002,7 +11002,7 @@ function ConnectedDeploymentStorage() {
|
|
|
11002
11002
|
}
|
|
11003
11003
|
),
|
|
11004
11004
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11005
|
-
|
|
11005
|
+
chunk6OXR4R6J_cjs.UsageToggle,
|
|
11006
11006
|
{
|
|
11007
11007
|
value: view,
|
|
11008
11008
|
onChange: setView,
|
|
@@ -11861,7 +11861,7 @@ function ConnectedProjectEntity({
|
|
|
11861
11861
|
subscription = "none",
|
|
11862
11862
|
...props
|
|
11863
11863
|
}) {
|
|
11864
|
-
const { stripeEnabled } =
|
|
11864
|
+
const { stripeEnabled } = chunkBAJNXRI5_cjs.useBillingSupport();
|
|
11865
11865
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11866
11866
|
ui.ProjectEntity,
|
|
11867
11867
|
{
|
|
@@ -11954,7 +11954,7 @@ function StripeCheckoutModal({
|
|
|
11954
11954
|
const [clientSecret, setClientSecret] = react$1.useState(null);
|
|
11955
11955
|
const [isCreating, setIsCreating] = react$1.useState(false);
|
|
11956
11956
|
const [stripe, setStripe] = react$1.useState(null);
|
|
11957
|
-
const { stripeEnabled, checkout } =
|
|
11957
|
+
const { stripeEnabled, checkout } = chunkBAJNXRI5_cjs.useBillingSupport();
|
|
11958
11958
|
const createCheckout = react.useCreateProjectCheckout();
|
|
11959
11959
|
const refreshProject = react.useRefreshProject();
|
|
11960
11960
|
const invalidateProjects = react.useInvalidateProjects();
|
|
@@ -11983,7 +11983,7 @@ function StripeCheckoutModal({
|
|
|
11983
11983
|
projectExtId,
|
|
11984
11984
|
body: {
|
|
11985
11985
|
interval,
|
|
11986
|
-
packs:
|
|
11986
|
+
packs: chunkBAJNXRI5_cjs.PRO_PACKS,
|
|
11987
11987
|
ai_blocks: aiBlocks,
|
|
11988
11988
|
storage_blocks: storageBlocks,
|
|
11989
11989
|
addon_budget_pence: addonBudgetPence,
|
|
@@ -11999,7 +11999,7 @@ function StripeCheckoutModal({
|
|
|
11999
11999
|
},
|
|
12000
12000
|
onError: (error) => {
|
|
12001
12001
|
console.error("Failed to create checkout session:", error);
|
|
12002
|
-
const reason =
|
|
12002
|
+
const reason = chunkBAJNXRI5_cjs.apiErrorDetail(error)?.message;
|
|
12003
12003
|
shell.notify.error(
|
|
12004
12004
|
reason ? `Checkout didn't start: ${reason}` : "Checkout didn't start. Try again."
|
|
12005
12005
|
);
|
|
@@ -12032,9 +12032,9 @@ function StripeCheckoutModal({
|
|
|
12032
12032
|
}
|
|
12033
12033
|
}, [open]);
|
|
12034
12034
|
const isStripeConfigured = stripeEnabled;
|
|
12035
|
-
const vatNote = quote ? `${
|
|
12035
|
+
const vatNote = quote ? `${chunkBAJNXRI5_cjs.checkoutItemsLabel(aiBlocks, storageBlocks)} \xB7 ${chunkBAJNXRI5_cjs.quoteTotalLine(quote)}` : null;
|
|
12036
12036
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12037
|
-
|
|
12037
|
+
chunk6OXR4R6J_cjs.CheckoutDialogFrame,
|
|
12038
12038
|
{
|
|
12039
12039
|
open,
|
|
12040
12040
|
onOpenChange,
|
|
@@ -12044,7 +12044,7 @@ function StripeCheckoutModal({
|
|
|
12044
12044
|
children: clientSecret && !!stripe && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
12045
12045
|
vatNote && /* @__PURE__ */ jsxRuntime.jsx("p", { "data-testid": "checkout-vat-note", className: "mb-4 text-sm text-muted-foreground", children: vatNote }),
|
|
12046
12046
|
checkout?.render(stripe, { clientSecret, onComplete: handleComplete }),
|
|
12047
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12047
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3", children: /* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.MoreInfo, { title: "Paying", label: "Payment help", testId: "checkout-payment-help", children: [
|
|
12048
12048
|
/* @__PURE__ */ jsxRuntime.jsx("p", { "data-testid": "checkout-decline-note", children: "Card declined? Nothing was charged. Try again or use another card." }),
|
|
12049
12049
|
/* @__PURE__ */ jsxRuntime.jsx("p", { "data-testid": "checkout-vat-id-note", children: "No VAT number? Leave \u2018purchasing as a business\u2019 unticked." }),
|
|
12050
12050
|
/* @__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." })
|
|
@@ -12086,31 +12086,31 @@ function defaultBillingCountry(languages = typeof navigator === "undefined" ? []
|
|
|
12086
12086
|
}
|
|
12087
12087
|
var choiceForPacks = (packs) => packs > 0 ? "pro" : "free";
|
|
12088
12088
|
function proCard(selected, isAnnual, prices) {
|
|
12089
|
-
const packs =
|
|
12089
|
+
const packs = chunkBAJNXRI5_cjs.PLAN_CHOICE_PACKS.pro;
|
|
12090
12090
|
const currency = prices.monthly?.currency ?? prices.annual?.currency ?? "gbp";
|
|
12091
|
-
const monthly =
|
|
12092
|
-
const annual =
|
|
12091
|
+
const monthly = chunkBAJNXRI5_cjs.packPrice(prices.monthly, packs);
|
|
12092
|
+
const annual = chunkBAJNXRI5_cjs.packPrice(prices.annual, packs);
|
|
12093
12093
|
const current = isAnnual ? annual : monthly;
|
|
12094
12094
|
const effectiveMonthly = current ? isAnnual ? current.amount_ex_vat / 12 : current.amount_ex_vat : null;
|
|
12095
12095
|
return {
|
|
12096
12096
|
id: packs,
|
|
12097
|
-
name:
|
|
12097
|
+
name: chunkBAJNXRI5_cjs.planNameForPacks(packs),
|
|
12098
12098
|
isSelected: selected === "pro",
|
|
12099
12099
|
price: current && effectiveMonthly != null ? {
|
|
12100
12100
|
annual: isAnnual,
|
|
12101
|
-
yearlyStrike: isAnnual && monthly && monthly.amount_ex_vat * 12 > current.amount_ex_vat ?
|
|
12102
|
-
yearlyTotal: isAnnual ?
|
|
12101
|
+
yearlyStrike: isAnnual && monthly && monthly.amount_ex_vat * 12 > current.amount_ex_vat ? chunkBAJNXRI5_cjs.formatMoney(monthly.amount_ex_vat * 12, currency) : void 0,
|
|
12102
|
+
yearlyTotal: isAnnual ? chunkBAJNXRI5_cjs.formatMoney(current.amount_ex_vat, currency) : void 0,
|
|
12103
12103
|
intervalLabel: isAnnual ? "/yr + VAT" : "/mo",
|
|
12104
|
-
monthly:
|
|
12104
|
+
monthly: chunkBAJNXRI5_cjs.formatMoney(Math.round(effectiveMonthly), currency),
|
|
12105
12105
|
taxLabel: "+ VAT",
|
|
12106
12106
|
// The inclusive figure for a UK customer, right under the headline.
|
|
12107
|
-
note: `${
|
|
12107
|
+
note: `${chunkBAJNXRI5_cjs.formatMoney(current.amount, currency)}${isAnnual ? "/yr" : "/mo"} incl. UK VAT`
|
|
12108
12108
|
} : void 0,
|
|
12109
12109
|
features: [
|
|
12110
|
-
`${react.formatGbp(
|
|
12111
|
-
`${
|
|
12110
|
+
`${react.formatGbp(chunkBAJNXRI5_cjs.PRO_AI_GBP)} of AI usage / month`,
|
|
12111
|
+
`${chunkBAJNXRI5_cjs.PRO_STORAGE_GB} GB storage`,
|
|
12112
12112
|
"Unlimited collaborators",
|
|
12113
|
-
...isAnnual ? [
|
|
12113
|
+
...isAnnual ? [chunkBAJNXRI5_cjs.ANNUAL_PREMIUM_AI_NOTE] : []
|
|
12114
12114
|
]
|
|
12115
12115
|
};
|
|
12116
12116
|
}
|
|
@@ -12122,9 +12122,9 @@ function buildPlanCards(selected, isAnnual, prices, isOnFree) {
|
|
|
12122
12122
|
isCurrent: isOnFree,
|
|
12123
12123
|
isSelected: selected === "free" && !isOnFree,
|
|
12124
12124
|
features: [
|
|
12125
|
-
`${react.formatGbp(
|
|
12126
|
-
`${
|
|
12127
|
-
|
|
12125
|
+
`${react.formatGbp(chunkBAJNXRI5_cjs.FREE_AI_GBP)} of AI usage / month`,
|
|
12126
|
+
`${chunkBAJNXRI5_cjs.FREE_STORAGE_MB.toLocaleString("en-US")} MB storage`,
|
|
12127
|
+
chunkBAJNXRI5_cjs.FREE_COLLABORATORS === 0 ? "Just you" : `${chunkBAJNXRI5_cjs.FREE_COLLABORATORS} collaborators`
|
|
12128
12128
|
]
|
|
12129
12129
|
};
|
|
12130
12130
|
return [free, proCard(selected, isAnnual, prices)];
|
|
@@ -12137,7 +12137,7 @@ function PlanChoiceCards({
|
|
|
12137
12137
|
isOnFree = false
|
|
12138
12138
|
}) {
|
|
12139
12139
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12140
|
-
|
|
12140
|
+
chunk6OXR4R6J_cjs.PlanCardGrid,
|
|
12141
12141
|
{
|
|
12142
12142
|
plans: buildPlanCards(selected, isAnnual, prices, isOnFree),
|
|
12143
12143
|
onSelect: (id) => onSelect(choiceForPacks(id))
|
|
@@ -12146,13 +12146,13 @@ function PlanChoiceCards({
|
|
|
12146
12146
|
}
|
|
12147
12147
|
function PlanInfoPopover2() {
|
|
12148
12148
|
const { openSettings } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
12149
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12149
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PlanInfoPopover, { onOpenModelList: () => openSettings("chat") });
|
|
12150
12150
|
}
|
|
12151
12151
|
function CheckoutAddonBudget({
|
|
12152
12152
|
value,
|
|
12153
12153
|
onChange
|
|
12154
12154
|
}) {
|
|
12155
|
-
const budget =
|
|
12155
|
+
const budget = chunkBAJNXRI5_cjs.parseBudgetPounds(value);
|
|
12156
12156
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12157
12157
|
"div",
|
|
12158
12158
|
{
|
|
@@ -12175,7 +12175,7 @@ function CheckoutAddonBudget({
|
|
|
12175
12175
|
step: 25,
|
|
12176
12176
|
className: "h-8 w-24",
|
|
12177
12177
|
value,
|
|
12178
|
-
placeholder: String(
|
|
12178
|
+
placeholder: String(chunkBAJNXRI5_cjs.DEFAULT_SPEND_CAP_PENCE / 100),
|
|
12179
12179
|
onChange: (e) => onChange(e.target.value),
|
|
12180
12180
|
"aria-invalid": budget === void 0,
|
|
12181
12181
|
"data-testid": "checkout-addon-budget-input"
|
|
@@ -12193,7 +12193,7 @@ function BlockStepper({
|
|
|
12193
12193
|
onChange,
|
|
12194
12194
|
testId
|
|
12195
12195
|
}) {
|
|
12196
|
-
const set = (n) => onChange(Math.max(0, Math.min(
|
|
12196
|
+
const set = (n) => onChange(Math.max(0, Math.min(chunkBAJNXRI5_cjs.MAX_CHECKOUT_BLOCKS, n)));
|
|
12197
12197
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12198
12198
|
"div",
|
|
12199
12199
|
{
|
|
@@ -12237,7 +12237,7 @@ function BlockStepper({
|
|
|
12237
12237
|
className: "size-8",
|
|
12238
12238
|
"aria-label": `More: ${label}`,
|
|
12239
12239
|
onClick: () => set(value + 1),
|
|
12240
|
-
disabled: value >=
|
|
12240
|
+
disabled: value >= chunkBAJNXRI5_cjs.MAX_CHECKOUT_BLOCKS,
|
|
12241
12241
|
"data-testid": `${testId}-increment`,
|
|
12242
12242
|
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "size-4" })
|
|
12243
12243
|
}
|
|
@@ -12254,8 +12254,8 @@ function CheckoutAddonBlocks({
|
|
|
12254
12254
|
onStorageBlocksChange,
|
|
12255
12255
|
price
|
|
12256
12256
|
}) {
|
|
12257
|
-
const ai =
|
|
12258
|
-
const storage =
|
|
12257
|
+
const ai = chunkBAJNXRI5_cjs.addonPrice(price, "ai_usage");
|
|
12258
|
+
const storage = chunkBAJNXRI5_cjs.addonPrice(price, "storage");
|
|
12259
12259
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12260
12260
|
"div",
|
|
12261
12261
|
{
|
|
@@ -12265,8 +12265,8 @@ function CheckoutAddonBlocks({
|
|
|
12265
12265
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12266
12266
|
BlockStepper,
|
|
12267
12267
|
{
|
|
12268
|
-
label: `+${react.formatGbp(ai?.ai_gbp ||
|
|
12269
|
-
priceText:
|
|
12268
|
+
label: `+${react.formatGbp(ai?.ai_gbp || chunkBAJNXRI5_cjs.ADDON_BLOCK_AI_GBP)} of AI usage`,
|
|
12269
|
+
priceText: chunkBAJNXRI5_cjs.checkoutBlockPriceText(price, "ai_usage"),
|
|
12270
12270
|
value: aiBlocks,
|
|
12271
12271
|
onChange: onAiBlocksChange,
|
|
12272
12272
|
testId: "checkout-ai-blocks"
|
|
@@ -12275,8 +12275,8 @@ function CheckoutAddonBlocks({
|
|
|
12275
12275
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12276
12276
|
BlockStepper,
|
|
12277
12277
|
{
|
|
12278
|
-
label: `+${storage?.storage_gb ||
|
|
12279
|
-
priceText:
|
|
12278
|
+
label: `+${storage?.storage_gb || chunkBAJNXRI5_cjs.STORAGE_BLOCK_GB} GB storage`,
|
|
12279
|
+
priceText: chunkBAJNXRI5_cjs.checkoutBlockPriceText(price, "storage"),
|
|
12280
12280
|
value: storageBlocks,
|
|
12281
12281
|
onChange: onStorageBlocksChange,
|
|
12282
12282
|
testId: "checkout-storage-blocks"
|
|
@@ -12338,7 +12338,7 @@ function CheckoutTotal({
|
|
|
12338
12338
|
className: "text-sm font-medium text-foreground",
|
|
12339
12339
|
"data-testid": "checkout-total",
|
|
12340
12340
|
"aria-live": "polite",
|
|
12341
|
-
children: state.quote && !state.isLoading ?
|
|
12341
|
+
children: state.quote && !state.isLoading ? chunkBAJNXRI5_cjs.quoteTotalLine(state.quote) : state.isLoading ? "Calculating total\u2026" : state.error
|
|
12342
12342
|
}
|
|
12343
12343
|
)
|
|
12344
12344
|
] });
|
|
@@ -12371,13 +12371,13 @@ function useCheckoutQuote({
|
|
|
12371
12371
|
...aiBlocks || storageBlocks ? { addons: { ai_usage: aiBlocks, storage: storageBlocks } } : {}
|
|
12372
12372
|
} : null
|
|
12373
12373
|
);
|
|
12374
|
-
const { code, message } = query.isError ?
|
|
12375
|
-
const locationInvalid = code ===
|
|
12374
|
+
const { code, message } = query.isError ? chunkBAJNXRI5_cjs.quoteError(query.error) : {};
|
|
12375
|
+
const locationInvalid = code === chunkBAJNXRI5_cjs.TAX_LOCATION_INVALID;
|
|
12376
12376
|
const isLoading = enabled && (query.isLoading || postal !== postalCode.trim());
|
|
12377
12377
|
return {
|
|
12378
12378
|
quote: query.data,
|
|
12379
12379
|
isLoading,
|
|
12380
|
-
showPostcode:
|
|
12380
|
+
showPostcode: chunkBAJNXRI5_cjs.POSTCODE_COUNTRIES.includes(country) || locationInvalid || postalCode !== "",
|
|
12381
12381
|
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,
|
|
12382
12382
|
canContinue: !isLoading && (!!query.data || query.isError && !locationInvalid)
|
|
12383
12383
|
};
|
|
@@ -12408,14 +12408,14 @@ function ConnectedReferralRewardSummary({
|
|
|
12408
12408
|
if (!reward) return null;
|
|
12409
12409
|
const applied = totalCents != null && currency ? applyReferralReward(totalCents, reward, currency) : null;
|
|
12410
12410
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12411
|
-
|
|
12411
|
+
chunk6OXR4R6J_cjs.ReferralRewardSummary,
|
|
12412
12412
|
{
|
|
12413
|
-
amountLabel:
|
|
12413
|
+
amountLabel: chunkBAJNXRI5_cjs.formatMoney(reward.amount, reward.currency),
|
|
12414
12414
|
breakdown: applied && totalCents != null && currency ? {
|
|
12415
|
-
subtotal:
|
|
12416
|
-
reward:
|
|
12417
|
-
youPay:
|
|
12418
|
-
rollover: applied.remaining > 0 ?
|
|
12415
|
+
subtotal: chunkBAJNXRI5_cjs.formatMoney(totalCents, currency),
|
|
12416
|
+
reward: chunkBAJNXRI5_cjs.formatMoney(applied.bonus, currency),
|
|
12417
|
+
youPay: chunkBAJNXRI5_cjs.formatMoney(applied.youPay, currency),
|
|
12418
|
+
rollover: applied.remaining > 0 ? chunkBAJNXRI5_cjs.formatMoney(applied.remaining, currency) : void 0
|
|
12419
12419
|
} : void 0
|
|
12420
12420
|
}
|
|
12421
12421
|
);
|
|
@@ -12423,10 +12423,10 @@ function ConnectedReferralRewardSummary({
|
|
|
12423
12423
|
function ConnectedReferralRewardNote() {
|
|
12424
12424
|
const reward = useReferralReward();
|
|
12425
12425
|
if (!reward) return null;
|
|
12426
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12426
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.ReferralRewardNote, { amountLabel: chunkBAJNXRI5_cjs.formatMoney(reward.amount, reward.currency) });
|
|
12427
12427
|
}
|
|
12428
12428
|
function createProjectErrorMessage(error, fallback = `Failed to create ${ui.entityNoun("PROJECT")}`) {
|
|
12429
|
-
const detail =
|
|
12429
|
+
const detail = chunkBAJNXRI5_cjs.apiErrorDetail(error);
|
|
12430
12430
|
if (typeof detail === "string" && detail) return detail;
|
|
12431
12431
|
const message = detail?.message;
|
|
12432
12432
|
return typeof message === "string" && message ? message : fallback;
|
|
@@ -12436,7 +12436,7 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
|
|
|
12436
12436
|
const [plan, setPlan] = react$1.useState("pro");
|
|
12437
12437
|
const [isAnnual, setIsAnnual] = react$1.useState(false);
|
|
12438
12438
|
const [promoCode, setPromoCode] = react$1.useState("");
|
|
12439
|
-
const [addonBudget, setAddonBudget] = react$1.useState(String(
|
|
12439
|
+
const [addonBudget, setAddonBudget] = react$1.useState(String(chunkBAJNXRI5_cjs.DEFAULT_SPEND_CAP_PENCE / 100));
|
|
12440
12440
|
const [checkoutBudget, setCheckoutBudget] = react$1.useState(null);
|
|
12441
12441
|
const [aiBlocks, setAiBlocks] = react$1.useState(0);
|
|
12442
12442
|
const [storageBlocks, setStorageBlocks] = react$1.useState(0);
|
|
@@ -12450,7 +12450,7 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
|
|
|
12450
12450
|
const [checkoutProjectName, setCheckoutProjectName] = react$1.useState("");
|
|
12451
12451
|
const [checkoutInterval, setCheckoutInterval] = react$1.useState("month");
|
|
12452
12452
|
const paymentCompletedRef = react$1.useRef(false);
|
|
12453
|
-
const { stripeEnabled } =
|
|
12453
|
+
const { stripeEnabled } = chunkBAJNXRI5_cjs.useBillingSupport();
|
|
12454
12454
|
const { data: products, isLoading: productsLoading } = react.useProducts({
|
|
12455
12455
|
enabled: stripeEnabled
|
|
12456
12456
|
});
|
|
@@ -12479,18 +12479,18 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
|
|
|
12479
12479
|
setPlan("pro");
|
|
12480
12480
|
setPromoCode("");
|
|
12481
12481
|
setPostalCode("");
|
|
12482
|
-
setAddonBudget(String(
|
|
12482
|
+
setAddonBudget(String(chunkBAJNXRI5_cjs.DEFAULT_SPEND_CAP_PENCE / 100));
|
|
12483
12483
|
setAiBlocks(0);
|
|
12484
12484
|
setStorageBlocks(0);
|
|
12485
12485
|
setIsCreating(false);
|
|
12486
12486
|
}
|
|
12487
12487
|
onOpenChange(newOpen);
|
|
12488
12488
|
};
|
|
12489
|
-
const prices =
|
|
12489
|
+
const prices = chunkBAJNXRI5_cjs.findProPrices(products);
|
|
12490
12490
|
const intervalPrice = isAnnual ? prices.annual : prices.monthly;
|
|
12491
|
-
const selectedPrice =
|
|
12491
|
+
const selectedPrice = chunkBAJNXRI5_cjs.packPrice(intervalPrice);
|
|
12492
12492
|
const currency = intervalPrice?.currency ?? "gbp";
|
|
12493
|
-
const savingsPercent =
|
|
12493
|
+
const savingsPercent = chunkBAJNXRI5_cjs.calcSavingsPercent(prices.monthly, prices.annual);
|
|
12494
12494
|
const isPro = stripeEnabled && plan !== "free";
|
|
12495
12495
|
const quote = useCheckoutQuote({
|
|
12496
12496
|
interval: isAnnual ? "year" : "month",
|
|
@@ -12500,14 +12500,14 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
|
|
|
12500
12500
|
storageBlocks,
|
|
12501
12501
|
enabled: open && isPro && !!selectedPrice
|
|
12502
12502
|
});
|
|
12503
|
-
const canSubmit = !!projectName.trim() && !isCreating && !createProject.isPending && (!isPro || !!selectedPrice &&
|
|
12503
|
+
const canSubmit = !!projectName.trim() && !isCreating && !createProject.isPending && (!isPro || !!selectedPrice && chunkBAJNXRI5_cjs.parseBudgetPounds(addonBudget) !== void 0 && quote.canContinue);
|
|
12504
12504
|
const handleCreateFree = () => {
|
|
12505
12505
|
setIsCreating(true);
|
|
12506
12506
|
createProject.mutate(
|
|
12507
12507
|
{
|
|
12508
12508
|
name: projectName.trim(),
|
|
12509
12509
|
plan: "free",
|
|
12510
|
-
daily_cap_per_user:
|
|
12510
|
+
daily_cap_per_user: chunkBAJNXRI5_cjs.SUGGESTED_DAILY_CAP_PER_USER
|
|
12511
12511
|
},
|
|
12512
12512
|
{
|
|
12513
12513
|
onSuccess: () => {
|
|
@@ -12524,14 +12524,14 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
|
|
|
12524
12524
|
};
|
|
12525
12525
|
const handleSubscribe = () => {
|
|
12526
12526
|
const interval = isAnnual ? "year" : "month";
|
|
12527
|
-
const parsed =
|
|
12528
|
-
const budgetToSend = parsed == null || parsed ===
|
|
12527
|
+
const parsed = chunkBAJNXRI5_cjs.parseBudgetPounds(addonBudget);
|
|
12528
|
+
const budgetToSend = parsed == null || parsed === chunkBAJNXRI5_cjs.DEFAULT_SPEND_CAP_PENCE ? null : parsed;
|
|
12529
12529
|
setIsCreating(true);
|
|
12530
12530
|
createProject.mutate(
|
|
12531
12531
|
{
|
|
12532
12532
|
name: projectName.trim(),
|
|
12533
12533
|
plan: "pro",
|
|
12534
|
-
daily_cap_per_user:
|
|
12534
|
+
daily_cap_per_user: chunkBAJNXRI5_cjs.SUGGESTED_DAILY_CAP_PER_USER
|
|
12535
12535
|
},
|
|
12536
12536
|
{
|
|
12537
12537
|
onSuccess: (newProject) => {
|
|
@@ -12572,8 +12572,8 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
|
|
|
12572
12572
|
description: stripeEnabled ? "Name it and pick a plan." : `${ui.getEntityLabel("PROJECT", "PLURAL")} group your ${ui.entityNoun("WORKSPACE", "PLURAL")}.`,
|
|
12573
12573
|
showDescription: true,
|
|
12574
12574
|
size: "xl",
|
|
12575
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
12576
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
12575
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.PlanStack, { gap: 5, children: [
|
|
12576
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.PlanStack, { gap: 2, children: [
|
|
12577
12577
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "new-project-name", children: "Name" }),
|
|
12578
12578
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12579
12579
|
ui.Input,
|
|
@@ -12589,16 +12589,16 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
|
|
|
12589
12589
|
}
|
|
12590
12590
|
)
|
|
12591
12591
|
] }),
|
|
12592
|
-
stripeEnabled && (productsLoading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
12593
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
12592
|
+
stripeEnabled && (productsLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PlanNotice, { children: "Loading plans\u2026" }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
12593
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.PlanPickerCard, { children: [
|
|
12594
12594
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12595
|
-
|
|
12595
|
+
chunk6OXR4R6J_cjs.PlanPickerHeader,
|
|
12596
12596
|
{
|
|
12597
12597
|
title: "Plan",
|
|
12598
12598
|
info: /* @__PURE__ */ jsxRuntime.jsx(PlanInfoPopover2, {}),
|
|
12599
12599
|
infoPlacement: "toggle",
|
|
12600
12600
|
toggle: plan !== "free" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
12601
|
-
|
|
12601
|
+
chunk6OXR4R6J_cjs.PricingToggle,
|
|
12602
12602
|
{
|
|
12603
12603
|
isAnnual,
|
|
12604
12604
|
onToggle: () => setIsAnnual(!isAnnual),
|
|
@@ -12636,7 +12636,7 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
|
|
|
12636
12636
|
currency
|
|
12637
12637
|
}
|
|
12638
12638
|
),
|
|
12639
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12639
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PromoCodeInput, { value: promoCode, onChange: setPromoCode }),
|
|
12640
12640
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12641
12641
|
CheckoutCountrySelect,
|
|
12642
12642
|
{
|
|
@@ -12655,10 +12655,10 @@ function NewProjectFlow({ open, onOpenChange, defaultName }) {
|
|
|
12655
12655
|
onPostalCodeChange: setPostalCode
|
|
12656
12656
|
}
|
|
12657
12657
|
)
|
|
12658
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
12658
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PlanNotice, { children: "Pro isn't available right now." }))
|
|
12659
12659
|
] })),
|
|
12660
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12661
|
-
isSlow && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12660
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PlanActionButton, { onClick: submit, disabled: !canSubmit, children: isCreating ? "Creating\u2026" : isPro ? "Continue to payment" : `Create ${ui.entityNoun("PROJECT")}` }),
|
|
12661
|
+
isSlow && /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PlanNotice, { className: "text-xs", testId: "new-project-still-working", children: "Still working. We'll update here." })
|
|
12662
12662
|
] })
|
|
12663
12663
|
}
|
|
12664
12664
|
),
|
|
@@ -12698,7 +12698,7 @@ function ConnectedProjectSelector({
|
|
|
12698
12698
|
readOnly,
|
|
12699
12699
|
className
|
|
12700
12700
|
}) {
|
|
12701
|
-
const { stripeEnabled } =
|
|
12701
|
+
const { stripeEnabled } = chunkBAJNXRI5_cjs.useBillingSupport();
|
|
12702
12702
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12703
12703
|
chunkCIXA5A65_cjs.ProjectPicker,
|
|
12704
12704
|
{
|
|
@@ -12842,13 +12842,13 @@ function ConnectedWorkspaceSettings({
|
|
|
12842
12842
|
const [membersExpanded, setMembersExpanded] = react$1.useState(false);
|
|
12843
12843
|
const [shareOpen, setShareOpen] = react$1.useState(false);
|
|
12844
12844
|
if (!workspace) {
|
|
12845
|
-
return /* @__PURE__ */ jsxRuntime.jsx(chunkC5CWKZ5D_cjs.PageLoading, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
12845
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkC5CWKZ5D_cjs.PageLoading, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkZA3ZELSH_cjs.LoadingIndicator, { message: "Loading workspace..." }) });
|
|
12846
12846
|
}
|
|
12847
12847
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
12848
12848
|
/* @__PURE__ */ jsxRuntime.jsxs(chunkC5CWKZ5D_cjs.WorkspacePageFrame, { testId, children: [
|
|
12849
12849
|
/* @__PURE__ */ jsxRuntime.jsxs(chunkC5CWKZ5D_cjs.WorkspaceIdentityPanel, { children: [
|
|
12850
12850
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12851
|
-
|
|
12851
|
+
chunkZA3ZELSH_cjs.EntityIdentityBar,
|
|
12852
12852
|
{
|
|
12853
12853
|
testId: "workspace-identity-bar",
|
|
12854
12854
|
canEdit: isOwner,
|
|
@@ -12865,7 +12865,7 @@ function ConnectedWorkspaceSettings({
|
|
|
12865
12865
|
label: "Name",
|
|
12866
12866
|
value: workspace.name,
|
|
12867
12867
|
placeholder: "Untitled",
|
|
12868
|
-
maxLength:
|
|
12868
|
+
maxLength: chunkZA3ZELSH_cjs.IDENTITY_NAME_MAX_LENGTH,
|
|
12869
12869
|
valueClassName: "truncate text-base font-semibold",
|
|
12870
12870
|
testId: "workspace-home-title",
|
|
12871
12871
|
hideLabel: true,
|
|
@@ -13495,20 +13495,20 @@ function ConnectedEmailWorkspaceDialog({
|
|
|
13495
13495
|
else if (activeSession)
|
|
13496
13496
|
access = {
|
|
13497
13497
|
kind: "session",
|
|
13498
|
-
expiresIn:
|
|
13498
|
+
expiresIn: chunk6OXR4R6J_cjs.formatSessionTtl(activeSession.ttl),
|
|
13499
13499
|
isEnding: terminateSession.isPending,
|
|
13500
13500
|
onEnd: handleEndSession
|
|
13501
13501
|
};
|
|
13502
13502
|
else
|
|
13503
13503
|
access = {
|
|
13504
13504
|
kind: "idle",
|
|
13505
|
-
defaultTtl: limits ?
|
|
13505
|
+
defaultTtl: limits ? chunk6OXR4R6J_cjs.formatSessionTtl(limits.default_ttl_seconds) : void 0,
|
|
13506
13506
|
isAuthorizing: grantAgentAccess.isPending && grantAgentAccess.variables?.mode?.kind === "temporary",
|
|
13507
13507
|
onAuthorize: handleAuthorize
|
|
13508
13508
|
};
|
|
13509
13509
|
}
|
|
13510
13510
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
13511
|
-
|
|
13511
|
+
chunk6OXR4R6J_cjs.EmailWorkspaceDialogView,
|
|
13512
13512
|
{
|
|
13513
13513
|
open,
|
|
13514
13514
|
onOpenChange,
|
|
@@ -14028,9 +14028,9 @@ function ConnectedMailboxSyncDialog({
|
|
|
14028
14028
|
showDescription: true,
|
|
14029
14029
|
className: "w-[92vw] sm:max-w-lg",
|
|
14030
14030
|
children: [
|
|
14031
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
14032
|
-
!lockedWorkspaceExtId && /* @__PURE__ */ jsxRuntime.jsx(
|
|
14033
|
-
|
|
14031
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.SyncDialogBody, { children: [
|
|
14032
|
+
!lockedWorkspaceExtId && /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.SyncField, { label: "Target workspace", htmlFor: "sync-workspace", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14033
|
+
chunk6OXR4R6J_cjs.SyncSelect,
|
|
14034
14034
|
{
|
|
14035
14035
|
id: "sync-workspace",
|
|
14036
14036
|
value: workspaceExtId,
|
|
@@ -14039,9 +14039,9 @@ function ConnectedMailboxSyncDialog({
|
|
|
14039
14039
|
options: memberWorkspaces.map((w) => ({ value: w.external_id, label: w.name }))
|
|
14040
14040
|
}
|
|
14041
14041
|
) }),
|
|
14042
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
14042
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.SyncField, { label: "Backfill window", htmlFor: "sync-backfill", children: [
|
|
14043
14043
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14044
|
-
|
|
14044
|
+
chunk6OXR4R6J_cjs.SyncSelect,
|
|
14045
14045
|
{
|
|
14046
14046
|
id: "sync-backfill",
|
|
14047
14047
|
value: backfill,
|
|
@@ -14061,17 +14061,17 @@ function ConnectedMailboxSyncDialog({
|
|
|
14061
14061
|
"aria-label": "Import emails since date"
|
|
14062
14062
|
}
|
|
14063
14063
|
),
|
|
14064
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14064
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.SyncSmallNote, { children: "Emails are always imported from this date onward \u2014 the start point never moves." })
|
|
14065
14065
|
] })
|
|
14066
14066
|
] }),
|
|
14067
14067
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14068
|
-
|
|
14068
|
+
chunk6OXR4R6J_cjs.SyncField,
|
|
14069
14069
|
{
|
|
14070
14070
|
label: `Folders to import${selectedFolders.length > 0 ? ` (${selectedFolders.length})` : ""}`,
|
|
14071
14071
|
hint: "Select at least one folder to import.",
|
|
14072
|
-
actions: folders.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
14072
|
+
actions: folders.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.SyncLinkRow, { children: [
|
|
14073
14073
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14074
|
-
|
|
14074
|
+
chunk6OXR4R6J_cjs.SyncLinkButton,
|
|
14075
14075
|
{
|
|
14076
14076
|
onClick: () => setExpandAllNonce((n) => n + 1),
|
|
14077
14077
|
testId: "mail-folders-expand-all",
|
|
@@ -14079,20 +14079,20 @@ function ConnectedMailboxSyncDialog({
|
|
|
14079
14079
|
}
|
|
14080
14080
|
),
|
|
14081
14081
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14082
|
-
|
|
14082
|
+
chunk6OXR4R6J_cjs.SyncLinkButton,
|
|
14083
14083
|
{
|
|
14084
14084
|
onClick: () => setCollapseAllNonce((n) => n + 1),
|
|
14085
14085
|
testId: "mail-folders-collapse-all",
|
|
14086
14086
|
children: "Collapse all"
|
|
14087
14087
|
}
|
|
14088
14088
|
),
|
|
14089
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14089
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.SyncLinkButton, { onClick: toggleAllFolders, children: allSelected ? "Clear all" : "Select all" })
|
|
14090
14090
|
] }),
|
|
14091
|
-
children: foldersLoading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
14091
|
+
children: foldersLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.SyncLoading, { children: "Loading folders\u2026" }) : foldersError ? (
|
|
14092
14092
|
// A failed fetch is not an empty mailbox: it hides auth/scope errors (e.g. a Gmail
|
|
14093
14093
|
// account needing reconnect).
|
|
14094
14094
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14095
|
-
|
|
14095
|
+
chunk6OXR4R6J_cjs.SyncReconnectNotice,
|
|
14096
14096
|
{
|
|
14097
14097
|
message: `Couldn\u2019t load folders from ${catalog.display_name}. Reconnect the account and try again.`,
|
|
14098
14098
|
onReconnect: () => void reconnect(),
|
|
@@ -14100,7 +14100,7 @@ function ConnectedMailboxSyncDialog({
|
|
|
14100
14100
|
testId: "folders-reconnect"
|
|
14101
14101
|
}
|
|
14102
14102
|
)
|
|
14103
|
-
) : folders.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
14103
|
+
) : folders.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.SyncNote, { children: "No folders found." }) : /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.SyncTreeFrame, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14104
14104
|
chunkYN7ZQEHS_cjs.MailFolderTree,
|
|
14105
14105
|
{
|
|
14106
14106
|
nodes: folderTree,
|
|
@@ -14112,9 +14112,9 @@ function ConnectedMailboxSyncDialog({
|
|
|
14112
14112
|
) })
|
|
14113
14113
|
}
|
|
14114
14114
|
),
|
|
14115
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
14115
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.SyncOptions, { children: [
|
|
14116
14116
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14117
|
-
|
|
14117
|
+
chunk6OXR4R6J_cjs.SyncOptionToggle,
|
|
14118
14118
|
{
|
|
14119
14119
|
checked: skipDuplicates,
|
|
14120
14120
|
onCheckedChange: setSkipDuplicates,
|
|
@@ -14124,7 +14124,7 @@ function ConnectedMailboxSyncDialog({
|
|
|
14124
14124
|
}
|
|
14125
14125
|
),
|
|
14126
14126
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14127
|
-
|
|
14127
|
+
chunk6OXR4R6J_cjs.SyncOptionToggle,
|
|
14128
14128
|
{
|
|
14129
14129
|
checked: autoRename,
|
|
14130
14130
|
onCheckedChange: setAutoRename,
|
|
@@ -14134,7 +14134,7 @@ function ConnectedMailboxSyncDialog({
|
|
|
14134
14134
|
}
|
|
14135
14135
|
),
|
|
14136
14136
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14137
|
-
|
|
14137
|
+
chunk6OXR4R6J_cjs.SyncOptionToggle,
|
|
14138
14138
|
{
|
|
14139
14139
|
checked: shared,
|
|
14140
14140
|
onCheckedChange: setShared,
|
|
@@ -14144,7 +14144,7 @@ function ConnectedMailboxSyncDialog({
|
|
|
14144
14144
|
}
|
|
14145
14145
|
),
|
|
14146
14146
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14147
|
-
|
|
14147
|
+
chunk6OXR4R6J_cjs.SyncOptionToggle,
|
|
14148
14148
|
{
|
|
14149
14149
|
checked: autoSync,
|
|
14150
14150
|
onCheckedChange: setAutoSync,
|
|
@@ -14156,7 +14156,7 @@ function ConnectedMailboxSyncDialog({
|
|
|
14156
14156
|
] })
|
|
14157
14157
|
] }),
|
|
14158
14158
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14159
|
-
|
|
14159
|
+
chunk6OXR4R6J_cjs.SyncDialogFooter,
|
|
14160
14160
|
{
|
|
14161
14161
|
onCancel: () => onOpenChange(false),
|
|
14162
14162
|
onSave: handleEnableSubmit,
|
|
@@ -14218,7 +14218,7 @@ function DriveFolderNode({
|
|
|
14218
14218
|
const mightHaveChildren = docCount == null || docCount > 0;
|
|
14219
14219
|
const orderedChildren = [...children].sort((a, b) => a.name.localeCompare(b.name));
|
|
14220
14220
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14221
|
-
|
|
14221
|
+
chunk6OXR4R6J_cjs.SyncFolderRow,
|
|
14222
14222
|
{
|
|
14223
14223
|
id: folder.id,
|
|
14224
14224
|
name: folder.name,
|
|
@@ -14232,7 +14232,7 @@ function DriveFolderNode({
|
|
|
14232
14232
|
onCheckedChange: () => onToggle(folder.id),
|
|
14233
14233
|
count: typeof docCount === "number" ? docCount : void 0,
|
|
14234
14234
|
isCountLoading: isSelectable && countLoading,
|
|
14235
|
-
children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
14235
|
+
children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.SyncFolderStatus, { depth, kind: "loading" }) : orderedChildren.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.SyncFolderStatus, { depth, kind: "empty" }) : orderedChildren.map((child) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
14236
14236
|
DriveFolderNode,
|
|
14237
14237
|
{
|
|
14238
14238
|
vendorKey,
|
|
@@ -14378,9 +14378,9 @@ function ConnectedDriveSyncDialog({
|
|
|
14378
14378
|
showDescription: true,
|
|
14379
14379
|
className: "w-[92vw] sm:max-w-lg",
|
|
14380
14380
|
children: [
|
|
14381
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
14382
|
-
!lockedWorkspaceExtId && /* @__PURE__ */ jsxRuntime.jsx(
|
|
14383
|
-
|
|
14381
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.SyncDialogBody, { children: [
|
|
14382
|
+
!lockedWorkspaceExtId && /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.SyncField, { label: "Target workspace", htmlFor: "drive-sync-workspace", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14383
|
+
chunk6OXR4R6J_cjs.SyncSelect,
|
|
14384
14384
|
{
|
|
14385
14385
|
id: "drive-sync-workspace",
|
|
14386
14386
|
value: workspaceExtId,
|
|
@@ -14390,13 +14390,13 @@ function ConnectedDriveSyncDialog({
|
|
|
14390
14390
|
}
|
|
14391
14391
|
) }),
|
|
14392
14392
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14393
|
-
|
|
14393
|
+
chunk6OXR4R6J_cjs.SyncField,
|
|
14394
14394
|
{
|
|
14395
14395
|
label: `Folders to import${selectedFolders.length > 0 ? ` (${selectedFolders.length})` : ""}`,
|
|
14396
14396
|
hint: "Select at least one folder. Importing a folder includes everything inside it.",
|
|
14397
|
-
actions: orderedFolders.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
14397
|
+
actions: orderedFolders.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.SyncLinkRow, { children: [
|
|
14398
14398
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14399
|
-
|
|
14399
|
+
chunk6OXR4R6J_cjs.SyncLinkButton,
|
|
14400
14400
|
{
|
|
14401
14401
|
onClick: () => setExpandAllNonce((n) => n + 1),
|
|
14402
14402
|
testId: "drive-folders-expand-all",
|
|
@@ -14404,7 +14404,7 @@ function ConnectedDriveSyncDialog({
|
|
|
14404
14404
|
}
|
|
14405
14405
|
),
|
|
14406
14406
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14407
|
-
|
|
14407
|
+
chunk6OXR4R6J_cjs.SyncLinkButton,
|
|
14408
14408
|
{
|
|
14409
14409
|
onClick: () => setCollapseAllNonce((n) => n + 1),
|
|
14410
14410
|
testId: "drive-folders-collapse-all",
|
|
@@ -14412,19 +14412,19 @@ function ConnectedDriveSyncDialog({
|
|
|
14412
14412
|
}
|
|
14413
14413
|
)
|
|
14414
14414
|
] }),
|
|
14415
|
-
children: foldersLoading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
14416
|
-
|
|
14415
|
+
children: foldersLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.SyncLoading, { children: "Loading folders\u2026" }) : needsReconnect ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
14416
|
+
chunk6OXR4R6J_cjs.SyncReconnectNotice,
|
|
14417
14417
|
{
|
|
14418
14418
|
...reconnectButtonProps,
|
|
14419
14419
|
message: `Reconnect ${catalog.display_name} to enable ${productName} \u2014 your account needs to grant file access.`
|
|
14420
14420
|
}
|
|
14421
14421
|
) : foldersError ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
14422
|
-
|
|
14422
|
+
chunk6OXR4R6J_cjs.SyncReconnectNotice,
|
|
14423
14423
|
{
|
|
14424
14424
|
...reconnectButtonProps,
|
|
14425
14425
|
message: `Couldn\u2019t load folders from ${productName}. Reconnect the account and try again.`
|
|
14426
14426
|
}
|
|
14427
|
-
) : orderedFolders.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
14427
|
+
) : orderedFolders.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.SyncNote, { children: "No folders found." }) : /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.SyncTreeFrame, { children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-0.5", "data-testid": "drive-folder-tree", children: orderedFolders.map((f) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
14428
14428
|
DriveFolderNode,
|
|
14429
14429
|
{
|
|
14430
14430
|
vendorKey: catalog.vendor_key,
|
|
@@ -14441,9 +14441,9 @@ function ConnectedDriveSyncDialog({
|
|
|
14441
14441
|
)) }) })
|
|
14442
14442
|
}
|
|
14443
14443
|
),
|
|
14444
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
14444
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.SyncOptions, { children: [
|
|
14445
14445
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14446
|
-
|
|
14446
|
+
chunk6OXR4R6J_cjs.SyncOptionToggle,
|
|
14447
14447
|
{
|
|
14448
14448
|
checked: skipDuplicates,
|
|
14449
14449
|
onCheckedChange: setSkipDuplicates,
|
|
@@ -14452,7 +14452,7 @@ function ConnectedDriveSyncDialog({
|
|
|
14452
14452
|
}
|
|
14453
14453
|
),
|
|
14454
14454
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14455
|
-
|
|
14455
|
+
chunk6OXR4R6J_cjs.SyncOptionToggle,
|
|
14456
14456
|
{
|
|
14457
14457
|
checked: autoRename,
|
|
14458
14458
|
onCheckedChange: setAutoRename,
|
|
@@ -14461,7 +14461,7 @@ function ConnectedDriveSyncDialog({
|
|
|
14461
14461
|
}
|
|
14462
14462
|
),
|
|
14463
14463
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14464
|
-
|
|
14464
|
+
chunk6OXR4R6J_cjs.SyncOptionToggle,
|
|
14465
14465
|
{
|
|
14466
14466
|
checked: shared,
|
|
14467
14467
|
onCheckedChange: setShared,
|
|
@@ -14470,7 +14470,7 @@ function ConnectedDriveSyncDialog({
|
|
|
14470
14470
|
}
|
|
14471
14471
|
),
|
|
14472
14472
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14473
|
-
|
|
14473
|
+
chunk6OXR4R6J_cjs.SyncOptionToggle,
|
|
14474
14474
|
{
|
|
14475
14475
|
checked: autoSync,
|
|
14476
14476
|
onCheckedChange: setAutoSync,
|
|
@@ -14482,7 +14482,7 @@ function ConnectedDriveSyncDialog({
|
|
|
14482
14482
|
] })
|
|
14483
14483
|
] }),
|
|
14484
14484
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14485
|
-
|
|
14485
|
+
chunk6OXR4R6J_cjs.SyncDialogFooter,
|
|
14486
14486
|
{
|
|
14487
14487
|
onCancel: () => onOpenChange(false),
|
|
14488
14488
|
onSave: handleEnableSubmit,
|
|
@@ -14503,36 +14503,36 @@ function ConnectedSharePointAdminConsentPage({
|
|
|
14503
14503
|
const result = givenResult === void 0 ? queryResult : givenResult;
|
|
14504
14504
|
const { apiBaseUrl } = chunkUIXY4HKM_cjs.useBlocksEnvironment().runtimeConfig;
|
|
14505
14505
|
const consentUrl = `${apiBaseUrl}/v1/connectors/microsoft_sharepoint/admin-consent`;
|
|
14506
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14506
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentPage, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkFAKRTCAL_cjs.ConsentCard, { size: "md", children: [
|
|
14507
14507
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14508
|
-
|
|
14508
|
+
chunkFAKRTCAL_cjs.ConsentHeader,
|
|
14509
14509
|
{
|
|
14510
14510
|
icon: /* @__PURE__ */ jsxRuntime.jsx(chunk33MKOWSA_cjs.VendorLogo, { vendorKey: "microsoft_sharepoint", product: "sharepoint" }),
|
|
14511
14511
|
title: "Approve ARBI for SharePoint access",
|
|
14512
14512
|
children: "A member of your organization uses ARBI and wants to sync documents from SharePoint. Your Microsoft 365 organization requires an administrator to approve this once for the whole organization."
|
|
14513
14513
|
}
|
|
14514
14514
|
),
|
|
14515
|
-
result === "granted" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
14516
|
-
result === "declined" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
14517
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
14515
|
+
result === "granted" && /* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentNotice, { tone: "success", title: "Access approved \u2014 you\u2019re all set.", className: "mt-4", children: "People in your organization can now connect SharePoint from their own ARBI account. Nothing is synced until each user connects and chooses what to import." }),
|
|
14516
|
+
result === "declined" && /* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentNotice, { tone: "warning", title: "The approval didn\u2019t complete.", className: "mt-4", children: "The request was declined or canceled on the Microsoft screen. You can try again below \u2014 you must sign in with a Microsoft 365 administrator account of your organization." }),
|
|
14517
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFAKRTCAL_cjs.ConsentSection, { title: "What you are approving", children: [
|
|
14518
14518
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14519
|
-
|
|
14519
|
+
chunkFAKRTCAL_cjs.ConsentBulletList,
|
|
14520
14520
|
{
|
|
14521
14521
|
items: [
|
|
14522
14522
|
/* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
14523
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14523
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentStrong, { children: "Read SharePoint sites and files" }),
|
|
14524
14524
|
" \u2014 lets each user who connects their own account import documents from sites they already have access to. ARBI never gets more access than the user has."
|
|
14525
14525
|
] }),
|
|
14526
14526
|
/* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
14527
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14527
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentStrong, { children: "Sign users in and keep access" }),
|
|
14528
14528
|
" \u2014 standard sign-in (openid, profile, email) and offline access so syncs keep working between sessions."
|
|
14529
14529
|
] })
|
|
14530
14530
|
]
|
|
14531
14531
|
}
|
|
14532
14532
|
),
|
|
14533
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14533
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentText, { children: "Approving does not sync anything by itself and grants ARBI no standing access to your tenant. Each user still connects their own Microsoft account, and their tokens are end-to-end encrypted so ARBI\u2019s servers cannot read them at rest." }),
|
|
14534
14534
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Button, { asChild: true, className: "w-full pointer-coarse:h-11", children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: consentUrl, children: "Review and approve in Microsoft" }) }),
|
|
14535
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14535
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentText, { variant: "footnote", children: "You\u2019ll sign in at login.microsoftonline.com and see Microsoft\u2019s own summary of these permissions before anything is granted." })
|
|
14536
14536
|
] })
|
|
14537
14537
|
] }) });
|
|
14538
14538
|
}
|
|
@@ -14573,8 +14573,8 @@ function InvoicesModal({
|
|
|
14573
14573
|
key: inv.number ?? String(i),
|
|
14574
14574
|
date: formatInvoiceDate(inv.date),
|
|
14575
14575
|
kind: KIND_LABELS2[inv.kind],
|
|
14576
|
-
amount:
|
|
14577
|
-
amountNote: inv.amount_ex_vat != null && inv.amount_ex_vat !== inv.amount ? `${
|
|
14576
|
+
amount: chunkBAJNXRI5_cjs.formatMoney(inv.amount, inv.currency),
|
|
14577
|
+
amountNote: inv.amount_ex_vat != null && inv.amount_ex_vat !== inv.amount ? `${chunkBAJNXRI5_cjs.formatMoney(inv.amount_ex_vat, inv.currency)} ex VAT` : void 0,
|
|
14578
14578
|
status: inv.status,
|
|
14579
14579
|
isPaid: isPaid2,
|
|
14580
14580
|
href: inv.hosted_invoice_url ?? inv.url ?? inv.pdf_url ?? void 0,
|
|
@@ -14582,7 +14582,7 @@ function InvoicesModal({
|
|
|
14582
14582
|
};
|
|
14583
14583
|
});
|
|
14584
14584
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14585
|
-
|
|
14585
|
+
chunk6OXR4R6J_cjs.InvoicesDialog,
|
|
14586
14586
|
{
|
|
14587
14587
|
open,
|
|
14588
14588
|
onOpenChange,
|
|
@@ -14596,7 +14596,7 @@ function SubscriptionPlans({ projectExtId, onDismiss }) {
|
|
|
14596
14596
|
const { data: products, isLoading, error } = react.useProducts();
|
|
14597
14597
|
const [isAnnual, setIsAnnual] = react$1.useState(false);
|
|
14598
14598
|
const [promoCode, setPromoCode] = react$1.useState("");
|
|
14599
|
-
const [addonBudget, setAddonBudget] = react$1.useState(String(
|
|
14599
|
+
const [addonBudget, setAddonBudget] = react$1.useState(String(chunkBAJNXRI5_cjs.DEFAULT_SPEND_CAP_PENCE / 100));
|
|
14600
14600
|
const [checkoutBudget, setCheckoutBudget] = react$1.useState(null);
|
|
14601
14601
|
const [aiBlocks, setAiBlocks] = react$1.useState(0);
|
|
14602
14602
|
const [storageBlocks, setStorageBlocks] = react$1.useState(0);
|
|
@@ -14614,31 +14614,31 @@ function SubscriptionPlans({ projectExtId, onDismiss }) {
|
|
|
14614
14614
|
storageBlocks,
|
|
14615
14615
|
enabled: !!products?.length
|
|
14616
14616
|
});
|
|
14617
|
-
if (isLoading) return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14618
|
-
if (error) return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14619
|
-
if (!products || products.length === 0) return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14620
|
-
const prices =
|
|
14617
|
+
if (isLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PlanNotice, { children: "Loading plans\u2026" });
|
|
14618
|
+
if (error) return /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PlanNotice, { tone: "error", children: "Plans didn't load. Try again." });
|
|
14619
|
+
if (!products || products.length === 0) return /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PlanNotice, { children: "No plans available." });
|
|
14620
|
+
const prices = chunkBAJNXRI5_cjs.findProPrices(products);
|
|
14621
14621
|
const intervalPrice = isAnnual ? prices.annual : prices.monthly;
|
|
14622
|
-
const selectedPrice =
|
|
14622
|
+
const selectedPrice = chunkBAJNXRI5_cjs.packPrice(intervalPrice);
|
|
14623
14623
|
if (!intervalPrice) return null;
|
|
14624
14624
|
const interval = isAnnual ? "year" : "month";
|
|
14625
|
-
const savingsPercent =
|
|
14625
|
+
const savingsPercent = chunkBAJNXRI5_cjs.calcSavingsPercent(prices.monthly, prices.annual);
|
|
14626
14626
|
const handleSubscribe = () => {
|
|
14627
14627
|
setCheckoutInterval(interval);
|
|
14628
|
-
const parsed =
|
|
14629
|
-
setCheckoutBudget(parsed == null || parsed ===
|
|
14628
|
+
const parsed = chunkBAJNXRI5_cjs.parseBudgetPounds(addonBudget);
|
|
14629
|
+
setCheckoutBudget(parsed == null || parsed === chunkBAJNXRI5_cjs.DEFAULT_SPEND_CAP_PENCE ? null : parsed);
|
|
14630
14630
|
setCheckoutQuote(quote.quote);
|
|
14631
14631
|
setIsCheckoutModalOpen(true);
|
|
14632
14632
|
};
|
|
14633
14633
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
14634
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
14634
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.PlanStack, { children: [
|
|
14635
14635
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14636
|
-
|
|
14636
|
+
chunk6OXR4R6J_cjs.PlanPickerHeader,
|
|
14637
14637
|
{
|
|
14638
14638
|
title: "Plan",
|
|
14639
14639
|
info: /* @__PURE__ */ jsxRuntime.jsx(PlanInfoPopover2, {}),
|
|
14640
14640
|
toggle: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14641
|
-
|
|
14641
|
+
chunk6OXR4R6J_cjs.PricingToggle,
|
|
14642
14642
|
{
|
|
14643
14643
|
isAnnual,
|
|
14644
14644
|
onToggle: () => setIsAnnual(!isAnnual),
|
|
@@ -14675,7 +14675,7 @@ function SubscriptionPlans({ projectExtId, onDismiss }) {
|
|
|
14675
14675
|
currency: intervalPrice.currency
|
|
14676
14676
|
}
|
|
14677
14677
|
),
|
|
14678
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14678
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PromoCodeInput, { value: promoCode, onChange: setPromoCode }),
|
|
14679
14679
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14680
14680
|
CheckoutCountrySelect,
|
|
14681
14681
|
{
|
|
@@ -14687,9 +14687,9 @@ function SubscriptionPlans({ projectExtId, onDismiss }) {
|
|
|
14687
14687
|
}
|
|
14688
14688
|
),
|
|
14689
14689
|
/* @__PURE__ */ jsxRuntime.jsx(CheckoutTotal, { state: quote, postalCode, onPostalCodeChange: setPostalCode }),
|
|
14690
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
14690
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.PlanActionRow, { children: [
|
|
14691
14691
|
onDismiss && /* @__PURE__ */ jsxRuntime.jsx(
|
|
14692
|
-
|
|
14692
|
+
chunk6OXR4R6J_cjs.PlanActionButton,
|
|
14693
14693
|
{
|
|
14694
14694
|
tone: "muted",
|
|
14695
14695
|
fill: true,
|
|
@@ -14700,11 +14700,11 @@ function SubscriptionPlans({ projectExtId, onDismiss }) {
|
|
|
14700
14700
|
}
|
|
14701
14701
|
),
|
|
14702
14702
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14703
|
-
|
|
14703
|
+
chunk6OXR4R6J_cjs.PlanActionButton,
|
|
14704
14704
|
{
|
|
14705
14705
|
fill: true,
|
|
14706
14706
|
onClick: handleSubscribe,
|
|
14707
|
-
disabled: !selectedPrice ||
|
|
14707
|
+
disabled: !selectedPrice || chunkBAJNXRI5_cjs.parseBudgetPounds(addonBudget) === void 0 || !quote.canContinue,
|
|
14708
14708
|
size: "sm",
|
|
14709
14709
|
"data-testid": "subscribe-button",
|
|
14710
14710
|
children: "Continue to payment"
|
|
@@ -14763,7 +14763,7 @@ var FALLBACK_MESSAGES = {
|
|
|
14763
14763
|
BILLING_ADDRESS_REQUIRED: "Add a billing address first."
|
|
14764
14764
|
};
|
|
14765
14765
|
function addonErrorMessage(error) {
|
|
14766
|
-
const detail =
|
|
14766
|
+
const detail = chunkBAJNXRI5_cjs.apiErrorDetail(error);
|
|
14767
14767
|
if (detail && typeof detail === "object") {
|
|
14768
14768
|
const { code, message } = detail;
|
|
14769
14769
|
if (message) return message;
|
|
@@ -14789,14 +14789,14 @@ function chargeRefusalMessage(error) {
|
|
|
14789
14789
|
return code ? REFUSALS[code] : null;
|
|
14790
14790
|
}
|
|
14791
14791
|
function addonErrorCode(error) {
|
|
14792
|
-
const detail =
|
|
14792
|
+
const detail = chunkBAJNXRI5_cjs.apiErrorDetail(error);
|
|
14793
14793
|
if (detail && typeof detail === "object") {
|
|
14794
14794
|
const code = detail.code;
|
|
14795
14795
|
if (code && code in FALLBACK_MESSAGES) return code;
|
|
14796
14796
|
}
|
|
14797
14797
|
return null;
|
|
14798
14798
|
}
|
|
14799
|
-
var addedMessage = (kind, blockAiGbp, blockStorageGb) => kind === "ai_usage" ? `${react.formatGbp(blockAiGbp ??
|
|
14799
|
+
var addedMessage = (kind, blockAiGbp, blockStorageGb) => kind === "ai_usage" ? `${react.formatGbp(blockAiGbp ?? chunkBAJNXRI5_cjs.ADDON_BLOCK_AI_GBP)} of AI usage added` : `${blockStorageGb ?? chunkBAJNXRI5_cjs.STORAGE_BLOCK_GB} GB added`;
|
|
14800
14800
|
function useAddonPurchase() {
|
|
14801
14801
|
const addBlock = react.useAddProjectAddonBlock();
|
|
14802
14802
|
const { mutate } = addBlock;
|
|
@@ -14848,7 +14848,7 @@ function PlanChangeLines({
|
|
|
14848
14848
|
isError,
|
|
14849
14849
|
className
|
|
14850
14850
|
}) {
|
|
14851
|
-
const lines = preview ?
|
|
14851
|
+
const lines = preview ? chunkBAJNXRI5_cjs.planPreviewLines(preview) : [{ id: "pay-today", text: isError ? chunkBAJNXRI5_cjs.PAY_TODAY_UNPRICED : "Checking price\u2026" }];
|
|
14852
14852
|
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)) });
|
|
14853
14853
|
}
|
|
14854
14854
|
var BANK_CONFIRM_PLAN_CHANGE = "Confirm with your bank. Nothing is charged until you do.";
|
|
@@ -14856,13 +14856,13 @@ function notifyPlanChange(data, fallback, planName2) {
|
|
|
14856
14856
|
const outcome = data?.plan_change;
|
|
14857
14857
|
switch (outcome?.result) {
|
|
14858
14858
|
case "upgraded": {
|
|
14859
|
-
const plan =
|
|
14860
|
-
const charged = outcome.charged_pence > 0 ? ` \xB7 ${
|
|
14859
|
+
const plan = chunkBAJNXRI5_cjs.planNameForPacks(data?.addons?.packs ?? data?.packs);
|
|
14860
|
+
const charged = outcome.charged_pence > 0 ? ` \xB7 ${chunkBAJNXRI5_cjs.formatMoney(outcome.charged_pence, "gbp")} charged` : "";
|
|
14861
14861
|
shell.notify.success(`Upgraded to ${plan}${charged}`);
|
|
14862
14862
|
break;
|
|
14863
14863
|
}
|
|
14864
14864
|
case "scheduled": {
|
|
14865
|
-
const when2 =
|
|
14865
|
+
const when2 = chunkBAJNXRI5_cjs.formatPeriodEnd(data?.addons?.period_end ?? data?.current_period_end);
|
|
14866
14866
|
shell.notify.success(when2 ? `Scheduled for ${when2}` : fallback);
|
|
14867
14867
|
break;
|
|
14868
14868
|
}
|
|
@@ -14895,23 +14895,23 @@ function ChangeProPlan({
|
|
|
14895
14895
|
const { data: products } = react.useProducts();
|
|
14896
14896
|
const changePlan = react.useChangeProjectPlan();
|
|
14897
14897
|
const cancel = react.useCancelProjectSubscription();
|
|
14898
|
-
const prices =
|
|
14898
|
+
const prices = chunkBAJNXRI5_cjs.findProPrices(products);
|
|
14899
14899
|
const addons = project.addons;
|
|
14900
14900
|
const isCanceling = project.cancel_at_period_end === true || project.subscription === "canceled";
|
|
14901
|
-
const currentPacks = Math.max(addons?.packs ?? project.packs ??
|
|
14902
|
-
const isLegacyMultiPack = currentPacks >
|
|
14901
|
+
const currentPacks = Math.max(addons?.packs ?? project.packs ?? chunkBAJNXRI5_cjs.PRO_PACKS, chunkBAJNXRI5_cjs.PRO_PACKS);
|
|
14902
|
+
const isLegacyMultiPack = currentPacks > chunkBAJNXRI5_cjs.PRO_PACKS;
|
|
14903
14903
|
const currentInterval = project.plan_interval === "year" ? "year" : "month";
|
|
14904
14904
|
const scheduledPacks = isCanceling ? 0 : addons?.packs_next ?? currentPacks;
|
|
14905
14905
|
const scheduledInterval = addons?.pending_interval ?? currentInterval;
|
|
14906
14906
|
const [targetPacks, setTargetPacks] = react$1.useState(scheduledPacks);
|
|
14907
14907
|
const [chosenInterval, setChosenInterval] = react$1.useState(scheduledInterval);
|
|
14908
|
-
const targetInterval = targetPacks >
|
|
14908
|
+
const targetInterval = targetPacks > chunkBAJNXRI5_cjs.PRO_PACKS ? currentInterval : chosenInterval;
|
|
14909
14909
|
const periodEnd = formatDate(addons?.period_end ?? project.current_period_end);
|
|
14910
14910
|
const when2 = periodEnd ?? "the end of the period";
|
|
14911
14911
|
const shortWhen = periodEnd ? periodEnd.replace(/ \d{4}$/, "") : "period end";
|
|
14912
14912
|
const isPending = changePlan.isPending || cancel.isPending;
|
|
14913
14913
|
const sameAsScheduled = targetPacks === scheduledPacks && (targetPacks === 0 || targetInterval === scheduledInterval);
|
|
14914
|
-
const packOptions = isLegacyMultiPack ? [currentPacks,
|
|
14914
|
+
const packOptions = isLegacyMultiPack ? [currentPacks, chunkBAJNXRI5_cjs.PRO_PACKS, 0] : [chunkBAJNXRI5_cjs.PRO_PACKS, 0];
|
|
14915
14915
|
const intervalPrice = targetInterval === "year" ? prices.annual : prices.monthly;
|
|
14916
14916
|
const currency = intervalPrice?.currency ?? project.currency ?? "gbp";
|
|
14917
14917
|
const preview = react.usePreviewProjectPlanChange(
|
|
@@ -14919,7 +14919,7 @@ function ChangeProPlan({
|
|
|
14919
14919
|
sameAsScheduled || targetPacks === 0 ? null : { packs: targetPacks, interval: targetInterval }
|
|
14920
14920
|
);
|
|
14921
14921
|
const noChange = sameAsScheduled || preview.data?.unchanged === true;
|
|
14922
|
-
const nameFor = (packs) => packs === currentPacks && packs > 0 ?
|
|
14922
|
+
const nameFor = (packs) => packs === currentPacks && packs > 0 ? chunkBAJNXRI5_cjs.proTierName(project) : chunkBAJNXRI5_cjs.planNameForPacks(packs);
|
|
14923
14923
|
const effects = [];
|
|
14924
14924
|
const target = nameFor(targetPacks);
|
|
14925
14925
|
if (targetPacks === 0) {
|
|
@@ -14929,7 +14929,7 @@ function ChangeProPlan({
|
|
|
14929
14929
|
if (targetPacks < currentPacks) {
|
|
14930
14930
|
effects.push(`Changes to one Pro licence on ${when2}. No refund.`);
|
|
14931
14931
|
} else if (!isCanceling && addons?.packs_next != null) {
|
|
14932
|
-
effects.push(`Cancels the change to ${
|
|
14932
|
+
effects.push(`Cancels the change to ${chunkBAJNXRI5_cjs.planNameForPacks(addons.packs_next)}.`);
|
|
14933
14933
|
}
|
|
14934
14934
|
if (targetInterval !== currentInterval) {
|
|
14935
14935
|
effects.push(`${targetInterval === "year" ? "Annual" : "Monthly"} billing from ${when2}.`);
|
|
@@ -14968,33 +14968,33 @@ function ChangeProPlan({
|
|
|
14968
14968
|
if (packs === 0) {
|
|
14969
14969
|
return {
|
|
14970
14970
|
total: "\xA30",
|
|
14971
|
-
summary: `${react.formatGbp(
|
|
14971
|
+
summary: `${react.formatGbp(chunkBAJNXRI5_cjs.FREE_AI_GBP)} of AI usage \xB7 ${chunkBAJNXRI5_cjs.FREE_STORAGE_MB} MB \xB7 just you`
|
|
14972
14972
|
};
|
|
14973
14973
|
}
|
|
14974
|
-
const allowance = `${react.formatGbp(
|
|
14975
|
-
const legacy = packs >
|
|
14976
|
-
const exVat = legacy ? project.amount_ex_vat :
|
|
14974
|
+
const allowance = `${react.formatGbp(chunkBAJNXRI5_cjs.PRO_AI_GBP * packs)} of AI usage \xB7 ${chunkBAJNXRI5_cjs.PRO_STORAGE_GB * packs} GB`;
|
|
14975
|
+
const legacy = packs > chunkBAJNXRI5_cjs.PRO_PACKS;
|
|
14976
|
+
const exVat = legacy ? project.amount_ex_vat : chunkBAJNXRI5_cjs.packPrice(intervalPrice)?.amount_ex_vat;
|
|
14977
14977
|
return {
|
|
14978
|
-
total: exVat != null ?
|
|
14978
|
+
total: exVat != null ? chunkBAJNXRI5_cjs.plusVat(exVat, currency) : void 0,
|
|
14979
14979
|
summary: allowance
|
|
14980
14980
|
};
|
|
14981
14981
|
};
|
|
14982
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
14982
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.PlanStack, { gap: 4, testId: "change-pro-plan", children: [
|
|
14983
14983
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [
|
|
14984
14984
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-foreground", children: "Billing" }),
|
|
14985
|
-
targetPacks >
|
|
14986
|
-
|
|
14985
|
+
targetPacks > chunkBAJNXRI5_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(
|
|
14986
|
+
chunk6OXR4R6J_cjs.PricingToggle,
|
|
14987
14987
|
{
|
|
14988
14988
|
isAnnual: targetInterval === "year",
|
|
14989
14989
|
onToggle: () => setChosenInterval(targetInterval === "year" ? "month" : "year"),
|
|
14990
|
-
savingsPercent:
|
|
14990
|
+
savingsPercent: chunkBAJNXRI5_cjs.calcSavingsPercent(prices.monthly, prices.annual)
|
|
14991
14991
|
}
|
|
14992
14992
|
)
|
|
14993
14993
|
] }),
|
|
14994
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14994
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PlanStack, { gap: 2, children: packOptions.map((packs) => {
|
|
14995
14995
|
const { total, summary } = optionFor(packs);
|
|
14996
14996
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14997
|
-
|
|
14997
|
+
chunk6OXR4R6J_cjs.PlanTierOption,
|
|
14998
14998
|
{
|
|
14999
14999
|
onSelect: setTargetPacks,
|
|
15000
15000
|
option: {
|
|
@@ -15011,13 +15011,13 @@ function ChangeProPlan({
|
|
|
15011
15011
|
);
|
|
15012
15012
|
}) }),
|
|
15013
15013
|
isLegacyMultiPack && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1", children: [
|
|
15014
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
15015
|
-
|
|
15014
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.PlanNotice, { className: "text-xs", testId: "change-plan-legacy-note", children: [
|
|
15015
|
+
chunkBAJNXRI5_cjs.proTierName(project),
|
|
15016
15016
|
" is no longer sold"
|
|
15017
15017
|
] }),
|
|
15018
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
15018
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.MoreInfo, { title: "Legacy plan", testId: "change-plan-legacy-more-info", children: [
|
|
15019
15019
|
/* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
|
|
15020
|
-
|
|
15020
|
+
chunkBAJNXRI5_cjs.proTierName(project),
|
|
15021
15021
|
" keeps renewing at its own price, with its allowance and add-ons, until you change it."
|
|
15022
15022
|
] }),
|
|
15023
15023
|
/* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
|
|
@@ -15038,7 +15038,7 @@ function ChangeProPlan({
|
|
|
15038
15038
|
),
|
|
15039
15039
|
targetPacks > 0 && /* @__PURE__ */ jsxRuntime.jsx(ConnectedReferralRewardNote, {}),
|
|
15040
15040
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15041
|
-
|
|
15041
|
+
chunk6OXR4R6J_cjs.PlanActionButton,
|
|
15042
15042
|
{
|
|
15043
15043
|
onClick: apply,
|
|
15044
15044
|
disabled: noChange || isPending,
|
|
@@ -15049,9 +15049,9 @@ function ChangeProPlan({
|
|
|
15049
15049
|
] });
|
|
15050
15050
|
}
|
|
15051
15051
|
function ChangePlanDialog({ project, open, onOpenChange }) {
|
|
15052
|
-
const isPro = !!project &&
|
|
15052
|
+
const isPro = !!project && chunkBAJNXRI5_cjs.isProProject(project);
|
|
15053
15053
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
15054
|
-
|
|
15054
|
+
chunk6OXR4R6J_cjs.PlanDialogFrame,
|
|
15055
15055
|
{
|
|
15056
15056
|
open,
|
|
15057
15057
|
onOpenChange,
|
|
@@ -15071,14 +15071,14 @@ function ChangePlanDialog({ project, open, onOpenChange }) {
|
|
|
15071
15071
|
}
|
|
15072
15072
|
function ProjectsTable() {
|
|
15073
15073
|
const { data: projects, isLoading } = react.useProjects();
|
|
15074
|
-
const currentUserExtId =
|
|
15074
|
+
const currentUserExtId = chunkBAJNXRI5_cjs.useSelfExtId();
|
|
15075
15075
|
const { openProject } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
15076
15076
|
const updateProject = react.useUpdateProjectFields();
|
|
15077
15077
|
const [renameTarget, setRenameTarget] = react$1.useState(null);
|
|
15078
15078
|
const [renameValue, setRenameValue] = react$1.useState("");
|
|
15079
15079
|
const [invoicesTarget, setInvoicesTarget] = react$1.useState(null);
|
|
15080
15080
|
const [upgradeTarget, setUpgradeTarget] = react$1.useState(null);
|
|
15081
|
-
const { stripeEnabled } =
|
|
15081
|
+
const { stripeEnabled } = chunkBAJNXRI5_cjs.useBillingSupport();
|
|
15082
15082
|
const ownedProjects = react$1.useMemo(
|
|
15083
15083
|
() => (projects ?? []).filter((p) => p.created_by === currentUserExtId),
|
|
15084
15084
|
[projects, currentUserExtId]
|
|
@@ -15117,13 +15117,13 @@ function ProjectsTable() {
|
|
|
15117
15117
|
const hasPaid = p.subscription === "active" || p.subscription === "past_due";
|
|
15118
15118
|
const canUpgrade = stripeEnabled && !hasPaid && p.subscription !== "canceled" && p.subscription !== "dev";
|
|
15119
15119
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
15120
|
-
|
|
15120
|
+
chunk6OXR4R6J_cjs.ProjectRow,
|
|
15121
15121
|
{
|
|
15122
15122
|
testId: `project-row-${p.external_id}`,
|
|
15123
15123
|
onOpen: () => openProject(p.external_id),
|
|
15124
15124
|
identity: /* @__PURE__ */ jsxRuntime.jsx(ConnectedProjectEntity, { name: p.name, relation: "mine", subscription: p.subscription }),
|
|
15125
|
-
summary: stripeEnabled ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex items-center whitespace-nowrap", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
15126
|
-
usage: p.quotas ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
15125
|
+
summary: stripeEnabled ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex items-center whitespace-nowrap", children: /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PlanBadge, { ...chunkBAJNXRI5_cjs.planBadgeView(p) }) }) : void 0,
|
|
15126
|
+
usage: p.quotas ? /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.QuotaMeter, { items: chunkBAJNXRI5_cjs.getQuotaItems(p.quotas), size: "lg" }) : void 0,
|
|
15127
15127
|
actions: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
15128
15128
|
canUpgrade && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15129
15129
|
ui.Button,
|
|
@@ -15157,9 +15157,9 @@ function ProjectsTable() {
|
|
|
15157
15157
|
);
|
|
15158
15158
|
};
|
|
15159
15159
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
15160
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15160
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.ProjectList, { isLoading, isEmpty: ownedProjects.length === 0, isFilteredOut: false, children: ownedProjects.map(renderRow) }),
|
|
15161
15161
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15162
|
-
|
|
15162
|
+
chunk6OXR4R6J_cjs.RenameDialog,
|
|
15163
15163
|
{
|
|
15164
15164
|
open: !!renameTarget,
|
|
15165
15165
|
onClose: () => setRenameTarget(null),
|
|
@@ -15190,7 +15190,7 @@ function ProjectsTable() {
|
|
|
15190
15190
|
}
|
|
15191
15191
|
function SharedProjects() {
|
|
15192
15192
|
const { data: projects } = react.useProjects();
|
|
15193
|
-
const currentUserExtId =
|
|
15193
|
+
const currentUserExtId = chunkBAJNXRI5_cjs.useSelfExtId();
|
|
15194
15194
|
const { data: usageToday } = react.useUserUsageToday();
|
|
15195
15195
|
const shared = react$1.useMemo(
|
|
15196
15196
|
() => (projects ?? []).filter((p) => p.created_by !== currentUserExtId),
|
|
@@ -15199,13 +15199,13 @@ function SharedProjects() {
|
|
|
15199
15199
|
if (shared.length === 0) return null;
|
|
15200
15200
|
const usedToday = usageToday?.used_gbp ?? 0;
|
|
15201
15201
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
15202
|
-
|
|
15202
|
+
chunk6OXR4R6J_cjs.SharedProjectsSection,
|
|
15203
15203
|
{
|
|
15204
15204
|
footnote: `Your daily AI usage allowance in ${ui.entityNoun("PROJECT", "PLURAL")} other people run \u2014 their plan and billing are theirs.`,
|
|
15205
15205
|
children: shared.map((p) => {
|
|
15206
15206
|
const cap = p.daily_cap_per_user;
|
|
15207
15207
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
15208
|
-
|
|
15208
|
+
chunk6OXR4R6J_cjs.SharedProjectRow,
|
|
15209
15209
|
{
|
|
15210
15210
|
testId: `shared-project-${p.external_id}`,
|
|
15211
15211
|
identity: /* @__PURE__ */ jsxRuntime.jsx(ConnectedProjectEntity, { name: p.name, relation: "other" }),
|
|
@@ -15251,7 +15251,7 @@ function DailyCapEditor({ project }) {
|
|
|
15251
15251
|
);
|
|
15252
15252
|
};
|
|
15253
15253
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
15254
|
-
|
|
15254
|
+
chunk6OXR4R6J_cjs.DailyCapField,
|
|
15255
15255
|
{
|
|
15256
15256
|
value,
|
|
15257
15257
|
onChange: setValue,
|
|
@@ -15264,11 +15264,11 @@ function DailyCapEditor({ project }) {
|
|
|
15264
15264
|
function SubscriptionStatus({ project }) {
|
|
15265
15265
|
const { quotas, cancel_at_period_end, subscription, current_period_end, addons } = project;
|
|
15266
15266
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
15267
|
-
|
|
15267
|
+
chunk6OXR4R6J_cjs.SubscriptionStatusView,
|
|
15268
15268
|
{
|
|
15269
|
-
resetDate:
|
|
15269
|
+
resetDate: chunkBAJNXRI5_cjs.formatResetDate(addons?.ai_usage_reset_at ?? current_period_end),
|
|
15270
15270
|
isCanceling: subscription === "canceled" || cancel_at_period_end === true,
|
|
15271
|
-
meters:
|
|
15271
|
+
meters: chunkBAJNXRI5_cjs.getQuotaItems(quotas).map((q) => ({
|
|
15272
15272
|
key: q.key,
|
|
15273
15273
|
icon: q.icon,
|
|
15274
15274
|
label: q.label,
|
|
@@ -15332,7 +15332,7 @@ function PendingChange({
|
|
|
15332
15332
|
}
|
|
15333
15333
|
);
|
|
15334
15334
|
}
|
|
15335
|
-
var titleFor = (kind, blockAiGbp, blockStorageGb) => kind === "ai_usage" ? `Add ${react.formatGbp(blockAiGbp ??
|
|
15335
|
+
var titleFor = (kind, blockAiGbp, blockStorageGb) => kind === "ai_usage" ? `Add ${react.formatGbp(blockAiGbp ?? chunkBAJNXRI5_cjs.ADDON_BLOCK_AI_GBP)} of AI usage` : `Add ${blockStorageGb ?? chunkBAJNXRI5_cjs.STORAGE_BLOCK_GB} GB storage`;
|
|
15336
15336
|
var blocksOf = (kind, project) => (kind === "ai_usage" ? project.addons?.ai_blocks : project.addons?.storage_blocks) ?? 0;
|
|
15337
15337
|
function Row({ label, children }) {
|
|
15338
15338
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-baseline justify-between gap-4", children: [
|
|
@@ -15353,11 +15353,11 @@ function AddAddonDialog({
|
|
|
15353
15353
|
const addons = project.addons;
|
|
15354
15354
|
if (!addons) return null;
|
|
15355
15355
|
const isAnnual = project.plan_interval === "year";
|
|
15356
|
-
const price =
|
|
15357
|
-
const nextCharge =
|
|
15358
|
-
const now = quote.data ?
|
|
15359
|
-
const renewal = quote.data ?
|
|
15360
|
-
const today = now ? { total:
|
|
15356
|
+
const price = chunkBAJNXRI5_cjs.addonCharge(kind, addons, isAnnual, addons.period_end ?? project.current_period_end);
|
|
15357
|
+
const nextCharge = chunkBAJNXRI5_cjs.formatPeriodEnd(addons.period_end ?? project.current_period_end);
|
|
15358
|
+
const now = quote.data ? chunkBAJNXRI5_cjs.quoteParts(quote.data.now) : null;
|
|
15359
|
+
const renewal = quote.data ? chunkBAJNXRI5_cjs.quoteParts(quote.data.renewal) : null;
|
|
15360
|
+
const today = now ? { total: chunkBAJNXRI5_cjs.money2(now.total), detail: chunkBAJNXRI5_cjs.taxDetail(now) } : { total: price.now, detail: `incl. VAT (${price.nowExVat} + ${price.nowVat} VAT)` };
|
|
15361
15361
|
const pricing = quote.isLoading;
|
|
15362
15362
|
const confirm = () => {
|
|
15363
15363
|
const before = blocksOf(kind, project);
|
|
@@ -15396,8 +15396,8 @@ function AddAddonDialog({
|
|
|
15396
15396
|
isAnnual ? "yearly" : "monthly",
|
|
15397
15397
|
" \xB7 no refund"
|
|
15398
15398
|
] }),
|
|
15399
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15400
|
-
|
|
15399
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.MoreInfo, { title: "Adding a top-up", testId: "add-addon-more-info", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
15400
|
+
chunk6OXR4R6J_cjs.MoreInfoList,
|
|
15401
15401
|
{
|
|
15402
15402
|
items: [
|
|
15403
15403
|
{
|
|
@@ -15412,7 +15412,7 @@ function AddAddonDialog({
|
|
|
15412
15412
|
term: "Usage cap",
|
|
15413
15413
|
text: "Adding by hand is never blocked by the usage cap; the cap limits automatic top-ups only."
|
|
15414
15414
|
},
|
|
15415
|
-
...isAnnual && kind === "ai_usage" ? [{ term: "Annual", text: `${
|
|
15415
|
+
...isAnnual && kind === "ai_usage" ? [{ term: "Annual", text: `${chunkBAJNXRI5_cjs.ANNUAL_PREMIUM_AI_NOTE}.` }] : []
|
|
15416
15416
|
]
|
|
15417
15417
|
}
|
|
15418
15418
|
) })
|
|
@@ -15435,7 +15435,7 @@ function AddAddonDialog({
|
|
|
15435
15435
|
)
|
|
15436
15436
|
] }) }),
|
|
15437
15437
|
!pricing && /* @__PURE__ */ jsxRuntime.jsxs(Row, { label: "Next charge", children: [
|
|
15438
|
-
renewal ?
|
|
15438
|
+
renewal ? chunkBAJNXRI5_cjs.totalWithTaxWord(renewal) : price.then.replace(/\/(month|year)/, ""),
|
|
15439
15439
|
nextCharge ? ` on ${nextCharge}` : " at renewal"
|
|
15440
15440
|
] })
|
|
15441
15441
|
] }) }),
|
|
@@ -15466,11 +15466,11 @@ function ReduceAddonDialog({
|
|
|
15466
15466
|
const update = react.useUpdateProjectNextPeriodAddons();
|
|
15467
15467
|
const addons = project.addons;
|
|
15468
15468
|
if (!addons) return null;
|
|
15469
|
-
const { min, next } =
|
|
15469
|
+
const { min, next } = chunkBAJNXRI5_cjs.reduceBounds(kind, addons);
|
|
15470
15470
|
const keep2 = Math.max(min, next - 1);
|
|
15471
|
-
const size =
|
|
15472
|
-
const what =
|
|
15473
|
-
const from =
|
|
15471
|
+
const size = chunkBAJNXRI5_cjs.nextRemovedBlockSize(kind, addons);
|
|
15472
|
+
const what = chunkBAJNXRI5_cjs.stepLabel(kind, size);
|
|
15473
|
+
const from = chunkBAJNXRI5_cjs.formatPeriodEnd(addons.period_end ?? project.current_period_end) ?? "your next renewal";
|
|
15474
15474
|
const fromShort = from.replace(/ \d{4}$/, "");
|
|
15475
15475
|
const allowanceNext = kind === "ai_usage" ? addons.ai_allowance_next_gbp - size : addons.storage_allowance_next_gb - size;
|
|
15476
15476
|
const allowanceNow = kind === "ai_usage" ? addons.ai_allowance_gbp : addons.storage_allowance_gb;
|
|
@@ -15478,7 +15478,7 @@ function ReduceAddonDialog({
|
|
|
15478
15478
|
const save = () => update.mutate(
|
|
15479
15479
|
{
|
|
15480
15480
|
projectExtId: project.external_id,
|
|
15481
|
-
body:
|
|
15481
|
+
body: chunkBAJNXRI5_cjs.nextPeriodBody(kind, keep2)
|
|
15482
15482
|
},
|
|
15483
15483
|
{
|
|
15484
15484
|
onSuccess: () => {
|
|
@@ -15506,7 +15506,7 @@ function ReduceAddonDialog({
|
|
|
15506
15506
|
fromShort,
|
|
15507
15507
|
" \xB7 no refund"
|
|
15508
15508
|
] }),
|
|
15509
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
15509
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.MoreInfo, { title: "Reducing a top-up", testId: "reduce-addon-more-info", children: [
|
|
15510
15510
|
/* @__PURE__ */ jsxRuntime.jsxs("p", { children: [
|
|
15511
15511
|
"The reduction applies from your next renewal (",
|
|
15512
15512
|
from,
|
|
@@ -15545,7 +15545,7 @@ function ReduceAddonDialog({
|
|
|
15545
15545
|
}
|
|
15546
15546
|
) });
|
|
15547
15547
|
}
|
|
15548
|
-
var gbp = (pence) =>
|
|
15548
|
+
var gbp = (pence) => chunkBAJNXRI5_cjs.formatMoney(pence, "gbp");
|
|
15549
15549
|
var gb2 = (n) => `${Math.round(n * 10) / 10} GB`;
|
|
15550
15550
|
var pct = (used, limit) => limit > 0 ? Math.min(100, used / limit * 100) : 0;
|
|
15551
15551
|
function formatShortDate(unix) {
|
|
@@ -15557,20 +15557,20 @@ function AutoTopupThreshold({
|
|
|
15557
15557
|
addons
|
|
15558
15558
|
}) {
|
|
15559
15559
|
const updateSettings = react.useUpdateProjectAddonSettings();
|
|
15560
|
-
const min = addons.min_auto_topup_threshold_gbp ||
|
|
15560
|
+
const min = addons.min_auto_topup_threshold_gbp || chunkBAJNXRI5_cjs.MIN_AUTO_TOPUP_THRESHOLD_GBP;
|
|
15561
15561
|
const saved = addons.auto_topup_threshold_gbp;
|
|
15562
15562
|
const [value, setValue] = react$1.useState(String(saved));
|
|
15563
15563
|
react$1.useEffect(() => setValue(String(saved)), [saved]);
|
|
15564
15564
|
const parsed = Number(value);
|
|
15565
15565
|
const valid = Number.isFinite(parsed) && parsed >= min;
|
|
15566
15566
|
const dirty = valid && parsed !== saved;
|
|
15567
|
-
const off =
|
|
15567
|
+
const off = chunkBAJNXRI5_cjs.isAddonBudgetZero(addons);
|
|
15568
15568
|
const save = () => {
|
|
15569
15569
|
if (!dirty) return;
|
|
15570
15570
|
updateSettings.mutate(
|
|
15571
15571
|
{
|
|
15572
15572
|
projectExtId: project.external_id,
|
|
15573
|
-
body:
|
|
15573
|
+
body: chunkBAJNXRI5_cjs.addonSettingsBody(addons, { auto_topup_threshold_gbp: parsed })
|
|
15574
15574
|
},
|
|
15575
15575
|
{
|
|
15576
15576
|
onSuccess: () => shell.notify.success(`Auto-add below ${react.formatGbp(parsed)} of AI usage left`),
|
|
@@ -15667,10 +15667,10 @@ function ResourceMeter({
|
|
|
15667
15667
|
const update = react.useUpdateProjectNextPeriodAddons();
|
|
15668
15668
|
const isAi = kind === "ai_usage";
|
|
15669
15669
|
const slug = isAi ? "ai-usage" : "storage";
|
|
15670
|
-
const periodEnd =
|
|
15670
|
+
const periodEnd = chunkBAJNXRI5_cjs.formatPeriodEnd(addons.period_end ?? project.current_period_end);
|
|
15671
15671
|
const from = periodEnd ?? "your next renewal";
|
|
15672
15672
|
const fromShort = formatShortDate(addons.period_end ?? project.current_period_end) ?? "renewal";
|
|
15673
|
-
const { min, current, next } =
|
|
15673
|
+
const { min, current, next } = chunkBAJNXRI5_cjs.reduceBounds(kind, addons);
|
|
15674
15674
|
const fmt = (n) => isAi ? react.formatGbp(n) : gb2(n);
|
|
15675
15675
|
const used = isAi ? addons.ai_used_gbp : addons.storage_used_gb;
|
|
15676
15676
|
const allowance = isAi ? addons.ai_allowance_gbp : addons.storage_allowance_gb;
|
|
@@ -15678,15 +15678,15 @@ function ResourceMeter({
|
|
|
15678
15678
|
const plan = isAi ? addons.plan_ai_gbp : addons.plan_storage_gb;
|
|
15679
15679
|
const topUps = Math.max(0, allowance - plan);
|
|
15680
15680
|
const blocks = isAi ? addons.ai_blocks : addons.storage_blocks;
|
|
15681
|
-
const hasLegacy =
|
|
15682
|
-
const room =
|
|
15683
|
-
const capZero =
|
|
15684
|
-
const resets = isAi ? formatShortDate(
|
|
15685
|
-
const removeSize =
|
|
15681
|
+
const hasLegacy = chunkBAJNXRI5_cjs.splitBlocks(kind, blocks, addons).legacy > 0;
|
|
15682
|
+
const room = chunkBAJNXRI5_cjs.autoRoom(kind, addons);
|
|
15683
|
+
const capZero = chunkBAJNXRI5_cjs.isAddonBudgetZero(addons);
|
|
15684
|
+
const resets = isAi ? formatShortDate(chunkBAJNXRI5_cjs.aiUsageResetTimestamp(project)) : null;
|
|
15685
|
+
const removeSize = chunkBAJNXRI5_cjs.nextRemovedBlockSize(kind, addons);
|
|
15686
15686
|
const undo = () => update.mutate(
|
|
15687
15687
|
{
|
|
15688
15688
|
projectExtId: project.external_id,
|
|
15689
|
-
body:
|
|
15689
|
+
body: chunkBAJNXRI5_cjs.nextPeriodBody(kind, current)
|
|
15690
15690
|
},
|
|
15691
15691
|
{
|
|
15692
15692
|
onSuccess: () => shell.notify.success("Kept"),
|
|
@@ -15703,7 +15703,7 @@ function ResourceMeter({
|
|
|
15703
15703
|
allowance: { used, plan, topUps, autoRoom: capZero ? 0 : room },
|
|
15704
15704
|
legend: {
|
|
15705
15705
|
plan: `Plan ${fmt(plan)}`,
|
|
15706
|
-
topUps: topUps > 0 ? `Top-ups ${fmt(topUps)}${hasLegacy ? ` (${
|
|
15706
|
+
topUps: topUps > 0 ? `Top-ups ${fmt(topUps)}${hasLegacy ? ` (${chunkBAJNXRI5_cjs.blocksLabel(kind, blocks, addons)})` : ""}` : void 0,
|
|
15707
15707
|
autoRoom: room != null && room > 0 && !capZero ? `Automatic up to ${fmt(room)}` : void 0
|
|
15708
15708
|
},
|
|
15709
15709
|
testId: `usage-meter-${slug}`,
|
|
@@ -15732,9 +15732,9 @@ function ResourceMeter({
|
|
|
15732
15732
|
{
|
|
15733
15733
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "size-3.5" }),
|
|
15734
15734
|
label: isAi ? react.formatGbp(addons.block_ai_gbp) : `${addons.block_storage_gb} GB`,
|
|
15735
|
-
caption:
|
|
15735
|
+
caption: chunkBAJNXRI5_cjs.addStepCaption(kind, addons),
|
|
15736
15736
|
onClick: onAdd,
|
|
15737
|
-
ariaLabel: `Add ${
|
|
15737
|
+
ariaLabel: `Add ${chunkBAJNXRI5_cjs.stepLabel(kind, isAi ? addons.block_ai_gbp : addons.block_storage_gb)}`,
|
|
15738
15738
|
testId: isAi ? "add-ai-block-button" : "add-storage-block-button"
|
|
15739
15739
|
}
|
|
15740
15740
|
),
|
|
@@ -15745,7 +15745,7 @@ function ResourceMeter({
|
|
|
15745
15745
|
label: isAi ? react.formatGbp(removeSize) : `${removeSize} GB`,
|
|
15746
15746
|
caption: `from ${fromShort}`,
|
|
15747
15747
|
onClick: onReduce,
|
|
15748
|
-
ariaLabel: `Remove ${
|
|
15748
|
+
ariaLabel: `Remove ${chunkBAJNXRI5_cjs.stepLabel(kind, removeSize)} from ${from}`,
|
|
15749
15749
|
testId: `reduce-${slug}-button`
|
|
15750
15750
|
}
|
|
15751
15751
|
)
|
|
@@ -15784,10 +15784,10 @@ function UsageCapEditor({ project, addons }) {
|
|
|
15784
15784
|
updateSettings.mutate(
|
|
15785
15785
|
{
|
|
15786
15786
|
projectExtId: project.external_id,
|
|
15787
|
-
body:
|
|
15787
|
+
body: chunkBAJNXRI5_cjs.addonSettingsBody(addons, { spend_cap_pence: nextCap })
|
|
15788
15788
|
},
|
|
15789
15789
|
{
|
|
15790
|
-
onSuccess: () => shell.notify.success(
|
|
15790
|
+
onSuccess: () => shell.notify.success(chunkBAJNXRI5_cjs.budgetSavedMessage(nextCap)),
|
|
15791
15791
|
onError: (error) => shell.notify.error(addonErrorMessage(error))
|
|
15792
15792
|
}
|
|
15793
15793
|
);
|
|
@@ -15798,14 +15798,14 @@ function UsageCapEditor({ project, addons }) {
|
|
|
15798
15798
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15799
15799
|
chunkC4TGESIB_cjs.UsageMeter,
|
|
15800
15800
|
{
|
|
15801
|
-
label:
|
|
15801
|
+
label: chunkBAJNXRI5_cjs.USAGE_CAP_LABEL,
|
|
15802
15802
|
hint: spendResets && savedCap !== 0 ? `resets ${spendResets}` : void 0,
|
|
15803
15803
|
value: readout,
|
|
15804
15804
|
pct: savedCap != null && savedCap > 0 ? pct(spent, savedCap) : 0,
|
|
15805
15805
|
testId: "addon-spend"
|
|
15806
15806
|
}
|
|
15807
15807
|
),
|
|
15808
|
-
addons.cap_reached && savedCap != null && savedCap > 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", "data-testid": "addon-cap-reached", children:
|
|
15808
|
+
addons.cap_reached && savedCap != null && savedCap > 0 && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", "data-testid": "addon-cap-reached", children: chunkBAJNXRI5_cjs.CAP_REACHED_MESSAGE }),
|
|
15809
15809
|
addons.manual_spent_pence > 0 && /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-muted-foreground", "data-testid": "addon-manual-spend", children: [
|
|
15810
15810
|
"Added by hand this month: ",
|
|
15811
15811
|
gbp(addons.manual_spent_pence),
|
|
@@ -15826,7 +15826,7 @@ function UsageCapEditor({ project, addons }) {
|
|
|
15826
15826
|
step: 25,
|
|
15827
15827
|
className: "h-9 w-28",
|
|
15828
15828
|
value: noCap ? "" : value,
|
|
15829
|
-
placeholder: noCap ? "No limit" : String(
|
|
15829
|
+
placeholder: noCap ? "No limit" : String(chunkBAJNXRI5_cjs.DEFAULT_SPEND_CAP_PENCE / 100),
|
|
15830
15830
|
disabled: noCap,
|
|
15831
15831
|
onChange: (e) => setValue(e.target.value),
|
|
15832
15832
|
onKeyDown: (e) => e.key === "Enter" && save(),
|
|
@@ -15852,7 +15852,7 @@ function UsageCapEditor({ project, addons }) {
|
|
|
15852
15852
|
checked: noCap,
|
|
15853
15853
|
onCheckedChange: (checked) => {
|
|
15854
15854
|
setNoCap(checked);
|
|
15855
|
-
if (!checked && value === "") setValue(String(
|
|
15855
|
+
if (!checked && value === "") setValue(String(chunkBAJNXRI5_cjs.DEFAULT_SPEND_CAP_PENCE / 100));
|
|
15856
15856
|
},
|
|
15857
15857
|
"data-testid": "no-cap-switch"
|
|
15858
15858
|
}
|
|
@@ -15865,8 +15865,8 @@ function UsageCapEditor({ project, addons }) {
|
|
|
15865
15865
|
function UsageInfo({ addons, isAnnual }) {
|
|
15866
15866
|
const period = isAnnual ? "year" : "month";
|
|
15867
15867
|
const legacy = (addons.legacy_ai_blocks ?? 0) > 0 || (addons.legacy_storage_blocks ?? 0) > 0;
|
|
15868
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
15869
|
-
|
|
15868
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.MoreInfo, { title: "Usage and top-ups", testId: "usage-more-info", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
15869
|
+
chunk6OXR4R6J_cjs.MoreInfoList,
|
|
15870
15870
|
{
|
|
15871
15871
|
items: [
|
|
15872
15872
|
{
|
|
@@ -15881,7 +15881,7 @@ function UsageInfo({ addons, isAnnual }) {
|
|
|
15881
15881
|
term: "Automatic top-ups",
|
|
15882
15882
|
text: "One step is added when AI usage drops below your auto top-up level, or when an upload needs more storage."
|
|
15883
15883
|
},
|
|
15884
|
-
{ term: "Usage cap", text:
|
|
15884
|
+
{ term: "Usage cap", text: chunkBAJNXRI5_cjs.USAGE_CAP_HELP },
|
|
15885
15885
|
{
|
|
15886
15886
|
term: "Reducing",
|
|
15887
15887
|
text: "\u2212 removes one step from your next renewal. You keep this period's allowance. No refunds."
|
|
@@ -15892,7 +15892,7 @@ function UsageInfo({ addons, isAnnual }) {
|
|
|
15892
15892
|
text: "Top-ups bought on an earlier price keep their size and price until removed; they are removed last."
|
|
15893
15893
|
}
|
|
15894
15894
|
] : [],
|
|
15895
|
-
...isAnnual ? [{ term: "Annual", text: `${
|
|
15895
|
+
...isAnnual ? [{ term: "Annual", text: `${chunkBAJNXRI5_cjs.ANNUAL_PREMIUM_AI_NOTE}.` }] : [],
|
|
15896
15896
|
{
|
|
15897
15897
|
term: "Prices",
|
|
15898
15898
|
text: "Shown ex VAT. The confirm step shows the total with VAT before you pay."
|
|
@@ -15984,7 +15984,7 @@ function formatShortDate2(unix) {
|
|
|
15984
15984
|
if (!unix) return null;
|
|
15985
15985
|
return new Date(unix * 1e3).toLocaleDateString("en-GB", { day: "numeric", month: "short" });
|
|
15986
15986
|
}
|
|
15987
|
-
var gbp2 = (pence) =>
|
|
15987
|
+
var gbp2 = (pence) => chunkBAJNXRI5_cjs.formatMoney(pence, "gbp");
|
|
15988
15988
|
var gbNum = (n) => `${Math.round(n * 10) / 10}`;
|
|
15989
15989
|
var pct2 = (used, limit) => limit > 0 ? Math.min(100, used / limit * 100) : 0;
|
|
15990
15990
|
function Meter({
|
|
@@ -16002,15 +16002,15 @@ function Meter({
|
|
|
16002
16002
|
] });
|
|
16003
16003
|
}
|
|
16004
16004
|
function usePlanPrice(project) {
|
|
16005
|
-
const { data: products } = react.useProducts({ enabled:
|
|
16006
|
-
if (!
|
|
16005
|
+
const { data: products } = react.useProducts({ enabled: chunkBAJNXRI5_cjs.isProProject(project) });
|
|
16006
|
+
if (!chunkBAJNXRI5_cjs.isProProject(project)) return null;
|
|
16007
16007
|
const isAnnual = project.plan_interval === "year";
|
|
16008
16008
|
if (project.amount != null) {
|
|
16009
16009
|
return { incl: project.amount, ex: project.amount_ex_vat ?? null, isAnnual };
|
|
16010
16010
|
}
|
|
16011
|
-
if ((project.packs ??
|
|
16012
|
-
const prices =
|
|
16013
|
-
const pp =
|
|
16011
|
+
if ((project.packs ?? chunkBAJNXRI5_cjs.PRO_PACKS) > chunkBAJNXRI5_cjs.PRO_PACKS) return null;
|
|
16012
|
+
const prices = chunkBAJNXRI5_cjs.findProPrices(products);
|
|
16013
|
+
const pp = chunkBAJNXRI5_cjs.packPrice(isAnnual ? prices.annual : prices.monthly);
|
|
16014
16014
|
return pp ? { incl: pp.amount, ex: pp.amount_ex_vat, isAnnual } : null;
|
|
16015
16015
|
}
|
|
16016
16016
|
function paidLine(payment, addons) {
|
|
@@ -16023,11 +16023,11 @@ function ProjectPlanCard({
|
|
|
16023
16023
|
onChangePlan
|
|
16024
16024
|
}) {
|
|
16025
16025
|
const { quotas, addons } = project;
|
|
16026
|
-
const isPro =
|
|
16026
|
+
const isPro = chunkBAJNXRI5_cjs.isProProject(project);
|
|
16027
16027
|
const used = quotas?.ai_usage?.used ?? 0;
|
|
16028
16028
|
const limit = quotas?.ai_usage?.limit ?? 0;
|
|
16029
|
-
const resetDate = formatShortDate2(
|
|
16030
|
-
const periodEnd =
|
|
16029
|
+
const resetDate = formatShortDate2(chunkBAJNXRI5_cjs.aiUsageResetTimestamp(project));
|
|
16030
|
+
const periodEnd = chunkBAJNXRI5_cjs.formatPeriodEnd(addons?.period_end ?? project.current_period_end);
|
|
16031
16031
|
const when2 = periodEnd ?? "the end of the period";
|
|
16032
16032
|
const storageUsed = quotas?.storage_gb?.used ?? 0;
|
|
16033
16033
|
const storageLimit = quotas?.storage_gb?.limit ?? 0;
|
|
@@ -16043,7 +16043,7 @@ function ProjectPlanCard({
|
|
|
16043
16043
|
project.external_id,
|
|
16044
16044
|
hasScheduledChange && addons ? { packs: packsNext ?? addons.packs, interval: pending ?? currentInterval } : null
|
|
16045
16045
|
).data;
|
|
16046
|
-
const tier = isPro ?
|
|
16046
|
+
const tier = isPro ? chunkBAJNXRI5_cjs.proTierName(project) : project.subscription === "dev" ? "Dev" : "Free";
|
|
16047
16047
|
const pendingPayment = addons?.payment?.status === "pending" ? addons.payment : null;
|
|
16048
16048
|
const confirmUrl = pendingPayment?.confirm_url ?? addons?.confirm_url;
|
|
16049
16049
|
const paidPayment = addons?.payment?.status === "paid" ? addons.payment : null;
|
|
@@ -16077,7 +16077,7 @@ function ProjectPlanCard({
|
|
|
16077
16077
|
isPro && " ",
|
|
16078
16078
|
isPro && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 text-sm font-normal text-muted-foreground", children: currentInterval === "year" ? "Annual" : "Monthly" })
|
|
16079
16079
|
] }),
|
|
16080
|
-
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 ${
|
|
16080
|
+
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 ${chunkBAJNXRI5_cjs.totalWithTaxWord({
|
|
16081
16081
|
subtotal: nextBill.next_renewal_ex_vat_pence,
|
|
16082
16082
|
tax: nextBill.next_renewal_tax_pence,
|
|
16083
16083
|
total: nextBill.next_renewal_pence,
|
|
@@ -16086,7 +16086,7 @@ function ProjectPlanCard({
|
|
|
16086
16086
|
] }),
|
|
16087
16087
|
price && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-auto text-right", "data-testid": "project-plan-price", children: [
|
|
16088
16088
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-lg font-semibold tabular-nums text-foreground", children: [
|
|
16089
|
-
price.ex != null ?
|
|
16089
|
+
price.ex != null ? chunkBAJNXRI5_cjs.plusVat(price.ex) : gbp2(price.incl),
|
|
16090
16090
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-normal text-muted-foreground", children: price.isAnnual ? "/year" : "/month" })
|
|
16091
16091
|
] }),
|
|
16092
16092
|
price.ex != null && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-xs text-muted-foreground", children: [
|
|
@@ -16124,7 +16124,7 @@ function ProjectPlanCard({
|
|
|
16124
16124
|
undoTestId: "undo-plan-change-button",
|
|
16125
16125
|
children: [
|
|
16126
16126
|
"Changes to ",
|
|
16127
|
-
|
|
16127
|
+
chunkBAJNXRI5_cjs.planNameForPacks(packsNext),
|
|
16128
16128
|
" on ",
|
|
16129
16129
|
when2,
|
|
16130
16130
|
"."
|
|
@@ -16169,8 +16169,8 @@ function ProjectPlanCard({
|
|
|
16169
16169
|
}
|
|
16170
16170
|
)
|
|
16171
16171
|
] }),
|
|
16172
|
-
addons?.billing_error && /* @__PURE__ */ jsxRuntime.jsx(
|
|
16173
|
-
confirmUrl ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
16172
|
+
addons?.billing_error && /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PlanNotice, { tone: "error", testId: "plan-billing-error", children: addons.billing_error }),
|
|
16173
|
+
confirmUrl ? /* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.PlanNotice, { testId: "plan-payment-state", children: [
|
|
16174
16174
|
"Waiting for your bank",
|
|
16175
16175
|
pendingPayment?.amount_pence ? ` \xB7 ${gbp2(pendingPayment.amount_pence)}` : "",
|
|
16176
16176
|
" \xB7",
|
|
@@ -16188,7 +16188,7 @@ function ProjectPlanCard({
|
|
|
16188
16188
|
]
|
|
16189
16189
|
}
|
|
16190
16190
|
)
|
|
16191
|
-
] }) : paidPayment && addons && /* @__PURE__ */ jsxRuntime.jsx(
|
|
16191
|
+
] }) : paidPayment && addons && /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PlanNotice, { testId: "plan-payment-state", children: paidLine(paidPayment, addons) }),
|
|
16192
16192
|
isPro && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
16193
16193
|
"button",
|
|
16194
16194
|
{
|
|
@@ -16215,7 +16215,7 @@ function ProjectBilling({
|
|
|
16215
16215
|
const { addons } = project;
|
|
16216
16216
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", "data-testid": "project-billing", children: [
|
|
16217
16217
|
/* @__PURE__ */ jsxRuntime.jsx(ProjectPlanCard, { project, onChangePlan }),
|
|
16218
|
-
addons &&
|
|
16218
|
+
addons && chunkBAJNXRI5_cjs.isProProject(project) && /* @__PURE__ */ jsxRuntime.jsx(ProjectUsageCard, { project, addons })
|
|
16219
16219
|
] });
|
|
16220
16220
|
}
|
|
16221
16221
|
var BREAKDOWN_LABELS = {
|
|
@@ -16346,13 +16346,13 @@ function ProjectUsageContent({
|
|
|
16346
16346
|
};
|
|
16347
16347
|
const quotaPct = effectiveUsage && aiUsageLimit ? Math.round(effectiveUsage.total_spend / aiUsageLimit * 100) : 0;
|
|
16348
16348
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16349
|
-
|
|
16349
|
+
chunk6OXR4R6J_cjs.UsagePanel,
|
|
16350
16350
|
{
|
|
16351
16351
|
state,
|
|
16352
16352
|
dateRange,
|
|
16353
16353
|
emptyMessage: `No usage ${period === "current" ? "yet this month" : "last month"}.`,
|
|
16354
16354
|
period: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16355
|
-
|
|
16355
|
+
chunk6OXR4R6J_cjs.UsageToggle,
|
|
16356
16356
|
{
|
|
16357
16357
|
ariaLabel: "Period",
|
|
16358
16358
|
value: period,
|
|
@@ -16365,7 +16365,7 @@ function ProjectUsageContent({
|
|
|
16365
16365
|
),
|
|
16366
16366
|
actions: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
16367
16367
|
effectiveUsage?.invoice_pdf && /* @__PURE__ */ jsxRuntime.jsx(
|
|
16368
|
-
|
|
16368
|
+
chunk6OXR4R6J_cjs.UsageActionButton,
|
|
16369
16369
|
{
|
|
16370
16370
|
label: "Download Stripe invoice PDF",
|
|
16371
16371
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Download, { className: "size-3.5" }),
|
|
@@ -16373,7 +16373,7 @@ function ProjectUsageContent({
|
|
|
16373
16373
|
}
|
|
16374
16374
|
),
|
|
16375
16375
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16376
|
-
|
|
16376
|
+
chunk6OXR4R6J_cjs.UsageActionButton,
|
|
16377
16377
|
{
|
|
16378
16378
|
label: "Print usage summary",
|
|
16379
16379
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Printer, { className: "size-3.5" }),
|
|
@@ -16383,7 +16383,7 @@ function ProjectUsageContent({
|
|
|
16383
16383
|
] }),
|
|
16384
16384
|
children: effectiveUsage && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
16385
16385
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16386
|
-
|
|
16386
|
+
chunk6OXR4R6J_cjs.UsageSummary,
|
|
16387
16387
|
{
|
|
16388
16388
|
stats: [
|
|
16389
16389
|
{
|
|
@@ -16391,7 +16391,7 @@ function ProjectUsageContent({
|
|
|
16391
16391
|
value: /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: react.formatGbp(effectiveUsage.total_spend) }),
|
|
16392
16392
|
label: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
16393
16393
|
"AI usage",
|
|
16394
|
-
quotaPct > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
16394
|
+
quotaPct > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.UsageQuotaHint, { children: [
|
|
16395
16395
|
"(",
|
|
16396
16396
|
quotaPct,
|
|
16397
16397
|
"% of quota)"
|
|
@@ -16412,7 +16412,7 @@ function ProjectUsageContent({
|
|
|
16412
16412
|
}
|
|
16413
16413
|
),
|
|
16414
16414
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16415
|
-
|
|
16415
|
+
chunk6OXR4R6J_cjs.UsageToggle,
|
|
16416
16416
|
{
|
|
16417
16417
|
ariaLabel: "Breakdown by",
|
|
16418
16418
|
size: "fill",
|
|
@@ -16425,12 +16425,12 @@ function ProjectUsageContent({
|
|
|
16425
16425
|
}
|
|
16426
16426
|
),
|
|
16427
16427
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16428
|
-
|
|
16428
|
+
chunk6OXR4R6J_cjs.UsageSection,
|
|
16429
16429
|
{
|
|
16430
|
-
footer: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16430
|
+
footer: /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.UsageLegend, { series }),
|
|
16431
16431
|
title: `Daily AI usage${breakdown === "model" ? ` by ${BREAKDOWN_LABELS[breakdown]}` : ""}`,
|
|
16432
16432
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16433
|
-
|
|
16433
|
+
chunk6OXR4R6J_cjs.UsageLineChart,
|
|
16434
16434
|
{
|
|
16435
16435
|
dates,
|
|
16436
16436
|
series,
|
|
@@ -16441,12 +16441,12 @@ function ProjectUsageContent({
|
|
|
16441
16441
|
}
|
|
16442
16442
|
),
|
|
16443
16443
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16444
|
-
|
|
16444
|
+
chunk6OXR4R6J_cjs.UsageSection,
|
|
16445
16445
|
{
|
|
16446
16446
|
title: "Breakdown",
|
|
16447
16447
|
gap: "md",
|
|
16448
16448
|
action: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16449
|
-
|
|
16449
|
+
chunk6OXR4R6J_cjs.UsageToggle,
|
|
16450
16450
|
{
|
|
16451
16451
|
ariaLabel: "Breakdown metric",
|
|
16452
16452
|
value: metric,
|
|
@@ -16458,7 +16458,7 @@ function ProjectUsageContent({
|
|
|
16458
16458
|
}
|
|
16459
16459
|
),
|
|
16460
16460
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16461
|
-
|
|
16461
|
+
chunk6OXR4R6J_cjs.UsageProportionBar,
|
|
16462
16462
|
{
|
|
16463
16463
|
metric,
|
|
16464
16464
|
items: breakdownItems.map((item) => ({
|
|
@@ -16476,13 +16476,13 @@ function ProjectUsageContent({
|
|
|
16476
16476
|
);
|
|
16477
16477
|
}
|
|
16478
16478
|
function ProjectDetail({ projectExtId, storage }) {
|
|
16479
|
-
const { stripeEnabled } =
|
|
16479
|
+
const { stripeEnabled } = chunkBAJNXRI5_cjs.useBillingSupport();
|
|
16480
16480
|
const [planOpen, setPlanOpen] = react$1.useState(false);
|
|
16481
16481
|
const [renameOpen, setRenameOpen] = react$1.useState(false);
|
|
16482
16482
|
const [renameValue, setRenameValue] = react$1.useState("");
|
|
16483
16483
|
const updateProject = react.useUpdateProjectFields();
|
|
16484
16484
|
const { data: projects, isLoading } = react.useProjects();
|
|
16485
|
-
const currentUserExtId =
|
|
16485
|
+
const currentUserExtId = chunkBAJNXRI5_cjs.useSelfExtId();
|
|
16486
16486
|
const project = projects?.find((p) => p.external_id === projectExtId);
|
|
16487
16487
|
const handleSaveRename = react$1.useCallback(() => {
|
|
16488
16488
|
const trimmed = renameValue.trim();
|
|
@@ -16520,7 +16520,7 @@ function ProjectDetail({ projectExtId, storage }) {
|
|
|
16520
16520
|
}
|
|
16521
16521
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-6 space-y-6 max-w-4xl", "data-testid": `project-detail-${project.external_id}`, children: [
|
|
16522
16522
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16523
|
-
|
|
16523
|
+
chunk6OXR4R6J_cjs.ProjectDetailHeader,
|
|
16524
16524
|
{
|
|
16525
16525
|
icon: /* @__PURE__ */ jsxRuntime.jsx(ui.EntityIcon, { entityType: "PROJECT" }),
|
|
16526
16526
|
name: project.name,
|
|
@@ -16528,11 +16528,11 @@ function ProjectDetail({ projectExtId, storage }) {
|
|
|
16528
16528
|
setRenameValue(project.name);
|
|
16529
16529
|
setRenameOpen(true);
|
|
16530
16530
|
},
|
|
16531
|
-
badge: stripeEnabled ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
16531
|
+
badge: stripeEnabled ? /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PlanBadge, { ...chunkBAJNXRI5_cjs.planBadgeView(project), size: "md" }) : void 0
|
|
16532
16532
|
}
|
|
16533
16533
|
),
|
|
16534
16534
|
hasBilling && /* @__PURE__ */ jsxRuntime.jsx(ProjectBilling, { project, onChangePlan: () => setPlanOpen(true) }),
|
|
16535
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
16535
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.ProjectDetailSection, { title: hasBilling ? "Collaborator limits" : "Plan limits", children: [
|
|
16536
16536
|
!hasBilling && /* @__PURE__ */ jsxRuntime.jsx(SubscriptionStatus, { project }),
|
|
16537
16537
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
16538
16538
|
"div",
|
|
@@ -16548,7 +16548,7 @@ function ProjectDetail({ projectExtId, storage }) {
|
|
|
16548
16548
|
}
|
|
16549
16549
|
)
|
|
16550
16550
|
] }),
|
|
16551
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16551
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.ProjectDetailSection, { title: "Usage", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16552
16552
|
ProjectUsageContent,
|
|
16553
16553
|
{
|
|
16554
16554
|
projectExtId: project.external_id,
|
|
@@ -16558,7 +16558,7 @@ function ProjectDetail({ projectExtId, storage }) {
|
|
|
16558
16558
|
) }),
|
|
16559
16559
|
storage,
|
|
16560
16560
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16561
|
-
|
|
16561
|
+
chunk6OXR4R6J_cjs.RenameDialog,
|
|
16562
16562
|
{
|
|
16563
16563
|
open: renameOpen,
|
|
16564
16564
|
onClose: () => setRenameOpen(false),
|
|
@@ -16575,7 +16575,7 @@ function ProjectDetail({ projectExtId, storage }) {
|
|
|
16575
16575
|
function useAutoRefreshPendingProjects() {
|
|
16576
16576
|
const { data: projects } = react.useProjects();
|
|
16577
16577
|
const refreshProject = react.useRefreshProject();
|
|
16578
|
-
const currentUserExtId =
|
|
16578
|
+
const currentUserExtId = chunkBAJNXRI5_cjs.useSelfExtId();
|
|
16579
16579
|
const refreshedRef = react$1.useRef(/* @__PURE__ */ new Set());
|
|
16580
16580
|
react$1.useEffect(() => {
|
|
16581
16581
|
if (!projects || !currentUserExtId) return;
|
|
@@ -16606,7 +16606,7 @@ function ConnectedQuotaDialog({ info, onClose: close }) {
|
|
|
16606
16606
|
if (quotaProjectId) void refetchProjects();
|
|
16607
16607
|
}, [quotaProjectId, refetchProjects]);
|
|
16608
16608
|
const project = info?.projectExtId ? projects?.find((p) => p.external_id === info.projectExtId) : void 0;
|
|
16609
|
-
const addons = project &&
|
|
16609
|
+
const addons = project && chunkBAJNXRI5_cjs.isProProject(project) ? project.addons : null;
|
|
16610
16610
|
const handleUpgrade = () => {
|
|
16611
16611
|
if (info?.projectExtId) {
|
|
16612
16612
|
requestProjectBillingFocus({ projectExtId: info.projectExtId, openUpgrade: true });
|
|
@@ -16642,8 +16642,8 @@ function ConnectedQuotaDialog({ info, onClose: close }) {
|
|
|
16642
16642
|
/* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {})
|
|
16643
16643
|
);
|
|
16644
16644
|
} else if (addons) {
|
|
16645
|
-
const price = `${
|
|
16646
|
-
const capZero =
|
|
16645
|
+
const price = `${chunkBAJNXRI5_cjs.formatMoney(addons.ai_block_price_ex_vat_pence, "gbp")} + VAT`;
|
|
16646
|
+
const capZero = chunkBAJNXRI5_cjs.isAddonBudgetZero(addons);
|
|
16647
16647
|
const addAiUsage = /* @__PURE__ */ jsxRuntime.jsxs(ui.Button, { onClick: handleAddAiUsage, "data-testid": "quota-add-ai-usage-button", children: [
|
|
16648
16648
|
"Add ",
|
|
16649
16649
|
react.formatGbp(addons.block_ai_gbp),
|
|
@@ -16651,7 +16651,7 @@ function ConnectedQuotaDialog({ info, onClose: close }) {
|
|
|
16651
16651
|
price
|
|
16652
16652
|
] });
|
|
16653
16653
|
if (capZero || addons.cap_reached) {
|
|
16654
|
-
message = capZero ?
|
|
16654
|
+
message = capZero ? chunkBAJNXRI5_cjs.ZERO_BUDGET_MESSAGE : chunkBAJNXRI5_cjs.CAP_REACHED_MESSAGE;
|
|
16655
16655
|
actions = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
16656
16656
|
addAiUsage,
|
|
16657
16657
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Button, { variant: "outline", onClick: handleRaiseCap, "data-testid": "quota-raise-cap-button", children: capZero ? "Set cap" : "Raise cap" })
|
|
@@ -16664,7 +16664,7 @@ function ConnectedQuotaDialog({ info, onClose: close }) {
|
|
|
16664
16664
|
const addAiUsageProject = addAiUsageFor ? projects?.find((p) => p.external_id === addAiUsageFor) : void 0;
|
|
16665
16665
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
16666
16666
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16667
|
-
|
|
16667
|
+
chunk6OXR4R6J_cjs.QuotaExceededDialogView,
|
|
16668
16668
|
{
|
|
16669
16669
|
open,
|
|
16670
16670
|
onClose: close,
|
|
@@ -16838,7 +16838,7 @@ function ConnectedWelcomeDialog({
|
|
|
16838
16838
|
}) {
|
|
16839
16839
|
const currentUser = react.useArbiSession().user;
|
|
16840
16840
|
const { data: projects } = react.useProjects();
|
|
16841
|
-
const balance =
|
|
16841
|
+
const balance = chunkBAJNXRI5_cjs.useRewardBalance();
|
|
16842
16842
|
const [showPlans, setShowPlans] = react$1.useState(false);
|
|
16843
16843
|
const [showInvite, setShowInvite] = react$1.useState(false);
|
|
16844
16844
|
const [selectedProjectId, setSelectedProjectId] = react$1.useState(null);
|
|
@@ -16859,21 +16859,21 @@ function ConnectedWelcomeDialog({
|
|
|
16859
16859
|
return /* @__PURE__ */ jsxRuntime.jsx(ChangePlanDialog, { project: selectedProject, open, onOpenChange: handleOpenChange });
|
|
16860
16860
|
}
|
|
16861
16861
|
if (showInvite) {
|
|
16862
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16862
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.InviteContactsDialog, { open, onClose: () => handleOpenChange(false), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16863
16863
|
ConnectedAddContacts,
|
|
16864
16864
|
{
|
|
16865
16865
|
onClose: () => handleOpenChange(false),
|
|
16866
|
-
rewardAmount:
|
|
16866
|
+
rewardAmount: chunkBAJNXRI5_cjs.formatMoney(REFERRAL_OFFER.amount, REFERRAL_OFFER.currency)
|
|
16867
16867
|
}
|
|
16868
16868
|
) });
|
|
16869
16869
|
}
|
|
16870
16870
|
const firstName = currentUser?.given_name;
|
|
16871
16871
|
const hasBalance = balance !== null;
|
|
16872
|
-
const quotaItems =
|
|
16873
|
-
const resetTs =
|
|
16874
|
-
const aiUsageHint = resetTs ? `resets ${
|
|
16872
|
+
const quotaItems = chunkBAJNXRI5_cjs.getQuotaItems(selectedProject.quotas);
|
|
16873
|
+
const resetTs = chunkBAJNXRI5_cjs.aiUsageResetTimestamp(selectedProject);
|
|
16874
|
+
const aiUsageHint = resetTs ? `resets ${chunkBAJNXRI5_cjs.formatResetDate(resetTs)}` : void 0;
|
|
16875
16875
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16876
|
-
|
|
16876
|
+
chunk6OXR4R6J_cjs.WelcomeDialog,
|
|
16877
16877
|
{
|
|
16878
16878
|
open,
|
|
16879
16879
|
onClose: () => handleOpenChange(false),
|
|
@@ -16888,7 +16888,7 @@ function ConnectedWelcomeDialog({
|
|
|
16888
16888
|
onChange: setSelectedProjectId
|
|
16889
16889
|
}
|
|
16890
16890
|
),
|
|
16891
|
-
planBadge: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16891
|
+
planBadge: /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PlanBadge, { ...chunkBAJNXRI5_cjs.planBadgeView(selectedProject), size: "md" }),
|
|
16892
16892
|
quotas: quotaItems.map((q) => ({
|
|
16893
16893
|
key: q.key,
|
|
16894
16894
|
icon: q.icon,
|
|
@@ -16898,9 +16898,9 @@ function ConnectedWelcomeDialog({
|
|
|
16898
16898
|
hint: q.key === "ai-usage" ? aiUsageHint : void 0
|
|
16899
16899
|
})),
|
|
16900
16900
|
onSeePlans: () => setShowPlans(true),
|
|
16901
|
-
referralOfferLabel: `${
|
|
16901
|
+
referralOfferLabel: `${chunkBAJNXRI5_cjs.formatMoney(REFERRAL_OFFER.amount, REFERRAL_OFFER.currency)} off your plan`,
|
|
16902
16902
|
onInvite: () => setShowInvite(true),
|
|
16903
|
-
rewardBalanceLabel: hasBalance ?
|
|
16903
|
+
rewardBalanceLabel: hasBalance ? chunkBAJNXRI5_cjs.formatMoney(balance.amount, balance.currency) : void 0
|
|
16904
16904
|
}
|
|
16905
16905
|
);
|
|
16906
16906
|
}
|
|
@@ -16963,7 +16963,7 @@ function WorkspaceCardsView({
|
|
|
16963
16963
|
createDisabledReason,
|
|
16964
16964
|
workspaceState
|
|
16965
16965
|
}) {
|
|
16966
|
-
const { stripeEnabled } =
|
|
16966
|
+
const { stripeEnabled } = chunkBAJNXRI5_cjs.useBillingSupport();
|
|
16967
16967
|
const { hrefFor: hrefFor2 } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
16968
16968
|
const workspaceLabel = ui.getEntityLabel("WORKSPACE");
|
|
16969
16969
|
const projectLabel = ui.getEntityLabel("PROJECT").toLowerCase();
|
|
@@ -16983,7 +16983,7 @@ function WorkspaceCardsView({
|
|
|
16983
16983
|
}
|
|
16984
16984
|
return /* @__PURE__ */ jsxRuntime.jsx(chunkC5CWKZ5D_cjs.WorkspaceList, { testId: "workspace-cards-list", children: groups.map((group) => {
|
|
16985
16985
|
const project = projects.find((p) => p.external_id === group.projectExtId);
|
|
16986
|
-
const { breakdown, readout } =
|
|
16986
|
+
const { breakdown, readout } = chunkBAJNXRI5_cjs.projectGroupBilling(project, {
|
|
16987
16987
|
isOwned: group.isOwned,
|
|
16988
16988
|
stripeEnabled
|
|
16989
16989
|
});
|
|
@@ -17146,7 +17146,7 @@ function useConnectedWorkspaceList({
|
|
|
17146
17146
|
[selfId, pinned]
|
|
17147
17147
|
);
|
|
17148
17148
|
const filtered = react$1.useMemo(
|
|
17149
|
-
() =>
|
|
17149
|
+
() => chunk6OXR4R6J_cjs.applyTriStateFilters(workspaces, filterMap, attributesOf),
|
|
17150
17150
|
[workspaces, filterMap, attributesOf]
|
|
17151
17151
|
);
|
|
17152
17152
|
const groups = react$1.useMemo(
|
|
@@ -17212,7 +17212,7 @@ function useConnectedWorkspaceList({
|
|
|
17212
17212
|
};
|
|
17213
17213
|
}
|
|
17214
17214
|
var WorkspaceTableView = react$1.lazy(
|
|
17215
|
-
() => import('../WorkspaceTableView-
|
|
17215
|
+
() => import('../WorkspaceTableView-5DWNJN6J.cjs').then((m) => ({ default: m.WorkspaceTableView }))
|
|
17216
17216
|
);
|
|
17217
17217
|
var WORKSPACES_TAB_ID = "workspaces";
|
|
17218
17218
|
var renderMember = (user, size) => /* @__PURE__ */ jsxRuntime.jsx(chunk5HEMXXHR_cjs.ConnectedUserEntity, { user, size, variant: "icon" });
|
|
@@ -17272,7 +17272,7 @@ function ConnectedWorkspaceList({
|
|
|
17272
17272
|
}
|
|
17273
17273
|
);
|
|
17274
17274
|
}
|
|
17275
|
-
if (list.isLoading) return /* @__PURE__ */ jsxRuntime.jsx(
|
|
17275
|
+
if (list.isLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunkZA3ZELSH_cjs.LoadingIndicator, { message: "Loading workspaces..." });
|
|
17276
17276
|
if (list.error) {
|
|
17277
17277
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
17278
17278
|
chunkECZXW346_cjs.HomeLoadError,
|
|
@@ -17345,7 +17345,7 @@ function ConnectedWorkspaceList({
|
|
|
17345
17345
|
workspaceState
|
|
17346
17346
|
}
|
|
17347
17347
|
) })
|
|
17348
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(react$1.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17348
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(react$1.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkZA3ZELSH_cjs.LoadingIndicator, { message: "Loading grid..." }), children: /* @__PURE__ */ jsxRuntime.jsx(chunkECZXW346_cjs.HomeCenteredColumn, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17349
17349
|
WorkspaceTableView,
|
|
17350
17350
|
{
|
|
17351
17351
|
list,
|
|
@@ -17390,7 +17390,7 @@ function ConnectedProjectsPanel({
|
|
|
17390
17390
|
const { data: projects } = react.useProjects();
|
|
17391
17391
|
const canCreateProjects = react.useCanCreateProjects();
|
|
17392
17392
|
const { userId } = chunkWV65MJ43_cjs.useConnectedWorkspace();
|
|
17393
|
-
const { stripeEnabled } =
|
|
17393
|
+
const { stripeEnabled } = chunkBAJNXRI5_cjs.useBillingSupport();
|
|
17394
17394
|
const billingPortal = useOpenBillingPortal();
|
|
17395
17395
|
const [newProjectOpen, setNewProjectOpen] = react$1.useState(false);
|
|
17396
17396
|
useAutoRefreshPendingProjects();
|
|
@@ -17417,15 +17417,15 @@ function ConnectedProjectsPanel({
|
|
|
17417
17417
|
[ownedCount, tabs, projects]
|
|
17418
17418
|
);
|
|
17419
17419
|
const paidProject = projects?.find(isPaid);
|
|
17420
|
-
const panel = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17421
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17420
|
+
const panel = /* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.PanelFrame, { className, testId: "projects-panel", children: [
|
|
17421
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.DraggableHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17422
17422
|
chunkSJSGSHIT_cjs.TabHeader,
|
|
17423
17423
|
{
|
|
17424
17424
|
tabs: headerTabs,
|
|
17425
17425
|
activeTabId: activeProjectId ?? PROJECTS_BASE_TAB_ID,
|
|
17426
17426
|
onTabChange: (id) => tabs.onSelect(id === PROJECTS_BASE_TAB_ID ? null : id),
|
|
17427
17427
|
afterTabs: (isCompact) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
17428
|
-
|
|
17428
|
+
chunk6OXR4R6J_cjs.PanelAddButton,
|
|
17429
17429
|
{
|
|
17430
17430
|
label: `New ${ui.entityNoun("PROJECT")}`,
|
|
17431
17431
|
onClick: () => setNewProjectOpen(true),
|
|
@@ -17440,15 +17440,15 @@ function ConnectedProjectsPanel({
|
|
|
17440
17440
|
compactBreakpoint: 360
|
|
17441
17441
|
}
|
|
17442
17442
|
) }),
|
|
17443
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17443
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PanelFrameBody, { children: activeProjectId ? /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PanelScroll, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17444
17444
|
ProjectDetail,
|
|
17445
17445
|
{
|
|
17446
17446
|
projectExtId: activeProjectId,
|
|
17447
17447
|
storage: /* @__PURE__ */ jsxRuntime.jsx(ConnectedProjectStorage, { projectExtId: activeProjectId })
|
|
17448
17448
|
}
|
|
17449
|
-
) }) : /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17449
|
+
) }) : /* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.PanelScroll, { variant: "padded", children: [
|
|
17450
17450
|
/* @__PURE__ */ jsxRuntime.jsx(ProjectsTable, {}),
|
|
17451
|
-
stripeEnabled && paidProject && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17451
|
+
stripeEnabled && paidProject && /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PanelActionsRow, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17452
17452
|
ui.Button,
|
|
17453
17453
|
{
|
|
17454
17454
|
onClick: () => billingPortal.open(paidProject.external_id),
|
|
@@ -17535,7 +17535,7 @@ function ConnectedProjectsListPage({
|
|
|
17535
17535
|
};
|
|
17536
17536
|
const { openProject } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
17537
17537
|
const [search, setSearch] = react$1.useState("");
|
|
17538
|
-
const { projects, isLoading } =
|
|
17538
|
+
const { projects, isLoading } = chunkKVKKVSBT_cjs.useProjectSummaries();
|
|
17539
17539
|
const rows = react$1.useMemo(() => {
|
|
17540
17540
|
const q = search.trim().toLowerCase();
|
|
17541
17541
|
if (!q) return projects;
|
|
@@ -17606,7 +17606,7 @@ function ConnectedProjectsListPage({
|
|
|
17606
17606
|
}
|
|
17607
17607
|
),
|
|
17608
17608
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17609
|
-
|
|
17609
|
+
chunkZA3ZELSH_cjs.Toolbar,
|
|
17610
17610
|
{
|
|
17611
17611
|
search,
|
|
17612
17612
|
onSearch: setSearch,
|
|
@@ -17668,7 +17668,7 @@ function ProjectDetailsForm({
|
|
|
17668
17668
|
const labels = { ...DEFAULT_PROJECT_DETAILS_LABELS, ...given };
|
|
17669
17669
|
const { notify: notify17 } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
17670
17670
|
const update = react.useUpdateProjectFields();
|
|
17671
|
-
const workspace =
|
|
17671
|
+
const workspace = chunkKVKKVSBT_cjs.primaryProjectWorkspace(project);
|
|
17672
17672
|
const { data: members = [] } = react.useWorkspaceUsers(workspace?.id);
|
|
17673
17673
|
const people = members.filter((m) => !m.user.external_id.startsWith("agt-"));
|
|
17674
17674
|
const currency = project.budget?.currency ?? "GBP";
|
|
@@ -17793,7 +17793,7 @@ var COMPACT_BELOW = 132;
|
|
|
17793
17793
|
var NO_DOCUMENTS = [];
|
|
17794
17794
|
function useFilesWorkspace() {
|
|
17795
17795
|
const { workspaceId, userId, live } = chunkWV65MJ43_cjs.useConnectedWorkspace();
|
|
17796
|
-
const { members, role } =
|
|
17796
|
+
const { members, role } = chunkZJ3NII4U_cjs.useConnectedWorkspaceRole();
|
|
17797
17797
|
const { data: workspaces } = react.useWorkspaces({ enabled: live });
|
|
17798
17798
|
const workspaceName = workspaces?.find((w) => w.external_id === workspaceId)?.name;
|
|
17799
17799
|
return {
|
|
@@ -18553,7 +18553,7 @@ function ProjectChronology({
|
|
|
18553
18553
|
})),
|
|
18554
18554
|
[facts]
|
|
18555
18555
|
);
|
|
18556
|
-
return /* @__PURE__ */ jsxRuntime.jsx(ui.Card, { className: "h-[min(70dvh,640px)] overflow-hidden", "data-testid": testId, children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "p-4 text-sm text-muted-foreground", children: loading }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
18556
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ui.Card, { className: "h-[min(70dvh,640px)] overflow-hidden", "data-testid": testId, children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "p-4 text-sm text-muted-foreground", children: loading }) : /* @__PURE__ */ jsxRuntime.jsx(chunkHDPT7D6F_cjs.FactsGanttPane, { items, testId: `${testId}-gantt`, labels: { ganttEmpty: empty } }) });
|
|
18557
18557
|
}
|
|
18558
18558
|
function ProjectThreads({
|
|
18559
18559
|
projectId,
|
|
@@ -18727,11 +18727,11 @@ function ConnectedProjectPage({
|
|
|
18727
18727
|
figures: { ...DEFAULT_PROJECT_PAGE_LABELS.figures, ...given?.figures },
|
|
18728
18728
|
threads: { ...DEFAULT_PROJECT_PAGE_LABELS.threads, ...given?.threads }
|
|
18729
18729
|
};
|
|
18730
|
-
const { project, usage, isLoading } =
|
|
18730
|
+
const { project, usage, isLoading } = chunkKVKKVSBT_cjs.useProjectSummary(projectId);
|
|
18731
18731
|
const { workspaceId } = chunkWV65MJ43_cjs.useConnectedWorkspace();
|
|
18732
18732
|
const { notify: notify17 } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
18733
|
-
const selectWorkspace =
|
|
18734
|
-
const workspace = project ?
|
|
18733
|
+
const selectWorkspace = chunkMB2OXZEA_cjs.useSelectWorkspace();
|
|
18734
|
+
const workspace = project ? chunkKVKKVSBT_cjs.primaryProjectWorkspace(project) : void 0;
|
|
18735
18735
|
const open = !!workspace && workspace.id === workspaceId;
|
|
18736
18736
|
react$1.useEffect(() => {
|
|
18737
18737
|
if (!workspace || workspace.id === workspaceId) return;
|
|
@@ -21115,7 +21115,7 @@ function ConnectedMessengerThread({
|
|
|
21115
21115
|
const activeIsSelf = !!activePeer && activePeer.external_id === meId;
|
|
21116
21116
|
const groupTitle = active?.title ?? null;
|
|
21117
21117
|
const presence = activePeer ? host.presenceOf?.(activePeer.external_id) : void 0;
|
|
21118
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
21118
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.PanelFrame, { testId, className, children: [
|
|
21119
21119
|
children,
|
|
21120
21120
|
groupChat ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
21121
21121
|
chunkMOIZ2R5X_cjs.DmThreadHeader,
|
|
@@ -21165,7 +21165,7 @@ function ConnectedMessengerThread({
|
|
|
21165
21165
|
groupChat.external_id
|
|
21166
21166
|
) : null,
|
|
21167
21167
|
picker.element,
|
|
21168
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
21168
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_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." }) })
|
|
21169
21169
|
] });
|
|
21170
21170
|
}
|
|
21171
21171
|
function ConnectedMessenger({
|
|
@@ -21187,7 +21187,7 @@ function ConnectedMessenger({
|
|
|
21187
21187
|
testId: "dm-messenger"
|
|
21188
21188
|
}
|
|
21189
21189
|
);
|
|
21190
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21190
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PanelFrame, { testId: "dm-messenger", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
21191
21191
|
ConnectedMessengerList,
|
|
21192
21192
|
{
|
|
21193
21193
|
activeId: null,
|
|
@@ -21403,7 +21403,7 @@ function ConnectedContactsPanel({
|
|
|
21403
21403
|
];
|
|
21404
21404
|
}, [contactCount, hasActiveFilters, tabActions, dmHeaderTabs]);
|
|
21405
21405
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ui.cn("flex flex-col h-full", className), children: [
|
|
21406
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
21406
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.DraggableHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
21407
21407
|
chunkSJSGSHIT_cjs.TabHeader,
|
|
21408
21408
|
{
|
|
21409
21409
|
tabs,
|
|
@@ -21438,10 +21438,10 @@ function ConnectedContactsPanel({
|
|
|
21438
21438
|
function ConnectedConfigForm({ availableModels, ...rest }) {
|
|
21439
21439
|
const hasModels = !!availableModels && availableModels.length > 0;
|
|
21440
21440
|
const renderModelSelect = react$1.useCallback(
|
|
21441
|
-
({ value, onChange }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
21441
|
+
({ value, onChange }) => /* @__PURE__ */ jsxRuntime.jsx(chunkO2ATVRRO_cjs.ConnectedModelSelector, { value, onValueChange: onChange, className: "w-full" }),
|
|
21442
21442
|
[]
|
|
21443
21443
|
);
|
|
21444
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21444
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConfigForm, { ...rest, renderModelSelect: hasModels ? renderModelSelect : void 0 });
|
|
21445
21445
|
}
|
|
21446
21446
|
function ConnectedAgentConfigForm({ agentExtId, agentName, onSaved }) {
|
|
21447
21447
|
const { notify: notify17 } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
@@ -21558,7 +21558,7 @@ function ConnectedAuthorizeAgent({ onClose, editAgent }) {
|
|
|
21558
21558
|
}, [name, selectedWorkspaces, role, createAgent, addWorkspaceUsers, arbi, notify17]);
|
|
21559
21559
|
if (editAgent) {
|
|
21560
21560
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21561
|
-
|
|
21561
|
+
chunkFAKRTCAL_cjs.AgentEditView,
|
|
21562
21562
|
{
|
|
21563
21563
|
agentName: editAgent.name,
|
|
21564
21564
|
config: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -21574,7 +21574,7 @@ function ConnectedAuthorizeAgent({ onClose, editAgent }) {
|
|
|
21574
21574
|
}
|
|
21575
21575
|
if (view === "main") {
|
|
21576
21576
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21577
|
-
|
|
21577
|
+
chunkFAKRTCAL_cjs.AgentMainView,
|
|
21578
21578
|
{
|
|
21579
21579
|
onConnectExternal: () => setView("connect"),
|
|
21580
21580
|
config: mainAgent ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -21590,11 +21590,11 @@ function ConnectedAuthorizeAgent({ onClose, editAgent }) {
|
|
|
21590
21590
|
}
|
|
21591
21591
|
if (result) {
|
|
21592
21592
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21593
|
-
|
|
21593
|
+
chunkFAKRTCAL_cjs.AgentCreatedView,
|
|
21594
21594
|
{
|
|
21595
21595
|
email: result.email,
|
|
21596
21596
|
signingKey: result.signingKey,
|
|
21597
|
-
instructions: /* @__PURE__ */ jsxRuntime.jsx(
|
|
21597
|
+
instructions: /* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.AgentConnectInstructions, { email: result.email, signingKey: result.signingKey }),
|
|
21598
21598
|
config: /* @__PURE__ */ jsxRuntime.jsx(ConnectedAgentConfigForm, { agentExtId: result.extId, agentName: result.name }),
|
|
21599
21599
|
isConfigOpen: configOpen,
|
|
21600
21600
|
onToggleConfig: () => setConfigOpen((v) => !v),
|
|
@@ -21603,7 +21603,7 @@ function ConnectedAuthorizeAgent({ onClose, editAgent }) {
|
|
|
21603
21603
|
);
|
|
21604
21604
|
}
|
|
21605
21605
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21606
|
-
|
|
21606
|
+
chunkFAKRTCAL_cjs.AgentCreateView,
|
|
21607
21607
|
{
|
|
21608
21608
|
name,
|
|
21609
21609
|
onNameChange: setName,
|
|
@@ -21669,7 +21669,7 @@ function ConnectedInviteContactsDialog({
|
|
|
21669
21669
|
ConnectedAddContacts,
|
|
21670
21670
|
{
|
|
21671
21671
|
onClose: handleClose,
|
|
21672
|
-
rewardAmount:
|
|
21672
|
+
rewardAmount: chunkBAJNXRI5_cjs.formatMoney(REFERRAL_OFFER.amount, REFERRAL_OFFER.currency)
|
|
21673
21673
|
}
|
|
21674
21674
|
),
|
|
21675
21675
|
isDeveloper && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -21798,13 +21798,13 @@ function ConnectedNewThreadDialog({
|
|
|
21798
21798
|
});
|
|
21799
21799
|
const parentOptions = react$1.useMemo(() => {
|
|
21800
21800
|
const leaf = { external_id: "__new__" };
|
|
21801
|
-
return
|
|
21801
|
+
return chunkFAKRTCAL_cjs.moveTargets([...tasks, leaf], leaf).map((t) => ({
|
|
21802
21802
|
id: t.external_id,
|
|
21803
21803
|
name: t.title?.trim() || "Untitled task"
|
|
21804
21804
|
}));
|
|
21805
21805
|
}, [tasks]);
|
|
21806
21806
|
const submit = async (values) => {
|
|
21807
|
-
const request =
|
|
21807
|
+
const request = chunkFAKRTCAL_cjs.newThreadToRequest(values);
|
|
21808
21808
|
try {
|
|
21809
21809
|
if (!workspaceId) throw new Error("Open a workspace to add a task.");
|
|
21810
21810
|
if (!request.startAssistant && request.todo) {
|
|
@@ -21845,7 +21845,7 @@ function ConnectedNewThreadDialog({
|
|
|
21845
21845
|
}
|
|
21846
21846
|
};
|
|
21847
21847
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21848
|
-
|
|
21848
|
+
chunkFAKRTCAL_cjs.NewThreadDialog,
|
|
21849
21849
|
{
|
|
21850
21850
|
open,
|
|
21851
21851
|
onOpenChange,
|
|
@@ -21965,14 +21965,14 @@ var referencesOf = (inputs) => {
|
|
|
21965
21965
|
return value?.documents ?? [];
|
|
21966
21966
|
};
|
|
21967
21967
|
var PROMPT_BINDINGS = {
|
|
21968
|
-
[
|
|
21968
|
+
[chunkFAKRTCAL_cjs.GENERATE_IMAGE_ID]: {
|
|
21969
21969
|
attachScope: false,
|
|
21970
21970
|
tools: (inputs) => {
|
|
21971
21971
|
const aspectRatio = typeof inputs.aspect_ratio === "string" ? inputs.aspect_ratio : "";
|
|
21972
21972
|
return {
|
|
21973
21973
|
retrieval_chunk: browser.buildRetrievalChunkTool([]),
|
|
21974
21974
|
retrieval_full_context: browser.buildRetrievalFullContextTool(referencesOf(inputs)),
|
|
21975
|
-
...aspectRatio && aspectRatio !==
|
|
21975
|
+
...aspectRatio && aspectRatio !== chunkFAKRTCAL_cjs.IMAGE_ASPECT_AUTO ? {
|
|
21976
21976
|
image_generation: {
|
|
21977
21977
|
name: "image_generation",
|
|
21978
21978
|
description: "image generation",
|
|
@@ -21993,19 +21993,19 @@ var text = (inputs, name) => {
|
|
|
21993
21993
|
function useLaunchWorkflow({ landing: surfaceLanding } = {}) {
|
|
21994
21994
|
const { data: documents = [] } = react.useDocuments();
|
|
21995
21995
|
const { data: workspaceTags = [] } = react.useTags();
|
|
21996
|
-
const tags = react$1.useMemo(() =>
|
|
21996
|
+
const tags = react$1.useMemo(() => chunkZBQTFA5X_cjs.documentScopeLabels(workspaceTags), [workspaceTags]);
|
|
21997
21997
|
const createTag = react.useCreateTag();
|
|
21998
21998
|
const updateTag = react.useUpdateTag();
|
|
21999
21999
|
const generate = react.useGenerateDocTags();
|
|
22000
|
-
const { create: createTask } =
|
|
22000
|
+
const { create: createTask } = chunkKVKKVSBT_cjs.useWorkflowTasks();
|
|
22001
22001
|
const applyModel = react.useApplyChatModel();
|
|
22002
22002
|
const session = react.useArbiSessionStore();
|
|
22003
22003
|
const { notify: notify17, openFiles, openNewConversation } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
22004
22004
|
const annotate = react$1.useCallback(
|
|
22005
22005
|
async ({ inputs, scope }) => {
|
|
22006
22006
|
const description = text(inputs, "description");
|
|
22007
|
-
const name = text(inputs, "name") ||
|
|
22008
|
-
const matching =
|
|
22007
|
+
const name = text(inputs, "name") || chunkFAKRTCAL_cjs.deriveAnnotationName(description);
|
|
22008
|
+
const matching = chunkZBQTFA5X_cjs.matchWorkflowScope(documents, scope);
|
|
22009
22009
|
if (!name || !description || matching.length === 0) return;
|
|
22010
22010
|
try {
|
|
22011
22011
|
const existing = tags.find((t) => t.name.toLowerCase() === name.toLowerCase());
|
|
@@ -22048,9 +22048,9 @@ function useLaunchWorkflow({ landing: surfaceLanding } = {}) {
|
|
|
22048
22048
|
async (launch) => {
|
|
22049
22049
|
const { workflow, inputs, scope, agentId } = launch;
|
|
22050
22050
|
if (workflow.run.kind === "operation") {
|
|
22051
|
-
if (workflow.id ===
|
|
22051
|
+
if (workflow.id === chunkFAKRTCAL_cjs.ANNOTATE_ID) {
|
|
22052
22052
|
await annotate(launch);
|
|
22053
|
-
|
|
22053
|
+
chunkFAKRTCAL_cjs.recordWorkflowUse(workflow.id);
|
|
22054
22054
|
return;
|
|
22055
22055
|
}
|
|
22056
22056
|
throw new Error(`No host handler for workflow "${workflow.id}"`);
|
|
@@ -22060,7 +22060,7 @@ function useLaunchWorkflow({ landing: surfaceLanding } = {}) {
|
|
|
22060
22060
|
);
|
|
22061
22061
|
const prompt = chunk5GQOIQCB_cjs.composeWorkflowPrompt(workflow, inputs, { documentTitles });
|
|
22062
22062
|
if (!prompt) return;
|
|
22063
|
-
|
|
22063
|
+
chunkFAKRTCAL_cjs.recordWorkflowUse(workflow.id);
|
|
22064
22064
|
if (agentId) {
|
|
22065
22065
|
try {
|
|
22066
22066
|
const created = await createTask({
|
|
@@ -22105,7 +22105,7 @@ function useLaunchWorkflow({ landing: surfaceLanding } = {}) {
|
|
|
22105
22105
|
const binding = PROMPT_BINDINGS[workflow.id];
|
|
22106
22106
|
if (!inPlace) openNewConversation();
|
|
22107
22107
|
if (binding?.attachScope !== false && !chunk5GQOIQCB_cjs.isEmptyWorkflowScope(scope)) {
|
|
22108
|
-
const ids =
|
|
22108
|
+
const ids = chunkZBQTFA5X_cjs.matchWorkflowScope(documents, scope).map((d) => d.external_id);
|
|
22109
22109
|
if (ids.length > 0) {
|
|
22110
22110
|
session.setConversationDocuments(
|
|
22111
22111
|
inPlace ? session.getState().conversationId ?? "new" : "new",
|
|
@@ -22140,30 +22140,30 @@ function ConnectedWorkflowStart({
|
|
|
22140
22140
|
const onLaunch = useLaunchWorkflow({ landing });
|
|
22141
22141
|
const { openUpload } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
22142
22142
|
const { data: workspaceTags = [] } = react.useTags();
|
|
22143
|
-
const tags = react$1.useMemo(() =>
|
|
22143
|
+
const tags = react$1.useMemo(() => chunkZBQTFA5X_cjs.documentScopeLabels(workspaceTags), [workspaceTags]);
|
|
22144
22144
|
const fieldPlaceholder = react$1.useCallback(
|
|
22145
22145
|
(field, inputs, workflow) => {
|
|
22146
|
-
if (workflow.id !==
|
|
22147
|
-
const derived =
|
|
22146
|
+
if (workflow.id !== chunkFAKRTCAL_cjs.ANNOTATE_ID || field.name !== "name") return void 0;
|
|
22147
|
+
const derived = chunkFAKRTCAL_cjs.deriveAnnotationName(String(inputs.description ?? ""));
|
|
22148
22148
|
return derived ? `Otherwise \u201C${derived}\u201D` : "Taken from the description";
|
|
22149
22149
|
},
|
|
22150
22150
|
[]
|
|
22151
22151
|
);
|
|
22152
22152
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22153
|
-
|
|
22153
|
+
chunkZJ3NII4U_cjs.ConnectedWorkflowLauncher,
|
|
22154
22154
|
{
|
|
22155
22155
|
...rest,
|
|
22156
22156
|
workflows,
|
|
22157
22157
|
onLaunch,
|
|
22158
|
-
renderIcon:
|
|
22158
|
+
renderIcon: chunkFAKRTCAL_cjs.renderWorkflowIcon,
|
|
22159
22159
|
onAddFiles: openUpload,
|
|
22160
22160
|
agentLabels: AGENT_LABELS,
|
|
22161
22161
|
addFilesAction,
|
|
22162
22162
|
fieldPlaceholder,
|
|
22163
|
-
submitLabel: ({ workflow, matchedCount }) => workflow.id ===
|
|
22163
|
+
submitLabel: ({ workflow, matchedCount }) => workflow.id === chunkFAKRTCAL_cjs.ANNOTATE_ID && matchedCount !== null ? `Annotate ${matchedCount} document${matchedCount !== 1 ? "s" : ""}` : void 0,
|
|
22164
22164
|
renderNotice: ({ workflow, inputs }) => {
|
|
22165
|
-
if (workflow.id !==
|
|
22166
|
-
const name = String(inputs.name ?? "").trim() ||
|
|
22165
|
+
if (workflow.id !== chunkFAKRTCAL_cjs.ANNOTATE_ID) return null;
|
|
22166
|
+
const name = String(inputs.name ?? "").trim() || chunkFAKRTCAL_cjs.deriveAnnotationName(String(inputs.description ?? ""));
|
|
22167
22167
|
const existing = name ? tags.find((t) => t.name.toLowerCase() === name.toLowerCase()) : void 0;
|
|
22168
22168
|
if (!existing) return null;
|
|
22169
22169
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -22192,7 +22192,7 @@ var TILE_TEST_IDS = {
|
|
|
22192
22192
|
annotate: "workspace-dashboard-quick-action-annotate"
|
|
22193
22193
|
};
|
|
22194
22194
|
function DashboardStart({ addMenu, onCreateNew }) {
|
|
22195
|
-
const { dashboard: workflows } =
|
|
22195
|
+
const { dashboard: workflows } = chunkKVKKVSBT_cjs.useWorkflowDefinitions();
|
|
22196
22196
|
const { isMember, role } = react.useCurrentWorkspace();
|
|
22197
22197
|
const canWrite = isMember && role !== "guest";
|
|
22198
22198
|
const [activeId, setActiveId] = react$1.useState(null);
|
|
@@ -22218,7 +22218,7 @@ function DashboardStart({ addMenu, onCreateNew }) {
|
|
|
22218
22218
|
}
|
|
22219
22219
|
] : void 0,
|
|
22220
22220
|
tileTestId: (workflow) => TILE_TEST_IDS[workflow.id],
|
|
22221
|
-
disabledReason: (workflow) => !canWrite && workflow.id ===
|
|
22221
|
+
disabledReason: (workflow) => !canWrite && workflow.id === chunkFAKRTCAL_cjs.ANNOTATE_ID ? "Only workspace members can annotate files" : void 0
|
|
22222
22222
|
}
|
|
22223
22223
|
);
|
|
22224
22224
|
}
|
|
@@ -22249,7 +22249,7 @@ function recentConversations(conversations) {
|
|
|
22249
22249
|
return [...conversations].sort((a, b) => time(b.updated_at) - time(a.updated_at)).slice(0, RECENT_ROWS).map((c) => ({
|
|
22250
22250
|
id: c.external_id,
|
|
22251
22251
|
title: c.title?.trim() || "Untitled thread",
|
|
22252
|
-
subtitle: c.status ? [
|
|
22252
|
+
subtitle: c.status ? [chunkFAKRTCAL_cjs.STATUS_LABELS[chunkFAKRTCAL_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"}`,
|
|
22253
22253
|
time: timeAndDate(c.updated_at)
|
|
22254
22254
|
}));
|
|
22255
22255
|
}
|
|
@@ -22625,7 +22625,7 @@ function parseTypedSkill(draft) {
|
|
|
22625
22625
|
return m ? { slug: m[1].toLowerCase(), text: (m[2] ?? "").trim() } : null;
|
|
22626
22626
|
}
|
|
22627
22627
|
function useSlashSkillWorkflows({ landing }) {
|
|
22628
|
-
const { skills, skillsEnabled } =
|
|
22628
|
+
const { skills, skillsEnabled } = chunkKVKKVSBT_cjs.useWorkflowDefinitions();
|
|
22629
22629
|
const { commands } = react.useBuiltinCommands();
|
|
22630
22630
|
const [active, setActive] = react$1.useState(null);
|
|
22631
22631
|
const open = (workflow, text2) => {
|
|
@@ -22684,7 +22684,7 @@ function ConnectedAskField({
|
|
|
22684
22684
|
filteredItems,
|
|
22685
22685
|
isOpen: isSlashMenuOpen,
|
|
22686
22686
|
canBrowseSkills
|
|
22687
|
-
} =
|
|
22687
|
+
} = chunkO2ATVRRO_cjs.useSlashItems(text2, chunkFAKRTCAL_cjs.BUILTIN_SKILLS);
|
|
22688
22688
|
const slashWorkflows = useSlashSkillWorkflows({ landing: "chat" });
|
|
22689
22689
|
const insertSlashItem = (item) => {
|
|
22690
22690
|
if (slashWorkflows.openFor(item)) {
|
|
@@ -22723,7 +22723,7 @@ function ConnectedAskField({
|
|
|
22723
22723
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
22724
22724
|
slashWorkflows.launcher,
|
|
22725
22725
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22726
|
-
|
|
22726
|
+
chunkCMMFXSTS_cjs.AskField,
|
|
22727
22727
|
{
|
|
22728
22728
|
value: text2,
|
|
22729
22729
|
onValueChange: setText,
|
|
@@ -23305,7 +23305,7 @@ function useDocumentFilters({
|
|
|
23305
23305
|
[documentFilters]
|
|
23306
23306
|
);
|
|
23307
23307
|
const baseFilteredDocuments = react$1.useMemo(
|
|
23308
|
-
() =>
|
|
23308
|
+
() => chunk6OXR4R6J_cjs.applyInvertedIndexFilter(documents, documentFilters, invertedIndex, getDocId),
|
|
23309
23309
|
[documents, documentFilters, invertedIndex]
|
|
23310
23310
|
);
|
|
23311
23311
|
const filteredDocuments = react$1.useMemo(() => {
|
|
@@ -26234,7 +26234,7 @@ function ConnectedSecureMailClaimPage({
|
|
|
26234
26234
|
}) {
|
|
26235
26235
|
const authenticated = react.useArbiSession().status === "signed-in";
|
|
26236
26236
|
const { openMail } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
26237
|
-
const { loading } =
|
|
26237
|
+
const { loading } = chunkO2ATVRRO_cjs.useAuthPages();
|
|
26238
26238
|
const claim = react.useClaimSecureMail();
|
|
26239
26239
|
const [, setFirstLoginWorkspaces] = react.useTransientView(FIRST_LOGIN_WORKSPACES_VIEW, null);
|
|
26240
26240
|
const [failure, setFailure] = react$1.useState(null);
|
|
@@ -26274,7 +26274,7 @@ function ConnectedSecureMailClaimPage({
|
|
|
26274
26274
|
}
|
|
26275
26275
|
})();
|
|
26276
26276
|
}, [authenticated, claimId, key]);
|
|
26277
|
-
if (!error) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: loading ?? /* @__PURE__ */ jsxRuntime.jsx(
|
|
26277
|
+
if (!error) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: loading ?? /* @__PURE__ */ jsxRuntime.jsx(chunkZA3ZELSH_cjs.LoadingIndicator, { variant: "splash" }) });
|
|
26278
26278
|
return /* @__PURE__ */ jsxRuntime.jsx("main", { className: "flex min-h-screen items-center justify-center bg-background p-6", children: /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "w-full max-w-md rounded-lg border border-border bg-card p-6", children: [
|
|
26279
26279
|
/* @__PURE__ */ jsxRuntime.jsx("p", { role: "alert", className: "mb-4 text-sm text-destructive", children: error }),
|
|
26280
26280
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -27665,7 +27665,7 @@ function EventEditorDialog({
|
|
|
27665
27665
|
const { notify: notify17, runtimeConfig } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
27666
27666
|
const attachmentDocuments = documents.map((document2) => ({
|
|
27667
27667
|
doc_id: document2.external_id,
|
|
27668
|
-
title:
|
|
27668
|
+
title: chunkZJ3NII4U_cjs.toWorkflowFieldDocument(document2).title,
|
|
27669
27669
|
url: chunkLJJJ6CYH_cjs.buildDeepLinkUrl(
|
|
27670
27670
|
{ workspaceId: workspaceId ?? void 0, documentId: document2.external_id },
|
|
27671
27671
|
runtimeConfig.deploymentDomain
|
|
@@ -32271,7 +32271,7 @@ function useBatchCompleteToasts() {
|
|
|
32271
32271
|
}
|
|
32272
32272
|
}, AI_FIELDS_NOTICE_WINDOW_MS);
|
|
32273
32273
|
} else if (message.batch_type === "entity_extract") {
|
|
32274
|
-
say(`${
|
|
32274
|
+
say(`${chunkZA3ZELSH_cjs.entitiesPhrase()} extracted from ${chunkZA3ZELSH_cjs.documentCount(docIds.length)}`, "success", {
|
|
32275
32275
|
...openTags && { action: { label: "View", onClick: openTags } }
|
|
32276
32276
|
});
|
|
32277
32277
|
} else if (message.batch_type === "upload") {
|
|
@@ -33074,15 +33074,16 @@ function useFilesPageSession(documents, workspaceId) {
|
|
|
33074
33074
|
}
|
|
33075
33075
|
|
|
33076
33076
|
// src/connection/viewer/documentPlace.ts
|
|
33077
|
-
function showDocumentPlace(session, { documentId, passageId, page }) {
|
|
33077
|
+
function showDocumentPlace(session, { documentId, passageId, page, tab }) {
|
|
33078
33078
|
session.setViewingDocument({ id: documentId, page: page ?? 1, passageId: passageId ?? null });
|
|
33079
|
-
session.setDocumentViewer({ tab: passageId || page ? "html" : "pdf" });
|
|
33079
|
+
session.setDocumentViewer({ tab: tab !== "pdf" && (passageId || page) ? "html" : "pdf" });
|
|
33080
33080
|
}
|
|
33081
33081
|
function documentPlaceKey(place) {
|
|
33082
33082
|
if (!place?.documentId) return null;
|
|
33083
|
-
return `${place.documentId}|${place.passageId ?? ""}|${place.page ?? ""}`;
|
|
33083
|
+
return `${place.documentId}|${place.passageId ?? ""}|${place.page ?? ""}|${place.tab ?? ""}`;
|
|
33084
33084
|
}
|
|
33085
33085
|
function dialogTabForPlace(place, tabs) {
|
|
33086
|
+
if (place.tab === "pdf" && tabs.includes("document")) return "document";
|
|
33086
33087
|
if (place.passageId && tabs.includes("review")) return "review";
|
|
33087
33088
|
if (place.page && !place.passageId && tabs.includes("document")) return "document";
|
|
33088
33089
|
return tabs[0];
|
|
@@ -33093,13 +33094,13 @@ var TABLET_TABLE_BELOW = 860;
|
|
|
33093
33094
|
var TABLET_VIEWPORT_BELOW = 1100;
|
|
33094
33095
|
var NO_CONVERSATION_DOCUMENTS2 = [];
|
|
33095
33096
|
var DocumentReviewCard = react$1.lazy(
|
|
33096
|
-
() => import('../DocumentReviewCard-
|
|
33097
|
+
() => import('../DocumentReviewCard-3H66FMMO.cjs').then((module) => ({ default: module.DocumentReviewCard }))
|
|
33097
33098
|
);
|
|
33098
33099
|
var FilesViewerDialog = react$1.lazy(
|
|
33099
|
-
() => import('../FilesViewerDialog-
|
|
33100
|
+
() => import('../FilesViewerDialog-DSK5HMLL.cjs').then((module) => ({ default: module.FilesViewerDialog }))
|
|
33100
33101
|
);
|
|
33101
33102
|
function defaultReviewCard(props) {
|
|
33102
|
-
return /* @__PURE__ */ jsxRuntime.jsx(react$1.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(
|
|
33103
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react$1.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkZA3ZELSH_cjs.LoadingIndicator, { message: "Loading document viewer..." }), children: /* @__PURE__ */ jsxRuntime.jsx(DocumentReviewCard, { ...props }, `navigator-${props.currentDocument.external_id}`) });
|
|
33103
33104
|
}
|
|
33104
33105
|
function ConnectedFilesPage({
|
|
33105
33106
|
isModal = false,
|
|
@@ -33108,6 +33109,7 @@ function ConnectedFilesPage({
|
|
|
33108
33109
|
documentId: linkedDocumentId,
|
|
33109
33110
|
passageId: linkedPassageId,
|
|
33110
33111
|
page: linkedPage,
|
|
33112
|
+
documentTab: linkedTab,
|
|
33111
33113
|
onDocumentChange,
|
|
33112
33114
|
viewer,
|
|
33113
33115
|
onUpload: hostUpload,
|
|
@@ -33141,7 +33143,7 @@ function ConnectedFilesPage({
|
|
|
33141
33143
|
const deleteDocuments = react.useDeleteDocuments();
|
|
33142
33144
|
const isDocumentsPending = isLoading && documents.length === 0;
|
|
33143
33145
|
const { workspaceId, userId, live } = chunkWV65MJ43_cjs.useConnectedWorkspace();
|
|
33144
|
-
const { role, members } =
|
|
33146
|
+
const { role, members } = chunkZJ3NII4U_cjs.useConnectedWorkspaceRole();
|
|
33145
33147
|
const { data: workspaces } = react.useWorkspaces({ enabled: live });
|
|
33146
33148
|
const workspace = workspaces?.find((w) => w.external_id === workspaceId);
|
|
33147
33149
|
const workspaceName = workspace?.name;
|
|
@@ -33195,6 +33197,8 @@ function ConnectedFilesPage({
|
|
|
33195
33197
|
(fromLink) => {
|
|
33196
33198
|
setDialog(null);
|
|
33197
33199
|
shownPlaceRef.current = null;
|
|
33200
|
+
if (session.getState().documentViewer.compareId)
|
|
33201
|
+
session.setDocumentViewer({ compareId: null });
|
|
33198
33202
|
if (chunkHEM27NA3_cjs.filesViewMode(chunkHEM27NA3_cjs.useFilesPrefs.getState(), prefsKey, defaultViewMode) !== "navigator")
|
|
33199
33203
|
session.setViewingDocument(null);
|
|
33200
33204
|
if (!fromLink) latest.current.onDocumentChange?.(null);
|
|
@@ -33225,8 +33229,25 @@ function ConnectedFilesPage({
|
|
|
33225
33229
|
shownPlaceRef.current = null;
|
|
33226
33230
|
}
|
|
33227
33231
|
}, [ownsViewer, dialog, viewingDocumentRef]);
|
|
33232
|
+
const viewingDraft = react.useArbiSessionState(
|
|
33233
|
+
(s) => !!s.viewingDocument && s.viewingDocument.id in s.draftDocuments
|
|
33234
|
+
);
|
|
33235
|
+
const compareId = react.useArbiSessionState((s) => s.documentViewer.compareId ?? null);
|
|
33236
|
+
const wholeViewerKey = !ownsViewer || !viewingDocumentRef ? null : viewingDraft ? `draft|${viewingDocumentRef}` : compareId ? `compare|${viewingDocumentRef}|${compareId}` : null;
|
|
33237
|
+
const wholeViewerKeyRef = react$1.useRef(null);
|
|
33238
|
+
react$1.useEffect(() => {
|
|
33239
|
+
const previous = wholeViewerKeyRef.current;
|
|
33240
|
+
wholeViewerKeyRef.current = wholeViewerKey;
|
|
33241
|
+
if (wholeViewerKey && wholeViewerKey !== previous)
|
|
33242
|
+
setDialog((open) => ({ tab: "document", seq: (open?.seq ?? 0) + 1 }));
|
|
33243
|
+
}, [wholeViewerKey]);
|
|
33228
33244
|
const linkedPlaceKey = documentPlaceKey(
|
|
33229
|
-
linkedDocumentId ? {
|
|
33245
|
+
linkedDocumentId ? {
|
|
33246
|
+
documentId: linkedDocumentId,
|
|
33247
|
+
passageId: linkedPassageId,
|
|
33248
|
+
page: linkedPage,
|
|
33249
|
+
tab: linkedTab
|
|
33250
|
+
} : null
|
|
33230
33251
|
);
|
|
33231
33252
|
const appliedLinkRef = react$1.useRef(null);
|
|
33232
33253
|
react$1.useEffect(() => {
|
|
@@ -33234,11 +33255,17 @@ function ConnectedFilesPage({
|
|
|
33234
33255
|
if (linkedPlaceKey === previous) return;
|
|
33235
33256
|
appliedLinkRef.current = linkedPlaceKey;
|
|
33236
33257
|
if (linkedDocumentId) {
|
|
33237
|
-
const place = {
|
|
33258
|
+
const place = {
|
|
33259
|
+
documentId: linkedDocumentId,
|
|
33260
|
+
passageId: linkedPassageId,
|
|
33261
|
+
page: linkedPage,
|
|
33262
|
+
tab: linkedTab
|
|
33263
|
+
};
|
|
33238
33264
|
if (!ownsViewer)
|
|
33239
33265
|
openDocument(linkedDocumentId, {
|
|
33240
33266
|
...linkedPassageId && { passageId: linkedPassageId },
|
|
33241
|
-
...linkedPage && { page: linkedPage }
|
|
33267
|
+
...linkedPage && { page: linkedPage },
|
|
33268
|
+
...linkedTab && { tab: linkedTab }
|
|
33242
33269
|
});
|
|
33243
33270
|
else if (linkedPlaceKey !== shownPlaceRef.current) showInDialog(place, true);
|
|
33244
33271
|
} else if (previous && ownsViewer && shownPlaceRef.current) closeDialog2(true);
|
|
@@ -33634,7 +33661,7 @@ function ConnectedFilesPage({
|
|
|
33634
33661
|
viewMode === "grid" ? (
|
|
33635
33662
|
// ‹ n / N › over the table's displayed rows; a step opens the document.
|
|
33636
33663
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
33637
|
-
|
|
33664
|
+
chunkZA3ZELSH_cjs.GridRowNavigator,
|
|
33638
33665
|
{
|
|
33639
33666
|
gridApi,
|
|
33640
33667
|
selectedId: viewingDocumentId ?? selectedDocumentIds[0] ?? null,
|
|
@@ -33937,7 +33964,7 @@ function ProcessingSection({
|
|
|
33937
33964
|
tasks,
|
|
33938
33965
|
onDelete
|
|
33939
33966
|
}) {
|
|
33940
|
-
return /* @__PURE__ */ jsxRuntime.jsx(chunk33MKOWSA_cjs.TaskSection, { title, count: count2, status, tooltip: SECTION_TOOLTIPS[status], children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
33967
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk33MKOWSA_cjs.TaskSection, { title, count: count2, status, tooltip: SECTION_TOOLTIPS[status], children: /* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.UploadTaskList, { tasks, title: "", onDelete, renderFileIcon: renderFileIcon2 }) });
|
|
33941
33968
|
}
|
|
33942
33969
|
function ConnectedDocumentProcessingPanel({
|
|
33943
33970
|
workspaceId,
|
|
@@ -34228,7 +34255,7 @@ function ConnectedProcessingStatus({ onClick }) {
|
|
|
34228
34255
|
const tone = pulse === "error" ? "error" : pulse === "success" ? "success" : "progress";
|
|
34229
34256
|
const label = pulse === "error" ? `${failed} failed` : pulse === "success" ? "Processed" : `${active} processing`;
|
|
34230
34257
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
34231
|
-
|
|
34258
|
+
chunkCMMFXSTS_cjs.StatusBadge,
|
|
34232
34259
|
{
|
|
34233
34260
|
tone,
|
|
34234
34261
|
label,
|
|
@@ -34819,7 +34846,7 @@ function DeveloperFooter({
|
|
|
34819
34846
|
}, [configVersions, configToLoad, parentMessage?.config_ext_id]);
|
|
34820
34847
|
const hasLoadedConfig = !!loadedConfigId && loadedConfigId !== "default";
|
|
34821
34848
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
34822
|
-
|
|
34849
|
+
chunk6OXR4R6J_cjs.ConfigSwitcherBar,
|
|
34823
34850
|
{
|
|
34824
34851
|
options: options2,
|
|
34825
34852
|
value: loadedConfigId || "default",
|
|
@@ -35088,8 +35115,8 @@ function ConnectedDeveloperConfig({ modeSwitcher } = {}) {
|
|
|
35088
35115
|
handleDeleteConfig,
|
|
35089
35116
|
handleLoadConfig
|
|
35090
35117
|
} = useDeveloperConfig();
|
|
35091
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
35092
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
35118
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunk6OXR4R6J_cjs.PanelFrame, { testId: "developer-config", children: [
|
|
35119
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.DraggableHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
35093
35120
|
chunkSJSGSHIT_cjs.TabHeader,
|
|
35094
35121
|
{
|
|
35095
35122
|
tabs: [{ id: "config", label: "Developer Config", icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Code2, { className: "size-4" }) }],
|
|
@@ -35099,7 +35126,7 @@ function ConnectedDeveloperConfig({ modeSwitcher } = {}) {
|
|
|
35099
35126
|
rightContent: modeSwitcher
|
|
35100
35127
|
}
|
|
35101
35128
|
) }),
|
|
35102
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
35129
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PanelFrameBody, { className: "overflow-auto p-4", children: configSchema ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
35103
35130
|
ConnectedConfigForm,
|
|
35104
35131
|
{
|
|
35105
35132
|
schema: configSchema,
|
|
@@ -35107,7 +35134,7 @@ function ConnectedDeveloperConfig({ modeSwitcher } = {}) {
|
|
|
35107
35134
|
onChange: handleConfigChange,
|
|
35108
35135
|
availableModels: availableModels?.models
|
|
35109
35136
|
}
|
|
35110
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
35137
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PanelNote, { children: "Loading configuration schema..." }) }),
|
|
35111
35138
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
35112
35139
|
DeveloperFooter,
|
|
35113
35140
|
{
|
|
@@ -35627,7 +35654,7 @@ function ConnectedAccountCluster({
|
|
|
35627
35654
|
layout
|
|
35628
35655
|
);
|
|
35629
35656
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
35630
|
-
|
|
35657
|
+
chunkCMMFXSTS_cjs.ActionCluster,
|
|
35631
35658
|
{
|
|
35632
35659
|
layout,
|
|
35633
35660
|
status: layout === "bar" ? status : null,
|
|
@@ -35642,7 +35669,7 @@ function ConnectedAccountCluster({
|
|
|
35642
35669
|
}
|
|
35643
35670
|
);
|
|
35644
35671
|
}
|
|
35645
|
-
var gbp3 = (pence) =>
|
|
35672
|
+
var gbp3 = (pence) => chunkBAJNXRI5_cjs.formatMoney(pence, "gbp");
|
|
35646
35673
|
function addonArrivalMessage(addons, added) {
|
|
35647
35674
|
const parts = [];
|
|
35648
35675
|
if (added.ai > 0) parts.push(`${react.formatGbp(added.ai * addons.block_ai_gbp)} of AI usage`);
|
|
@@ -36055,7 +36082,7 @@ function ConnectedAppRuntime({
|
|
|
36055
36082
|
prefetch
|
|
36056
36083
|
}) {
|
|
36057
36084
|
const on = (effect) => effects[effect] !== false;
|
|
36058
|
-
const { stripeEnabled } =
|
|
36085
|
+
const { stripeEnabled } = chunkBAJNXRI5_cjs.useBillingSupport();
|
|
36059
36086
|
const welcomeDialog = on("welcomeDialog") && stripeEnabled;
|
|
36060
36087
|
const resolveFirstLogin = () => {
|
|
36061
36088
|
if (welcomeDialog) skipWelcomeDialogThisSession();
|
|
@@ -37059,9 +37086,9 @@ function resolveLaunchInputs(workflow, request) {
|
|
|
37059
37086
|
return { ...fromContext, ...fromScope, ...request.inputs };
|
|
37060
37087
|
}
|
|
37061
37088
|
function useWorkflowLaunch() {
|
|
37062
|
-
const { skills } =
|
|
37089
|
+
const { skills } = chunkKVKKVSBT_cjs.useWorkflowDefinitions();
|
|
37063
37090
|
const launch = react$1.useCallback(
|
|
37064
|
-
(workflowId, options2 = {}) =>
|
|
37091
|
+
(workflowId, options2 = {}) => chunkFAKRTCAL_cjs.openWorkflowLaunch({ workflowId, ...options2 }),
|
|
37065
37092
|
[]
|
|
37066
37093
|
);
|
|
37067
37094
|
const itemsFor = react$1.useCallback(
|
|
@@ -37090,9 +37117,9 @@ function useWorkflowLaunch() {
|
|
|
37090
37117
|
return { launch, itemsFor, scopeItemsFor };
|
|
37091
37118
|
}
|
|
37092
37119
|
function Inner() {
|
|
37093
|
-
const request =
|
|
37094
|
-
const close =
|
|
37095
|
-
const { skills } =
|
|
37120
|
+
const request = chunkFAKRTCAL_cjs.useWorkflowLaunchRequest();
|
|
37121
|
+
const close = chunkFAKRTCAL_cjs.closeWorkflowLaunch;
|
|
37122
|
+
const { skills } = chunkKVKKVSBT_cjs.useWorkflowDefinitions();
|
|
37096
37123
|
const run = useLaunchWorkflow({ landing: request?.landing });
|
|
37097
37124
|
const workflow = skills.find((w) => w.id === request?.workflowId);
|
|
37098
37125
|
const inputs = react$1.useMemo(
|
|
@@ -37129,7 +37156,7 @@ function Inner() {
|
|
|
37129
37156
|
);
|
|
37130
37157
|
}
|
|
37131
37158
|
function WorkflowLaunchHost() {
|
|
37132
|
-
return
|
|
37159
|
+
return chunkFAKRTCAL_cjs.useWorkflowLaunchRequest() ? /* @__PURE__ */ jsxRuntime.jsx(Inner, {}) : null;
|
|
37133
37160
|
}
|
|
37134
37161
|
function isNeedsConfirmationDetail(detail) {
|
|
37135
37162
|
return typeof detail === "object" && detail !== null && detail.needs_confirmation === "resource_private";
|
|
@@ -37419,9 +37446,9 @@ function ConnectedConversationSettings() {
|
|
|
37419
37446
|
});
|
|
37420
37447
|
if (confirmed) settings.share();
|
|
37421
37448
|
};
|
|
37422
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
37449
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PanelFrame, { testId: "conversation-settings", className: "bg-transparent", children: /* @__PURE__ */ jsxRuntime.jsx(chunk6OXR4R6J_cjs.PanelFrameBody, { className: "overflow-auto p-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
|
|
37423
37450
|
!settings.isNewConversation && /* @__PURE__ */ jsxRuntime.jsx(
|
|
37424
|
-
|
|
37451
|
+
chunk6OXR4R6J_cjs.ConversationTitleSection,
|
|
37425
37452
|
{
|
|
37426
37453
|
title: settings.title,
|
|
37427
37454
|
onTitleChange: settings.setTitle,
|
|
@@ -37439,9 +37466,9 @@ function ConnectedConversationSettings() {
|
|
|
37439
37466
|
}
|
|
37440
37467
|
),
|
|
37441
37468
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
37442
|
-
|
|
37469
|
+
chunk6OXR4R6J_cjs.ModelSelectionSection,
|
|
37443
37470
|
{
|
|
37444
|
-
selector: /* @__PURE__ */ jsxRuntime.jsx(
|
|
37471
|
+
selector: /* @__PURE__ */ jsxRuntime.jsx(chunkO2ATVRRO_cjs.ConnectedModelSelector, {}),
|
|
37445
37472
|
onUseDefaults: settings.resetToDefaults
|
|
37446
37473
|
}
|
|
37447
37474
|
)
|
|
@@ -37500,7 +37527,7 @@ var BUILTIN_GLOBAL_DIALOGS = {
|
|
|
37500
37527
|
testId: "workspace-transfer-modal"
|
|
37501
37528
|
}
|
|
37502
37529
|
),
|
|
37503
|
-
logout: ({ props, onClose }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
37530
|
+
logout: ({ props, onClose }) => /* @__PURE__ */ jsxRuntime.jsx(chunkO2ATVRRO_cjs.ConnectedLogoutDialog, { open: props !== null, onClose }),
|
|
37504
37531
|
conversationSettings: ({ props, onClose }) => /* @__PURE__ */ jsxRuntime.jsx(ConnectedConversationSettingsDialog, { open: props !== null, onClose }),
|
|
37505
37532
|
unarchiveWorkspace: ({ props, onClose }) => /* @__PURE__ */ jsxRuntime.jsx(ConnectedUnarchiveWorkspaceDialog, { workspaceId: props?.workspaceId ?? null, onClose }),
|
|
37506
37533
|
productionSet: ConnectedProductionSetDialog,
|
|
@@ -37577,7 +37604,7 @@ function WorkflowRunStatusCell({ conversation }) {
|
|
|
37577
37604
|
return person ? ui.getUserDisplayName(person) : void 0;
|
|
37578
37605
|
};
|
|
37579
37606
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
37580
|
-
|
|
37607
|
+
chunkFAKRTCAL_cjs.WorkflowRunStatus,
|
|
37581
37608
|
{
|
|
37582
37609
|
steps,
|
|
37583
37610
|
states,
|
|
@@ -37611,7 +37638,7 @@ function ConversationStatusCell({ conversation }) {
|
|
|
37611
37638
|
if (conversation.plan?.steps?.length && !isLiveGenerating)
|
|
37612
37639
|
return /* @__PURE__ */ jsxRuntime.jsx(WorkflowRunStatusCell, { conversation });
|
|
37613
37640
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
37614
|
-
|
|
37641
|
+
chunkFAKRTCAL_cjs.ThreadStatusLine,
|
|
37615
37642
|
{
|
|
37616
37643
|
state: threadStateOf(conversation, isLiveGenerating),
|
|
37617
37644
|
className: "h-full",
|
|
@@ -37924,7 +37951,7 @@ function ConnectedThreadLauncher({ autoFocus }) {
|
|
|
37924
37951
|
setDraft("");
|
|
37925
37952
|
};
|
|
37926
37953
|
return /* @__PURE__ */ jsxRuntime.jsx(chunkZ6JUJI4A_cjs.ComposerDock, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkZ6JUJI4A_cjs.ComposerContainer, { className: "mx-auto max-w-[49rem] px-3 sm:px-6", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
37927
|
-
|
|
37954
|
+
chunkO2ATVRRO_cjs.ConversationComposer,
|
|
37928
37955
|
{
|
|
37929
37956
|
value: draft,
|
|
37930
37957
|
onValueChange: setDraft,
|
|
@@ -37932,7 +37959,7 @@ function ConnectedThreadLauncher({ autoFocus }) {
|
|
|
37932
37959
|
handleSendMessage: send,
|
|
37933
37960
|
isConversationEmpty: true,
|
|
37934
37961
|
shouldOfferFollowUp: false,
|
|
37935
|
-
modelSelector: /* @__PURE__ */ jsxRuntime.jsx(
|
|
37962
|
+
modelSelector: /* @__PURE__ */ jsxRuntime.jsx(chunkO2ATVRRO_cjs.ConnectedModelSelector, { variant: "compact" }),
|
|
37936
37963
|
rightButton: /* @__PURE__ */ jsxRuntime.jsx(chunkZ6JUJI4A_cjs.ComposerSend, { onSend: send, disabled: !draft.trim() })
|
|
37937
37964
|
}
|
|
37938
37965
|
) }) });
|
|
@@ -37940,7 +37967,7 @@ function ConnectedThreadLauncher({ autoFocus }) {
|
|
|
37940
37967
|
var START_VISIBLE = 8;
|
|
37941
37968
|
var START_SEARCH_ABOVE = 8;
|
|
37942
37969
|
function ConnectedConversationStart() {
|
|
37943
|
-
const { start } =
|
|
37970
|
+
const { start } = chunkKVKKVSBT_cjs.useWorkflowDefinitions();
|
|
37944
37971
|
const { openSkillsBrowser } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
37945
37972
|
const [query, setQuery] = react$1.useState("");
|
|
37946
37973
|
const q = query.trim().toLowerCase();
|
|
@@ -37955,7 +37982,7 @@ function ConnectedConversationStart() {
|
|
|
37955
37982
|
const browse = openSkillsBrowser ? [
|
|
37956
37983
|
{
|
|
37957
37984
|
id: "browse-all",
|
|
37958
|
-
iconNode:
|
|
37985
|
+
iconNode: chunkFAKRTCAL_cjs.renderWorkflowIcon("library"),
|
|
37959
37986
|
title: "Browse all",
|
|
37960
37987
|
description: "See every skill, make a copy, add your own",
|
|
37961
37988
|
onSelect: () => openSkillsBrowser(),
|
|
@@ -38061,7 +38088,7 @@ function AgentBarShell({
|
|
|
38061
38088
|
}, [isStepsExpanded, steps]);
|
|
38062
38089
|
const visibleStepCount = react$1.useMemo(() => browser.topLevelAgentSteps(steps ?? []).length, [steps]);
|
|
38063
38090
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
38064
|
-
|
|
38091
|
+
chunkFAKRTCAL_cjs.AgentBar,
|
|
38065
38092
|
{
|
|
38066
38093
|
className,
|
|
38067
38094
|
testId,
|
|
@@ -38073,7 +38100,7 @@ function AgentBarShell({
|
|
|
38073
38100
|
drawerRef: scrollRef,
|
|
38074
38101
|
onDrawerScroll: handleDrawerScroll,
|
|
38075
38102
|
drawer: /* @__PURE__ */ jsxRuntime.jsx(
|
|
38076
|
-
|
|
38103
|
+
chunkO2ATVRRO_cjs.AgentSteps,
|
|
38077
38104
|
{
|
|
38078
38105
|
steps: stepList,
|
|
38079
38106
|
isStreaming,
|
|
@@ -38125,7 +38152,7 @@ function AgentControlBar({
|
|
|
38125
38152
|
const waitingOnChildren = runningLanes.length > 0 && ["sub_agent", "spawn_subagent", "deep_research", "run_skill"].includes(currentTool ?? "");
|
|
38126
38153
|
const waitingLabel = runningLanes.length === 1 ? `Waiting on ${runningLanes[0].job}` : `Waiting on ${runningLanes.length} sub-agents`;
|
|
38127
38154
|
const liveTimerNode = liveTimer && /* @__PURE__ */ jsxRuntime.jsx(
|
|
38128
|
-
|
|
38155
|
+
chunkO2ATVRRO_cjs.MessageLiveSeconds,
|
|
38129
38156
|
{
|
|
38130
38157
|
...liveTimer,
|
|
38131
38158
|
offsetSeconds: currentStep?.t ?? 0,
|
|
@@ -38134,7 +38161,7 @@ function AgentControlBar({
|
|
|
38134
38161
|
}
|
|
38135
38162
|
);
|
|
38136
38163
|
const status = /* @__PURE__ */ jsxRuntime.jsx(
|
|
38137
|
-
|
|
38164
|
+
chunkFAKRTCAL_cjs.AgentBarStatus,
|
|
38138
38165
|
{
|
|
38139
38166
|
state: showState ? controlState : void 0,
|
|
38140
38167
|
stateLabel: STATE_LABEL[controlState],
|
|
@@ -38176,7 +38203,7 @@ function AgentControlBar({
|
|
|
38176
38203
|
];
|
|
38177
38204
|
const controls = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
38178
38205
|
onStop && /* @__PURE__ */ jsxRuntime.jsx(
|
|
38179
|
-
|
|
38206
|
+
chunkFAKRTCAL_cjs.AgentBarIconButton,
|
|
38180
38207
|
{
|
|
38181
38208
|
onClick: onStop,
|
|
38182
38209
|
title: "Stop",
|
|
@@ -38185,22 +38212,22 @@ function AgentControlBar({
|
|
|
38185
38212
|
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Square, { className: "h-3 w-3", fill: "currentColor" })
|
|
38186
38213
|
}
|
|
38187
38214
|
),
|
|
38188
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
38215
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.AgentBarMenu, { items: menuItems })
|
|
38189
38216
|
] });
|
|
38190
38217
|
const displayedQueuedMessages = (transientQueuedMessages ?? []).filter(
|
|
38191
38218
|
(message) => !message.serverId || !queuedMessages.some((queued) => queued.external_id === message.serverId)
|
|
38192
38219
|
);
|
|
38193
38220
|
const queuedNotes = displayedQueuedMessages.filter((message) => message.content);
|
|
38194
|
-
const below = probeAnswer || queuedNotes.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
38221
|
+
const below = probeAnswer || queuedNotes.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkFAKRTCAL_cjs.AgentBarNotes, { children: [
|
|
38195
38222
|
queuedNotes.map((message, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
38196
|
-
|
|
38223
|
+
chunkFAKRTCAL_cjs.AgentBarQueuedNote,
|
|
38197
38224
|
{
|
|
38198
38225
|
text: message.content ?? "",
|
|
38199
38226
|
isAcknowledged: message.acknowledged
|
|
38200
38227
|
},
|
|
38201
38228
|
index
|
|
38202
38229
|
)),
|
|
38203
|
-
probeAnswer && /* @__PURE__ */ jsxRuntime.jsx(
|
|
38230
|
+
probeAnswer && /* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.AgentBarProbeAnswer, { answer: probeAnswer.answer })
|
|
38204
38231
|
] }) : null;
|
|
38205
38232
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
38206
38233
|
AgentBarShell,
|
|
@@ -39135,7 +39162,7 @@ function ConversationThread({
|
|
|
39135
39162
|
}, [isGenerating]);
|
|
39136
39163
|
const slashWorkflows = useSlashSkillWorkflows({ landing: "current-chat" });
|
|
39137
39164
|
const composerSkills = react$1.useMemo(
|
|
39138
|
-
() => ({ builtin:
|
|
39165
|
+
() => ({ builtin: chunkFAKRTCAL_cjs.BUILTIN_SKILLS, openFor: slashWorkflows.openFor }),
|
|
39139
39166
|
[slashWorkflows.openFor]
|
|
39140
39167
|
);
|
|
39141
39168
|
const browseSkills = react$1.useMemo(
|
|
@@ -39184,7 +39211,7 @@ function ConversationThread({
|
|
|
39184
39211
|
useStartRequestedDraft();
|
|
39185
39212
|
const orphanedMessage = react.getOrphanedLastMessage(messageHistory, isGenerating, assistantMode);
|
|
39186
39213
|
return /* @__PURE__ */ jsxRuntime.jsxs(chunk32YCMXT2_cjs.ConversationBody, { children: [
|
|
39187
|
-
/* @__PURE__ */ jsxRuntime.jsx(chunk32YCMXT2_cjs.ConversationMain, { "data-testid": `conversation-${currentConversationId}`, children: threadsLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunk32YCMXT2_cjs.ConversationLoading, {}) : messageHistory.length > 0 || isBranching ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
39214
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk32YCMXT2_cjs.ConversationMain, { "data-testid": `conversation-${currentConversationId}`, children: threadsLoading ? /* @__PURE__ */ jsxRuntime.jsx(chunk32YCMXT2_cjs.ConversationLoading, {}) : messageHistory.length > 0 || isBranching ? /* @__PURE__ */ jsxRuntime.jsx(chunkO2ATVRRO_cjs.AskAgainContext.Provider, { value: handleAskAgain, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkIOCEKN44_cjs.TranscriptRunsContext.Provider, { value: transcriptRunInfo, children: [
|
|
39188
39215
|
meetingCallExtId && transcriptLineCount > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center py-2", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
39189
39216
|
chunkZBP4ZSAJ_cjs.ConversationFilter,
|
|
39190
39217
|
{
|
|
@@ -39202,7 +39229,7 @@ function ConversationThread({
|
|
|
39202
39229
|
]
|
|
39203
39230
|
}
|
|
39204
39231
|
) }),
|
|
39205
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39232
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkO2ATVRRO_cjs.ConnectedMessageArea, { ref: containerRef, messages: visibleMessages }),
|
|
39206
39233
|
showProvisional && /* @__PURE__ */ jsxRuntime.jsx(chunk4ZM3J3SL_cjs.ProvisionalSpeakers, { ids: provisionalSpeakers })
|
|
39207
39234
|
] }) }) : meetingCallExtId ? (
|
|
39208
39235
|
// A meeting thread with nothing yet: call-aware, not the upload prompt.
|
|
@@ -39210,7 +39237,7 @@ function ConversationThread({
|
|
|
39210
39237
|
/* @__PURE__ */ jsxRuntime.jsx(chunk4ZM3J3SL_cjs.CallConversationEmpty, { callExtId: meetingCallExtId }),
|
|
39211
39238
|
/* @__PURE__ */ jsxRuntime.jsx(chunk4ZM3J3SL_cjs.ProvisionalSpeakers, { ids: provisionalSpeakers })
|
|
39212
39239
|
] })
|
|
39213
|
-
) : currentTask && currentTask.status != null ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
39240
|
+
) : currentTask && currentTask.status != null ? /* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.TaskEmptyState, { task: currentTask }) : pendingFirstTurn && isGenerating ? /* @__PURE__ */ jsxRuntime.jsx(chunkO2ATVRRO_cjs.ConnectedMessageArea, { ref: containerRef, messages: pendingFirstTurn }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
39214
39241
|
ConnectedConversationEmpty,
|
|
39215
39242
|
{
|
|
39216
39243
|
hasDocuments: allWorkspaceDocuments.length > 0,
|
|
@@ -39281,7 +39308,7 @@ function ConversationThread({
|
|
|
39281
39308
|
children: react.READ_ONLY_MEETING_TEXT
|
|
39282
39309
|
}
|
|
39283
39310
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
39284
|
-
|
|
39311
|
+
chunkO2ATVRRO_cjs.ConversationComposer,
|
|
39285
39312
|
{
|
|
39286
39313
|
handleSendMessage: handleUserSend,
|
|
39287
39314
|
placeholder: pendingAnswer ? "Type your answer to ARBI \u2014 or pick an option above" : void 0,
|
|
@@ -39621,7 +39648,7 @@ function ConnectedThreadsPage({
|
|
|
39621
39648
|
};
|
|
39622
39649
|
const page = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full min-h-0 flex-col", "data-testid": "threads-page", children: [
|
|
39623
39650
|
/* @__PURE__ */ jsxRuntime.jsx("main", { className: "flex min-h-0 flex-1 flex-col bg-background", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
39624
|
-
|
|
39651
|
+
chunkFAKRTCAL_cjs.ConversationListView,
|
|
39625
39652
|
{
|
|
39626
39653
|
showHeader,
|
|
39627
39654
|
conversations: tasks,
|
|
@@ -39640,7 +39667,7 @@ function ConnectedThreadsPage({
|
|
|
39640
39667
|
renderLabels: threadLabels.renderLabels,
|
|
39641
39668
|
labelText: threadLabels.labelText,
|
|
39642
39669
|
renderBy: (row2) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
39643
|
-
|
|
39670
|
+
chunkFAKRTCAL_cjs.ConversationTurnSpeaker,
|
|
39644
39671
|
{
|
|
39645
39672
|
variant: "icon",
|
|
39646
39673
|
role: row2.last_message_role,
|
|
@@ -39673,7 +39700,7 @@ function ConnectedThreadsPage({
|
|
|
39673
39700
|
}
|
|
39674
39701
|
),
|
|
39675
39702
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39676
|
-
|
|
39703
|
+
chunk6OXR4R6J_cjs.RenameDialog,
|
|
39677
39704
|
{
|
|
39678
39705
|
open: !!renaming,
|
|
39679
39706
|
onClose: () => {
|
|
@@ -40522,7 +40549,7 @@ function ConnectedConversationPage({
|
|
|
40522
40549
|
);
|
|
40523
40550
|
const { data: workspaceTags = [] } = react.useTags();
|
|
40524
40551
|
const { tagId: threadTagId, clear: clearThreadTag } = useThreadTagFilter();
|
|
40525
|
-
const historyCount =
|
|
40552
|
+
const historyCount = chunkFAKRTCAL_cjs.filterConversationRows(
|
|
40526
40553
|
threadTagId ? conversations.filter((row2) => row2.label_ext_ids?.includes(threadTagId)) : conversations,
|
|
40527
40554
|
threadFilter,
|
|
40528
40555
|
(row2) => workspaceTags.filter((tag) => row2.label_ext_ids?.includes(tag.external_id)).map((tag) => tag.name).join(" "),
|
|
@@ -40581,7 +40608,7 @@ function ConnectedConversationPage({
|
|
|
40581
40608
|
] })
|
|
40582
40609
|
}
|
|
40583
40610
|
),
|
|
40584
|
-
isInChat && /* @__PURE__ */ jsxRuntime.jsx(
|
|
40611
|
+
isInChat && /* @__PURE__ */ jsxRuntime.jsx(chunkKVKKVSBT_cjs.ConnectedThreadTaskBar, { conversationId: currentConversationId })
|
|
40585
40612
|
] }),
|
|
40586
40613
|
isInChat && /* @__PURE__ */ jsxRuntime.jsx(
|
|
40587
40614
|
ConversationThread,
|
|
@@ -40790,7 +40817,7 @@ function SsoResendVerificationButton({
|
|
|
40790
40817
|
onClick: async () => handleResendEmailVerification(),
|
|
40791
40818
|
disabled: loading || disabled,
|
|
40792
40819
|
"aria-label": "Resend verification email",
|
|
40793
|
-
children: loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
40820
|
+
children: loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkZA3ZELSH_cjs.LoadingIndicator, {}) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
40794
40821
|
"Didn't get a verification email? ",
|
|
40795
40822
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold", children: "Resend" })
|
|
40796
40823
|
] })
|
|
@@ -40801,16 +40828,16 @@ function SsoResendVerificationButton({
|
|
|
40801
40828
|
}
|
|
40802
40829
|
var NO_RECOVERY_KEY_WARNING = "Without your password or a recovery key, we cannot recover your account or data.";
|
|
40803
40830
|
function ConnectedSsoCallback() {
|
|
40804
|
-
const sso =
|
|
40831
|
+
const sso = chunkO2ATVRRO_cjs.useSsoSignIn();
|
|
40805
40832
|
const { isAuthenticated: isAuthenticated2, isLoading, user } = sso;
|
|
40806
|
-
const auth =
|
|
40833
|
+
const auth = chunkO2ATVRRO_cjs.useAuthPages();
|
|
40807
40834
|
const { notify: notify17, navigate } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
40808
40835
|
const passwordRules = auth.passwordRules;
|
|
40809
40836
|
const isProcessing = react$1.useRef(false);
|
|
40810
40837
|
const hasCheckedStatus = react$1.useRef(false);
|
|
40811
40838
|
const [accessToken, setAccessToken] = react$1.useState(null);
|
|
40812
40839
|
const [ssoStatus, setSsoStatus] = react$1.useState(null);
|
|
40813
|
-
const ssoName = react$1.useMemo(() =>
|
|
40840
|
+
const ssoName = react$1.useMemo(() => chunkO2ATVRRO_cjs.resolveSsoName(user ?? {}, ssoStatus ?? {}), [user, ssoStatus]);
|
|
40814
40841
|
const [password, setPassword] = react$1.useState("");
|
|
40815
40842
|
const [confirmPassword, setConfirmPassword] = react$1.useState("");
|
|
40816
40843
|
const [error, setError] = react$1.useState(null);
|
|
@@ -40988,7 +41015,7 @@ function ConnectedSsoCallback() {
|
|
|
40988
41015
|
setIsCheckingStatus(true);
|
|
40989
41016
|
try {
|
|
40990
41017
|
console.info("[SSO] Checking user status...");
|
|
40991
|
-
const response = await
|
|
41018
|
+
const response = await chunkO2ATVRRO_cjs.ssoAccountStatus(arbi, accessToken, user);
|
|
40992
41019
|
console.info("[SSO] User status:", response.status);
|
|
40993
41020
|
setSsoStatus(response);
|
|
40994
41021
|
} catch (error2) {
|
|
@@ -41032,7 +41059,7 @@ function ConnectedSsoCallback() {
|
|
|
41032
41059
|
setIsSubmitting(true);
|
|
41033
41060
|
setError(null);
|
|
41034
41061
|
try {
|
|
41035
|
-
const { login, registered, linked } = await
|
|
41062
|
+
const { login, registered, linked } = await chunkO2ATVRRO_cjs.completeSsoSignIn(arbi, {
|
|
41036
41063
|
token: accessToken,
|
|
41037
41064
|
user,
|
|
41038
41065
|
status: ssoStatus,
|
|
@@ -41314,7 +41341,7 @@ function ConnectedSsoCallback() {
|
|
|
41314
41341
|
ssoStatus.status !== "new_user" && auth.footer
|
|
41315
41342
|
] }),
|
|
41316
41343
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41317
|
-
|
|
41344
|
+
chunkO2ATVRRO_cjs.ConnectedForgotPassword,
|
|
41318
41345
|
{
|
|
41319
41346
|
open: showForgotPasswordModal,
|
|
41320
41347
|
onOpenChange: setShowForgotPasswordModal,
|
|
@@ -41322,7 +41349,7 @@ function ConnectedSsoCallback() {
|
|
|
41322
41349
|
}
|
|
41323
41350
|
),
|
|
41324
41351
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41325
|
-
|
|
41352
|
+
chunkO2ATVRRO_cjs.ConnectedPasswordChangeDialog,
|
|
41326
41353
|
{
|
|
41327
41354
|
open: showChangePasswordModal,
|
|
41328
41355
|
onClose: () => setShowChangePasswordModal(false),
|
|
@@ -41481,27 +41508,27 @@ function ConnectedOAuthConsentPage({
|
|
|
41481
41508
|
oauthErrorRedirect(params.redirectUri, params.state, "access_denied");
|
|
41482
41509
|
}
|
|
41483
41510
|
if (error && !params) {
|
|
41484
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
41511
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentPage, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentMessage, { tone: "error", title: "Invalid Request", children: error }) });
|
|
41485
41512
|
}
|
|
41486
41513
|
if (!params) {
|
|
41487
41514
|
return null;
|
|
41488
41515
|
}
|
|
41489
41516
|
if (clientInfo?.isLocalAgentFlow) {
|
|
41490
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
41517
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentPage, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentMessage, { tone: "warning", title: "Close this tab", children: "This tab opened alongside the correct authorization page. Please close this tab and complete the connection in the other tab that opened at the same time." }) });
|
|
41491
41518
|
}
|
|
41492
41519
|
if (!isAuthenticated2) {
|
|
41493
41520
|
return null;
|
|
41494
41521
|
}
|
|
41495
41522
|
if (callbackUrl) {
|
|
41496
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
41497
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
41523
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentPage, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkFAKRTCAL_cjs.ConsentCard, { size: "md", children: [
|
|
41524
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFAKRTCAL_cjs.ConsentHeader, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ClipboardList, {}), title: "Almost there", children: [
|
|
41498
41525
|
"A new tab has opened to complete the connection. If it succeeded, you can close this page. If you see a connection error there, paste the URL below into Claude Cowork \u2014",
|
|
41499
41526
|
" ",
|
|
41500
41527
|
copied ? "it's already copied to your clipboard." : "copy it first."
|
|
41501
41528
|
] }),
|
|
41502
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
41503
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41504
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
41529
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFAKRTCAL_cjs.ConsentSection, { title: "Callback URL", children: [
|
|
41530
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.CopyableUrl, { url: callbackUrl, copied, onCopy: handleCopy }),
|
|
41531
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFAKRTCAL_cjs.ConsentText, { variant: "hint", children: [
|
|
41505
41532
|
"In Claude Code, paste the URL at the prompt that says",
|
|
41506
41533
|
" ",
|
|
41507
41534
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-foreground", children: '"paste the full redirect URL here"' }),
|
|
@@ -41510,17 +41537,17 @@ function ConnectedOAuthConsentPage({
|
|
|
41510
41537
|
] })
|
|
41511
41538
|
] }) });
|
|
41512
41539
|
}
|
|
41513
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
41514
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
41515
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41540
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentPage, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkFAKRTCAL_cjs.ConsentCard, { children: [
|
|
41541
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkFAKRTCAL_cjs.ConsentHeader, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Link2, {}), title: `Connect to ${appName}`, children: [
|
|
41542
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentStrong, { children: clientInfo?.name ?? params.clientId }),
|
|
41516
41543
|
" is requesting access to your ",
|
|
41517
41544
|
appName,
|
|
41518
41545
|
" workspace."
|
|
41519
41546
|
] }),
|
|
41520
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41521
|
-
error && /* @__PURE__ */ jsxRuntime.jsx(
|
|
41522
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41523
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41547
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentSection, { title: "This will allow", children: /* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentPermissionList, { items: permissions }) }),
|
|
41548
|
+
error && /* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentNotice, { tone: "error", children: error }),
|
|
41549
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentActions, { isLoading: loading, onDeny: handleDeny, onAllow: handleAllow }),
|
|
41550
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkFAKRTCAL_cjs.ConsentFootnote, { children: footnote })
|
|
41524
41551
|
] }) });
|
|
41525
41552
|
}
|
|
41526
41553
|
function ConnectedSharedFilesPage({
|
|
@@ -41642,7 +41669,7 @@ function useMainAreaPanel(panels) {
|
|
|
41642
41669
|
}
|
|
41643
41670
|
function useTogglePanel() {
|
|
41644
41671
|
const { setFocusedArea } = react.useArbiSessionStore();
|
|
41645
|
-
const { windows } =
|
|
41672
|
+
const { windows } = chunkCMMFXSTS_cjs.usePanelHostSupport();
|
|
41646
41673
|
return (panelId, isOpen, setOpen) => {
|
|
41647
41674
|
if (isOpen && windows.focusPanelWindow(panelId)) {
|
|
41648
41675
|
setFocusedArea(panelId);
|
|
@@ -41676,7 +41703,7 @@ function ConnectedAppShell({
|
|
|
41676
41703
|
const session = react.useArbiSessionStore();
|
|
41677
41704
|
const dockedPanel = react.useArbiSessionState((state) => state.shell.panels.docked);
|
|
41678
41705
|
const dockSqueezed = chunkFX3K6LNZ_cjs.useMediaQuery(sidebarPolicy?.dockedRailQuery ?? "(max-width: 0px)");
|
|
41679
|
-
const sidebar =
|
|
41706
|
+
const sidebar = chunkCMMFXSTS_cjs.useSidebarController({
|
|
41680
41707
|
...useSessionSidebar(),
|
|
41681
41708
|
forceRail: !!sidebarPolicy?.dockedRailQuery && dockSqueezed && dockedPanel !== null,
|
|
41682
41709
|
hoverExpansion: sidebarPolicy?.hoverExpansion
|
|
@@ -41706,7 +41733,7 @@ function ConnectedAppShell({
|
|
|
41706
41733
|
session.setFocusedArea("main");
|
|
41707
41734
|
contentProps?.onClick?.(event);
|
|
41708
41735
|
},
|
|
41709
|
-
children: content.mode === "docked" ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
41736
|
+
children: content.mode === "docked" ? /* @__PURE__ */ jsxRuntime.jsxs(chunkCMMFXSTS_cjs.DockZone, { "data-testid": content.testId, children: [
|
|
41710
41737
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: content.mainPanelVisible ? "hidden" : "h-full min-h-0", children: pageContent }),
|
|
41711
41738
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41712
41739
|
"div",
|
|
@@ -41766,7 +41793,7 @@ function ConnectedShellSidebar({
|
|
|
41766
41793
|
expanded && /* @__PURE__ */ jsxRuntime.jsx(chunkGFLZHV54_cjs.Sidebar.PinToggle, { isPinned: controller.isPinned, onToggle: controller.togglePin })
|
|
41767
41794
|
] }),
|
|
41768
41795
|
expanded ? ask : /* @__PURE__ */ jsxRuntime.jsx(
|
|
41769
|
-
|
|
41796
|
+
chunkCMMFXSTS_cjs.AskTrigger,
|
|
41770
41797
|
{
|
|
41771
41798
|
variant: "rail",
|
|
41772
41799
|
onClick: controller.expand,
|
|
@@ -41775,7 +41802,7 @@ function ConnectedShellSidebar({
|
|
|
41775
41802
|
)
|
|
41776
41803
|
] });
|
|
41777
41804
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
41778
|
-
|
|
41805
|
+
chunkCMMFXSTS_cjs.ShellSidebar,
|
|
41779
41806
|
{
|
|
41780
41807
|
controller,
|
|
41781
41808
|
drawerLogo: logo,
|
|
@@ -41827,7 +41854,7 @@ function ConnectedShellTopbar({
|
|
|
41827
41854
|
if (landing || !workspace)
|
|
41828
41855
|
return /* @__PURE__ */ jsxRuntime.jsx(chunkLBRJA4ZJ_cjs.MobileAppBar, { onMenu: sidebar.openDrawer, logo, showMenu: false, actions });
|
|
41829
41856
|
if (askExpanded)
|
|
41830
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
41857
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkCMMFXSTS_cjs.AskRow, { onClose: () => setAskExpanded(false), children: ask({ autoFocus: true, onSubmitted: () => setAskExpanded(false) }) });
|
|
41831
41858
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
41832
41859
|
chunkLBRJA4ZJ_cjs.MobileAppBar,
|
|
41833
41860
|
{
|
|
@@ -41924,7 +41951,7 @@ function ConnectedTipBar({
|
|
|
41924
41951
|
className,
|
|
41925
41952
|
revealOnHover = false
|
|
41926
41953
|
}) {
|
|
41927
|
-
const { showHints, settingsLoaded, setShowHintsPersisted, setShowHints } =
|
|
41954
|
+
const { showHints, settingsLoaded, setShowHintsPersisted, setShowHints } = chunkO2ATVRRO_cjs.useContextualHints();
|
|
41928
41955
|
const { dismissed, dismissTip } = react.useDismissedTips();
|
|
41929
41956
|
const { notify: notify17 } = chunkUIXY4HKM_cjs.useBlocksEnvironment();
|
|
41930
41957
|
const { data: workspaces } = react.useWorkspaces();
|
|
@@ -41935,7 +41962,7 @@ function ConnectedTipBar({
|
|
|
41935
41962
|
workspaceOpen,
|
|
41936
41963
|
...state
|
|
41937
41964
|
};
|
|
41938
|
-
const { tip, index, count: count2, previous, next, onHoverChange } =
|
|
41965
|
+
const { tip, index, count: count2, previous, next, onHoverChange } = chunkZA3ZELSH_cjs.useTipsPlacement({
|
|
41939
41966
|
registry,
|
|
41940
41967
|
context,
|
|
41941
41968
|
state: situation,
|
|
@@ -41968,7 +41995,7 @@ function ConnectedTipBar({
|
|
|
41968
41995
|
});
|
|
41969
41996
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
41970
41997
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41971
|
-
|
|
41998
|
+
chunkCMMFXSTS_cjs.TipCard,
|
|
41972
41999
|
{
|
|
41973
42000
|
message: tip.message,
|
|
41974
42001
|
index,
|
|
@@ -42013,7 +42040,7 @@ function useGettingStarted({
|
|
|
42013
42040
|
const { user } = react.useArbiSession();
|
|
42014
42041
|
const userExtId = user?.external_id;
|
|
42015
42042
|
const temporaryOnly = user?.temporary_access_only === true;
|
|
42016
|
-
const { showHints, settingsLoaded, setShowHints, setShowHintsPersisted } =
|
|
42043
|
+
const { showHints, settingsLoaded, setShowHints, setShowHintsPersisted } = chunkO2ATVRRO_cjs.useContextualHints();
|
|
42017
42044
|
const { dismissed, loaded: dismissedLoaded, dismissTip } = react.useDismissedTips();
|
|
42018
42045
|
const welcomeJourneyEnabled = react.useFeature("welcomeJourney");
|
|
42019
42046
|
const session = react.useArbiSessionStore();
|
|
@@ -42247,55 +42274,55 @@ Object.defineProperty(exports, "DEFAULT_DOCUMENT_VIEWER_TABS", {
|
|
|
42247
42274
|
});
|
|
42248
42275
|
Object.defineProperty(exports, "CAP_REACHED_MESSAGE", {
|
|
42249
42276
|
enumerable: true,
|
|
42250
|
-
get: function () { return
|
|
42277
|
+
get: function () { return chunkBAJNXRI5_cjs.CAP_REACHED_MESSAGE; }
|
|
42251
42278
|
});
|
|
42252
42279
|
Object.defineProperty(exports, "ZERO_BUDGET_MESSAGE", {
|
|
42253
42280
|
enumerable: true,
|
|
42254
|
-
get: function () { return
|
|
42281
|
+
get: function () { return chunkBAJNXRI5_cjs.ZERO_BUDGET_MESSAGE; }
|
|
42255
42282
|
});
|
|
42256
42283
|
Object.defineProperty(exports, "aiUsageResetTimestamp", {
|
|
42257
42284
|
enumerable: true,
|
|
42258
|
-
get: function () { return
|
|
42285
|
+
get: function () { return chunkBAJNXRI5_cjs.aiUsageResetTimestamp; }
|
|
42259
42286
|
});
|
|
42260
42287
|
Object.defineProperty(exports, "formatMoney", {
|
|
42261
42288
|
enumerable: true,
|
|
42262
|
-
get: function () { return
|
|
42289
|
+
get: function () { return chunkBAJNXRI5_cjs.formatMoney; }
|
|
42263
42290
|
});
|
|
42264
42291
|
Object.defineProperty(exports, "formatResetDate", {
|
|
42265
42292
|
enumerable: true,
|
|
42266
|
-
get: function () { return
|
|
42293
|
+
get: function () { return chunkBAJNXRI5_cjs.formatResetDate; }
|
|
42267
42294
|
});
|
|
42268
42295
|
Object.defineProperty(exports, "getQuotaItems", {
|
|
42269
42296
|
enumerable: true,
|
|
42270
|
-
get: function () { return
|
|
42297
|
+
get: function () { return chunkBAJNXRI5_cjs.getQuotaItems; }
|
|
42271
42298
|
});
|
|
42272
42299
|
Object.defineProperty(exports, "isAddonBudgetZero", {
|
|
42273
42300
|
enumerable: true,
|
|
42274
|
-
get: function () { return
|
|
42301
|
+
get: function () { return chunkBAJNXRI5_cjs.isAddonBudgetZero; }
|
|
42275
42302
|
});
|
|
42276
42303
|
Object.defineProperty(exports, "isProProject", {
|
|
42277
42304
|
enumerable: true,
|
|
42278
|
-
get: function () { return
|
|
42305
|
+
get: function () { return chunkBAJNXRI5_cjs.isProProject; }
|
|
42279
42306
|
});
|
|
42280
42307
|
Object.defineProperty(exports, "planBadgeView", {
|
|
42281
42308
|
enumerable: true,
|
|
42282
|
-
get: function () { return
|
|
42309
|
+
get: function () { return chunkBAJNXRI5_cjs.planBadgeView; }
|
|
42283
42310
|
});
|
|
42284
42311
|
Object.defineProperty(exports, "planName", {
|
|
42285
42312
|
enumerable: true,
|
|
42286
|
-
get: function () { return
|
|
42313
|
+
get: function () { return chunkBAJNXRI5_cjs.planName; }
|
|
42287
42314
|
});
|
|
42288
42315
|
Object.defineProperty(exports, "projectGroupBilling", {
|
|
42289
42316
|
enumerable: true,
|
|
42290
|
-
get: function () { return
|
|
42317
|
+
get: function () { return chunkBAJNXRI5_cjs.projectGroupBilling; }
|
|
42291
42318
|
});
|
|
42292
42319
|
Object.defineProperty(exports, "useBillingSupport", {
|
|
42293
42320
|
enumerable: true,
|
|
42294
|
-
get: function () { return
|
|
42321
|
+
get: function () { return chunkBAJNXRI5_cjs.useBillingSupport; }
|
|
42295
42322
|
});
|
|
42296
42323
|
Object.defineProperty(exports, "useRewardBalance", {
|
|
42297
42324
|
enumerable: true,
|
|
42298
|
-
get: function () { return
|
|
42325
|
+
get: function () { return chunkBAJNXRI5_cjs.useRewardBalance; }
|
|
42299
42326
|
});
|
|
42300
42327
|
Object.defineProperty(exports, "ConnectedMailInviteCard", {
|
|
42301
42328
|
enumerable: true,
|
|
@@ -42315,319 +42342,319 @@ Object.defineProperty(exports, "useMemberLookup", {
|
|
|
42315
42342
|
});
|
|
42316
42343
|
Object.defineProperty(exports, "ConnectedAssistantDock", {
|
|
42317
42344
|
enumerable: true,
|
|
42318
|
-
get: function () { return
|
|
42345
|
+
get: function () { return chunk64KZM3RZ_cjs.ConnectedAssistantDock; }
|
|
42319
42346
|
});
|
|
42320
42347
|
Object.defineProperty(exports, "redlineStats", {
|
|
42321
42348
|
enumerable: true,
|
|
42322
|
-
get: function () { return
|
|
42349
|
+
get: function () { return chunk64KZM3RZ_cjs.redlineStats; }
|
|
42323
42350
|
});
|
|
42324
42351
|
Object.defineProperty(exports, "textToArtifact", {
|
|
42325
42352
|
enumerable: true,
|
|
42326
|
-
get: function () { return
|
|
42353
|
+
get: function () { return chunk64KZM3RZ_cjs.textToArtifact; }
|
|
42327
42354
|
});
|
|
42328
42355
|
Object.defineProperty(exports, "toRedlineMarkdown", {
|
|
42329
42356
|
enumerable: true,
|
|
42330
|
-
get: function () { return
|
|
42357
|
+
get: function () { return chunk64KZM3RZ_cjs.toRedlineMarkdown; }
|
|
42331
42358
|
});
|
|
42332
42359
|
Object.defineProperty(exports, "useConnectedAiTask", {
|
|
42333
42360
|
enumerable: true,
|
|
42334
|
-
get: function () { return
|
|
42361
|
+
get: function () { return chunk64KZM3RZ_cjs.useConnectedAiTask; }
|
|
42335
42362
|
});
|
|
42336
42363
|
Object.defineProperty(exports, "useConnectedChat", {
|
|
42337
42364
|
enumerable: true,
|
|
42338
|
-
get: function () { return
|
|
42365
|
+
get: function () { return chunk64KZM3RZ_cjs.useConnectedChat; }
|
|
42339
42366
|
});
|
|
42340
42367
|
Object.defineProperty(exports, "useSemanticSearch", {
|
|
42341
42368
|
enumerable: true,
|
|
42342
|
-
get: function () { return
|
|
42369
|
+
get: function () { return chunk64KZM3RZ_cjs.useSemanticSearch; }
|
|
42343
42370
|
});
|
|
42344
42371
|
Object.defineProperty(exports, "useWorkspaceDocs", {
|
|
42345
42372
|
enumerable: true,
|
|
42346
|
-
get: function () { return
|
|
42373
|
+
get: function () { return chunk64KZM3RZ_cjs.useWorkspaceDocs; }
|
|
42347
42374
|
});
|
|
42348
42375
|
Object.defineProperty(exports, "ConnectedTaskActivityDialog", {
|
|
42349
42376
|
enumerable: true,
|
|
42350
|
-
get: function () { return
|
|
42377
|
+
get: function () { return chunkKVKKVSBT_cjs.ConnectedTaskActivityDialog; }
|
|
42351
42378
|
});
|
|
42352
42379
|
Object.defineProperty(exports, "ConnectedTaskComposer", {
|
|
42353
42380
|
enumerable: true,
|
|
42354
|
-
get: function () { return
|
|
42381
|
+
get: function () { return chunkKVKKVSBT_cjs.ConnectedTaskComposer; }
|
|
42355
42382
|
});
|
|
42356
42383
|
Object.defineProperty(exports, "ConnectedThreadTaskBar", {
|
|
42357
42384
|
enumerable: true,
|
|
42358
|
-
get: function () { return
|
|
42385
|
+
get: function () { return chunkKVKKVSBT_cjs.ConnectedThreadTaskBar; }
|
|
42359
42386
|
});
|
|
42360
42387
|
Object.defineProperty(exports, "ConnectedWorkflowHistory", {
|
|
42361
42388
|
enumerable: true,
|
|
42362
|
-
get: function () { return
|
|
42389
|
+
get: function () { return chunkKVKKVSBT_cjs.ConnectedWorkflowHistory; }
|
|
42363
42390
|
});
|
|
42364
42391
|
Object.defineProperty(exports, "ConnectedWorkflowRunPage", {
|
|
42365
42392
|
enumerable: true,
|
|
42366
|
-
get: function () { return
|
|
42393
|
+
get: function () { return chunkKVKKVSBT_cjs.ConnectedWorkflowRunPage; }
|
|
42367
42394
|
});
|
|
42368
42395
|
Object.defineProperty(exports, "ConnectedWorkflowRunner", {
|
|
42369
42396
|
enumerable: true,
|
|
42370
|
-
get: function () { return
|
|
42397
|
+
get: function () { return chunkKVKKVSBT_cjs.ConnectedWorkflowRunner; }
|
|
42371
42398
|
});
|
|
42372
42399
|
Object.defineProperty(exports, "DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS", {
|
|
42373
42400
|
enumerable: true,
|
|
42374
|
-
get: function () { return
|
|
42401
|
+
get: function () { return chunkKVKKVSBT_cjs.DEFAULT_CONNECTED_WORKFLOW_RUNNER_LABELS; }
|
|
42375
42402
|
});
|
|
42376
42403
|
Object.defineProperty(exports, "DEFAULT_WORKFLOW_RUN_PAGE_LABELS", {
|
|
42377
42404
|
enumerable: true,
|
|
42378
|
-
get: function () { return
|
|
42405
|
+
get: function () { return chunkKVKKVSBT_cjs.DEFAULT_WORKFLOW_RUN_PAGE_LABELS; }
|
|
42379
42406
|
});
|
|
42380
42407
|
Object.defineProperty(exports, "WorkflowRunThread", {
|
|
42381
42408
|
enumerable: true,
|
|
42382
|
-
get: function () { return
|
|
42409
|
+
get: function () { return chunkKVKKVSBT_cjs.WorkflowRunThread; }
|
|
42383
42410
|
});
|
|
42384
42411
|
Object.defineProperty(exports, "WorkflowRunWorkspaceChangedError", {
|
|
42385
42412
|
enumerable: true,
|
|
42386
|
-
get: function () { return
|
|
42413
|
+
get: function () { return chunkKVKKVSBT_cjs.WorkflowRunWorkspaceChangedError; }
|
|
42387
42414
|
});
|
|
42388
42415
|
Object.defineProperty(exports, "buildProjectSummaries", {
|
|
42389
42416
|
enumerable: true,
|
|
42390
|
-
get: function () { return
|
|
42417
|
+
get: function () { return chunkKVKKVSBT_cjs.buildProjectSummaries; }
|
|
42391
42418
|
});
|
|
42392
42419
|
Object.defineProperty(exports, "primaryProjectWorkspace", {
|
|
42393
42420
|
enumerable: true,
|
|
42394
|
-
get: function () { return
|
|
42421
|
+
get: function () { return chunkKVKKVSBT_cjs.primaryProjectWorkspace; }
|
|
42395
42422
|
});
|
|
42396
42423
|
Object.defineProperty(exports, "useEnsureRequiredLabels", {
|
|
42397
42424
|
enumerable: true,
|
|
42398
|
-
get: function () { return
|
|
42425
|
+
get: function () { return chunkKVKKVSBT_cjs.useEnsureRequiredLabels; }
|
|
42399
42426
|
});
|
|
42400
42427
|
Object.defineProperty(exports, "useProjectSummaries", {
|
|
42401
42428
|
enumerable: true,
|
|
42402
|
-
get: function () { return
|
|
42429
|
+
get: function () { return chunkKVKKVSBT_cjs.useProjectSummaries; }
|
|
42403
42430
|
});
|
|
42404
42431
|
Object.defineProperty(exports, "useProjectSummary", {
|
|
42405
42432
|
enumerable: true,
|
|
42406
|
-
get: function () { return
|
|
42433
|
+
get: function () { return chunkKVKKVSBT_cjs.useProjectSummary; }
|
|
42407
42434
|
});
|
|
42408
42435
|
Object.defineProperty(exports, "useRenderTaskPerson", {
|
|
42409
42436
|
enumerable: true,
|
|
42410
|
-
get: function () { return
|
|
42437
|
+
get: function () { return chunkKVKKVSBT_cjs.useRenderTaskPerson; }
|
|
42411
42438
|
});
|
|
42412
42439
|
Object.defineProperty(exports, "useRequiredLabels", {
|
|
42413
42440
|
enumerable: true,
|
|
42414
|
-
get: function () { return
|
|
42441
|
+
get: function () { return chunkKVKKVSBT_cjs.useRequiredLabels; }
|
|
42415
42442
|
});
|
|
42416
42443
|
Object.defineProperty(exports, "useSkillsEnabled", {
|
|
42417
42444
|
enumerable: true,
|
|
42418
|
-
get: function () { return
|
|
42445
|
+
get: function () { return chunkKVKKVSBT_cjs.useSkillsEnabled; }
|
|
42419
42446
|
});
|
|
42420
42447
|
Object.defineProperty(exports, "useTaskPeople", {
|
|
42421
42448
|
enumerable: true,
|
|
42422
|
-
get: function () { return
|
|
42449
|
+
get: function () { return chunkKVKKVSBT_cjs.useTaskPeople; }
|
|
42423
42450
|
});
|
|
42424
42451
|
Object.defineProperty(exports, "useWorkflowDefinitions", {
|
|
42425
42452
|
enumerable: true,
|
|
42426
|
-
get: function () { return
|
|
42453
|
+
get: function () { return chunkKVKKVSBT_cjs.useWorkflowDefinitions; }
|
|
42427
42454
|
});
|
|
42428
42455
|
Object.defineProperty(exports, "useWorkflowTasks", {
|
|
42429
42456
|
enumerable: true,
|
|
42430
|
-
get: function () { return
|
|
42457
|
+
get: function () { return chunkKVKKVSBT_cjs.useWorkflowTasks; }
|
|
42431
42458
|
});
|
|
42432
42459
|
Object.defineProperty(exports, "useWorkflowsPageState", {
|
|
42433
42460
|
enumerable: true,
|
|
42434
|
-
get: function () { return
|
|
42461
|
+
get: function () { return chunkKVKKVSBT_cjs.useWorkflowsPageState; }
|
|
42435
42462
|
});
|
|
42436
42463
|
Object.defineProperty(exports, "workflowRunView", {
|
|
42437
42464
|
enumerable: true,
|
|
42438
|
-
get: function () { return
|
|
42465
|
+
get: function () { return chunkKVKKVSBT_cjs.workflowRunView; }
|
|
42439
42466
|
});
|
|
42440
42467
|
Object.defineProperty(exports, "AgentSteps", {
|
|
42441
42468
|
enumerable: true,
|
|
42442
|
-
get: function () { return
|
|
42469
|
+
get: function () { return chunkO2ATVRRO_cjs.AgentSteps; }
|
|
42443
42470
|
});
|
|
42444
42471
|
Object.defineProperty(exports, "AnswerTable", {
|
|
42445
42472
|
enumerable: true,
|
|
42446
|
-
get: function () { return
|
|
42473
|
+
get: function () { return chunkO2ATVRRO_cjs.AnswerTable; }
|
|
42447
42474
|
});
|
|
42448
42475
|
Object.defineProperty(exports, "ArbiChat", {
|
|
42449
42476
|
enumerable: true,
|
|
42450
|
-
get: function () { return
|
|
42477
|
+
get: function () { return chunkO2ATVRRO_cjs.ArbiChat; }
|
|
42451
42478
|
});
|
|
42452
42479
|
Object.defineProperty(exports, "AskAgainContext", {
|
|
42453
42480
|
enumerable: true,
|
|
42454
|
-
get: function () { return
|
|
42481
|
+
get: function () { return chunkO2ATVRRO_cjs.AskAgainContext; }
|
|
42455
42482
|
});
|
|
42456
42483
|
Object.defineProperty(exports, "ConnectedBranchControls", {
|
|
42457
42484
|
enumerable: true,
|
|
42458
|
-
get: function () { return
|
|
42485
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedBranchControls; }
|
|
42459
42486
|
});
|
|
42460
42487
|
Object.defineProperty(exports, "ConnectedCitationRenderer", {
|
|
42461
42488
|
enumerable: true,
|
|
42462
|
-
get: function () { return
|
|
42489
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedCitationRenderer; }
|
|
42463
42490
|
});
|
|
42464
42491
|
Object.defineProperty(exports, "ConnectedCompactConversation", {
|
|
42465
42492
|
enumerable: true,
|
|
42466
|
-
get: function () { return
|
|
42493
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedCompactConversation; }
|
|
42467
42494
|
});
|
|
42468
42495
|
Object.defineProperty(exports, "ConnectedCompactLogin", {
|
|
42469
42496
|
enumerable: true,
|
|
42470
|
-
get: function () { return
|
|
42497
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedCompactLogin; }
|
|
42471
42498
|
});
|
|
42472
42499
|
Object.defineProperty(exports, "ConnectedConversationDocumentPicker", {
|
|
42473
42500
|
enumerable: true,
|
|
42474
|
-
get: function () { return
|
|
42501
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedConversationDocumentPicker; }
|
|
42475
42502
|
});
|
|
42476
42503
|
Object.defineProperty(exports, "ConnectedDangerZone", {
|
|
42477
42504
|
enumerable: true,
|
|
42478
|
-
get: function () { return
|
|
42505
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedDangerZone; }
|
|
42479
42506
|
});
|
|
42480
42507
|
Object.defineProperty(exports, "ConnectedEmbeddedChat", {
|
|
42481
42508
|
enumerable: true,
|
|
42482
|
-
get: function () { return
|
|
42509
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedEmbeddedChat; }
|
|
42483
42510
|
});
|
|
42484
42511
|
Object.defineProperty(exports, "ConnectedForgotPassword", {
|
|
42485
42512
|
enumerable: true,
|
|
42486
|
-
get: function () { return
|
|
42513
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedForgotPassword; }
|
|
42487
42514
|
});
|
|
42488
42515
|
Object.defineProperty(exports, "ConnectedIdentityVerification", {
|
|
42489
42516
|
enumerable: true,
|
|
42490
|
-
get: function () { return
|
|
42517
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedIdentityVerification; }
|
|
42491
42518
|
});
|
|
42492
42519
|
Object.defineProperty(exports, "ConnectedLoginPage", {
|
|
42493
42520
|
enumerable: true,
|
|
42494
|
-
get: function () { return
|
|
42521
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedLoginPage; }
|
|
42495
42522
|
});
|
|
42496
42523
|
Object.defineProperty(exports, "ConnectedLogoutDialog", {
|
|
42497
42524
|
enumerable: true,
|
|
42498
|
-
get: function () { return
|
|
42525
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedLogoutDialog; }
|
|
42499
42526
|
});
|
|
42500
42527
|
Object.defineProperty(exports, "ConnectedMessage", {
|
|
42501
42528
|
enumerable: true,
|
|
42502
|
-
get: function () { return
|
|
42529
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedMessage; }
|
|
42503
42530
|
});
|
|
42504
42531
|
Object.defineProperty(exports, "ConnectedMessageArea", {
|
|
42505
42532
|
enumerable: true,
|
|
42506
|
-
get: function () { return
|
|
42533
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedMessageArea; }
|
|
42507
42534
|
});
|
|
42508
42535
|
Object.defineProperty(exports, "ConnectedMessageList", {
|
|
42509
42536
|
enumerable: true,
|
|
42510
|
-
get: function () { return
|
|
42537
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedMessageList; }
|
|
42511
42538
|
});
|
|
42512
42539
|
Object.defineProperty(exports, "ConnectedModelSelector", {
|
|
42513
42540
|
enumerable: true,
|
|
42514
|
-
get: function () { return
|
|
42541
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedModelSelector; }
|
|
42515
42542
|
});
|
|
42516
42543
|
Object.defineProperty(exports, "ConnectedNotificationPreferences", {
|
|
42517
42544
|
enumerable: true,
|
|
42518
|
-
get: function () { return
|
|
42545
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedNotificationPreferences; }
|
|
42519
42546
|
});
|
|
42520
42547
|
Object.defineProperty(exports, "ConnectedPasswordChangeDialog", {
|
|
42521
42548
|
enumerable: true,
|
|
42522
|
-
get: function () { return
|
|
42549
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedPasswordChangeDialog; }
|
|
42523
42550
|
});
|
|
42524
42551
|
Object.defineProperty(exports, "ConnectedProfileCard", {
|
|
42525
42552
|
enumerable: true,
|
|
42526
|
-
get: function () { return
|
|
42553
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedProfileCard; }
|
|
42527
42554
|
});
|
|
42528
42555
|
Object.defineProperty(exports, "ConnectedSecuritySection", {
|
|
42529
42556
|
enumerable: true,
|
|
42530
|
-
get: function () { return
|
|
42557
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedSecuritySection; }
|
|
42531
42558
|
});
|
|
42532
42559
|
Object.defineProperty(exports, "ConnectedSessionsRow", {
|
|
42533
42560
|
enumerable: true,
|
|
42534
|
-
get: function () { return
|
|
42561
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedSessionsRow; }
|
|
42535
42562
|
});
|
|
42536
42563
|
Object.defineProperty(exports, "ConnectedThreadsPreview", {
|
|
42537
42564
|
enumerable: true,
|
|
42538
|
-
get: function () { return
|
|
42565
|
+
get: function () { return chunkO2ATVRRO_cjs.ConnectedThreadsPreview; }
|
|
42539
42566
|
});
|
|
42540
42567
|
Object.defineProperty(exports, "ConversationComposer", {
|
|
42541
42568
|
enumerable: true,
|
|
42542
|
-
get: function () { return
|
|
42569
|
+
get: function () { return chunkO2ATVRRO_cjs.ConversationComposer; }
|
|
42543
42570
|
});
|
|
42544
42571
|
Object.defineProperty(exports, "EmbeddedChatPanel", {
|
|
42545
42572
|
enumerable: true,
|
|
42546
|
-
get: function () { return
|
|
42573
|
+
get: function () { return chunkO2ATVRRO_cjs.EmbeddedChatPanel; }
|
|
42547
42574
|
});
|
|
42548
42575
|
Object.defineProperty(exports, "MessageDetailsModal", {
|
|
42549
42576
|
enumerable: true,
|
|
42550
|
-
get: function () { return
|
|
42577
|
+
get: function () { return chunkO2ATVRRO_cjs.MessageDetailsModal; }
|
|
42551
42578
|
});
|
|
42552
42579
|
Object.defineProperty(exports, "MessageLiveSeconds", {
|
|
42553
42580
|
enumerable: true,
|
|
42554
|
-
get: function () { return
|
|
42581
|
+
get: function () { return chunkO2ATVRRO_cjs.MessageLiveSeconds; }
|
|
42555
42582
|
});
|
|
42556
42583
|
Object.defineProperty(exports, "PENDING_RECOVERY_KEY", {
|
|
42557
42584
|
enumerable: true,
|
|
42558
|
-
get: function () { return
|
|
42585
|
+
get: function () { return chunkO2ATVRRO_cjs.PENDING_RECOVERY_KEY; }
|
|
42559
42586
|
});
|
|
42560
42587
|
Object.defineProperty(exports, "PREMIUM_TIER_TAG", {
|
|
42561
42588
|
enumerable: true,
|
|
42562
|
-
get: function () { return
|
|
42589
|
+
get: function () { return chunkO2ATVRRO_cjs.PREMIUM_TIER_TAG; }
|
|
42563
42590
|
});
|
|
42564
42591
|
Object.defineProperty(exports, "RunningSubagents", {
|
|
42565
42592
|
enumerable: true,
|
|
42566
|
-
get: function () { return
|
|
42593
|
+
get: function () { return chunkO2ATVRRO_cjs.RunningSubagents; }
|
|
42567
42594
|
});
|
|
42568
42595
|
Object.defineProperty(exports, "STANDARD_TIER_TAG", {
|
|
42569
42596
|
enumerable: true,
|
|
42570
|
-
get: function () { return
|
|
42597
|
+
get: function () { return chunkO2ATVRRO_cjs.STANDARD_TIER_TAG; }
|
|
42571
42598
|
});
|
|
42572
42599
|
Object.defineProperty(exports, "WorkflowStepMessage", {
|
|
42573
42600
|
enumerable: true,
|
|
42574
|
-
get: function () { return
|
|
42601
|
+
get: function () { return chunkO2ATVRRO_cjs.WorkflowStepMessage; }
|
|
42575
42602
|
});
|
|
42576
42603
|
Object.defineProperty(exports, "backUpOnSignup", {
|
|
42577
42604
|
enumerable: true,
|
|
42578
|
-
get: function () { return
|
|
42605
|
+
get: function () { return chunkO2ATVRRO_cjs.backUpOnSignup; }
|
|
42579
42606
|
});
|
|
42580
42607
|
Object.defineProperty(exports, "defaultHost", {
|
|
42581
42608
|
enumerable: true,
|
|
42582
|
-
get: function () { return
|
|
42609
|
+
get: function () { return chunkO2ATVRRO_cjs.defaultHost; }
|
|
42583
42610
|
});
|
|
42584
42611
|
Object.defineProperty(exports, "renderConnectedUser", {
|
|
42585
42612
|
enumerable: true,
|
|
42586
|
-
get: function () { return
|
|
42613
|
+
get: function () { return chunkO2ATVRRO_cjs.renderConnectedUser; }
|
|
42587
42614
|
});
|
|
42588
42615
|
Object.defineProperty(exports, "renderSessionStatusIcon", {
|
|
42589
42616
|
enumerable: true,
|
|
42590
|
-
get: function () { return
|
|
42617
|
+
get: function () { return chunkO2ATVRRO_cjs.renderSessionStatusIcon; }
|
|
42591
42618
|
});
|
|
42592
42619
|
Object.defineProperty(exports, "resolveSsoName", {
|
|
42593
42620
|
enumerable: true,
|
|
42594
|
-
get: function () { return
|
|
42621
|
+
get: function () { return chunkO2ATVRRO_cjs.resolveSsoName; }
|
|
42595
42622
|
});
|
|
42596
42623
|
Object.defineProperty(exports, "useAuthPages", {
|
|
42597
42624
|
enumerable: true,
|
|
42598
|
-
get: function () { return
|
|
42625
|
+
get: function () { return chunkO2ATVRRO_cjs.useAuthPages; }
|
|
42599
42626
|
});
|
|
42600
42627
|
Object.defineProperty(exports, "useContextualHints", {
|
|
42601
42628
|
enumerable: true,
|
|
42602
|
-
get: function () { return
|
|
42629
|
+
get: function () { return chunkO2ATVRRO_cjs.useContextualHints; }
|
|
42603
42630
|
});
|
|
42604
42631
|
Object.defineProperty(exports, "useModelPicker", {
|
|
42605
42632
|
enumerable: true,
|
|
42606
|
-
get: function () { return
|
|
42633
|
+
get: function () { return chunkO2ATVRRO_cjs.useModelPicker; }
|
|
42607
42634
|
});
|
|
42608
42635
|
Object.defineProperty(exports, "useOpenChunk", {
|
|
42609
42636
|
enumerable: true,
|
|
42610
|
-
get: function () { return
|
|
42637
|
+
get: function () { return chunkO2ATVRRO_cjs.useOpenChunk; }
|
|
42611
42638
|
});
|
|
42612
42639
|
Object.defineProperty(exports, "useOpenWorkspaceIcon", {
|
|
42613
42640
|
enumerable: true,
|
|
42614
|
-
get: function () { return
|
|
42641
|
+
get: function () { return chunkO2ATVRRO_cjs.useOpenWorkspaceIcon; }
|
|
42615
42642
|
});
|
|
42616
42643
|
Object.defineProperty(exports, "useSlashItems", {
|
|
42617
42644
|
enumerable: true,
|
|
42618
|
-
get: function () { return
|
|
42645
|
+
get: function () { return chunkO2ATVRRO_cjs.useSlashItems; }
|
|
42619
42646
|
});
|
|
42620
42647
|
Object.defineProperty(exports, "useSsoSignIn", {
|
|
42621
42648
|
enumerable: true,
|
|
42622
|
-
get: function () { return
|
|
42649
|
+
get: function () { return chunkO2ATVRRO_cjs.useSsoSignIn; }
|
|
42623
42650
|
});
|
|
42624
42651
|
Object.defineProperty(exports, "useWorkspaceDocTitles", {
|
|
42625
42652
|
enumerable: true,
|
|
42626
|
-
get: function () { return
|
|
42653
|
+
get: function () { return chunkO2ATVRRO_cjs.useWorkspaceDocTitles; }
|
|
42627
42654
|
});
|
|
42628
42655
|
Object.defineProperty(exports, "useConnectedThreadActivity", {
|
|
42629
42656
|
enumerable: true,
|
|
42630
|
-
get: function () { return
|
|
42657
|
+
get: function () { return chunkMB2OXZEA_cjs.useConnectedThreadActivity; }
|
|
42631
42658
|
});
|
|
42632
42659
|
Object.defineProperty(exports, "DocumentUser", {
|
|
42633
42660
|
enumerable: true,
|
|
@@ -42643,39 +42670,39 @@ Object.defineProperty(exports, "SELECTED_WORKSPACE_KEY", {
|
|
|
42643
42670
|
});
|
|
42644
42671
|
Object.defineProperty(exports, "ConnectedWorkflowDocumentsField", {
|
|
42645
42672
|
enumerable: true,
|
|
42646
|
-
get: function () { return
|
|
42673
|
+
get: function () { return chunkZJ3NII4U_cjs.ConnectedWorkflowDocumentsField; }
|
|
42647
42674
|
});
|
|
42648
42675
|
Object.defineProperty(exports, "ConnectedWorkflowLauncher", {
|
|
42649
42676
|
enumerable: true,
|
|
42650
|
-
get: function () { return
|
|
42677
|
+
get: function () { return chunkZJ3NII4U_cjs.ConnectedWorkflowLauncher; }
|
|
42651
42678
|
});
|
|
42652
42679
|
Object.defineProperty(exports, "ConnectedWorkflowsTable", {
|
|
42653
42680
|
enumerable: true,
|
|
42654
|
-
get: function () { return
|
|
42681
|
+
get: function () { return chunkZJ3NII4U_cjs.ConnectedWorkflowsTable; }
|
|
42655
42682
|
});
|
|
42656
42683
|
Object.defineProperty(exports, "DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS", {
|
|
42657
42684
|
enumerable: true,
|
|
42658
|
-
get: function () { return
|
|
42685
|
+
get: function () { return chunkZJ3NII4U_cjs.DEFAULT_CONNECTED_WORKFLOWS_TABLE_LABELS; }
|
|
42659
42686
|
});
|
|
42660
42687
|
Object.defineProperty(exports, "toWorkflowFieldDocument", {
|
|
42661
42688
|
enumerable: true,
|
|
42662
|
-
get: function () { return
|
|
42689
|
+
get: function () { return chunkZJ3NII4U_cjs.toWorkflowFieldDocument; }
|
|
42663
42690
|
});
|
|
42664
42691
|
Object.defineProperty(exports, "useConnectedWorkflowScopeSource", {
|
|
42665
42692
|
enumerable: true,
|
|
42666
|
-
get: function () { return
|
|
42693
|
+
get: function () { return chunkZJ3NII4U_cjs.useConnectedWorkflowScopeSource; }
|
|
42667
42694
|
});
|
|
42668
42695
|
Object.defineProperty(exports, "useConnectedWorkspaceRole", {
|
|
42669
42696
|
enumerable: true,
|
|
42670
|
-
get: function () { return
|
|
42697
|
+
get: function () { return chunkZJ3NII4U_cjs.useConnectedWorkspaceRole; }
|
|
42671
42698
|
});
|
|
42672
42699
|
Object.defineProperty(exports, "useDocxCommentTarget", {
|
|
42673
42700
|
enumerable: true,
|
|
42674
|
-
get: function () { return
|
|
42701
|
+
get: function () { return chunkZJ3NII4U_cjs.useDocxCommentTarget; }
|
|
42675
42702
|
});
|
|
42676
42703
|
Object.defineProperty(exports, "useNativeDocxSupport", {
|
|
42677
42704
|
enumerable: true,
|
|
42678
|
-
get: function () { return
|
|
42705
|
+
get: function () { return chunkZJ3NII4U_cjs.useNativeDocxSupport; }
|
|
42679
42706
|
});
|
|
42680
42707
|
Object.defineProperty(exports, "useOpenWorkflow", {
|
|
42681
42708
|
enumerable: true,
|