@flamingo-stack/openframe-frontend-core 0.0.720 → 0.0.722
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/dist/{chunk-3HZ6XSZC.js → chunk-2TXGR7IK.js} +136 -59
- package/dist/{chunk-WSDT7LYL.js → chunk-3UBWDR65.js} +1 -1
- package/dist/{chunk-CMZ3QTFQ.js → chunk-4I3K6LEH.js} +24 -0
- package/dist/{chunk-4SIZCHVZ.cjs → chunk-4LY6R4TN.cjs} +126 -49
- package/dist/{chunk-2NASBO7O.js → chunk-5D2K7TFT.js} +3 -3
- package/dist/{chunk-HFEYEPOG.cjs → chunk-5K6YKRP5.cjs} +29 -29
- package/dist/{chunk-7HYEQKN6.js → chunk-65C4WHG4.js} +6 -6
- package/dist/{chunk-DOPOHO6H.cjs → chunk-6HRQLM6T.cjs} +20 -20
- package/dist/{chunk-B2N4YX66.js → chunk-6YBUQAOH.js} +1 -1
- package/dist/{chunk-GANIUMRU.js → chunk-7UZ2JZJY.js} +3 -3
- package/dist/{chunk-4HJRHEXD.cjs → chunk-ABSWD4PQ.cjs} +27 -27
- package/dist/{chunk-VYVPII4W.js → chunk-AWWLEYAU.js} +6 -6
- package/dist/{chunk-V6B2FBZK.js → chunk-BCU6UUNQ.js} +8 -8
- package/dist/{chunk-LO3KCLEF.js → chunk-BUDZWXRG.js} +4 -4
- package/dist/{chunk-WBNAEYTQ.cjs → chunk-BYUIFT7Q.cjs} +6 -6
- package/dist/{chunk-KSGMZHVV.cjs → chunk-DFM572VH.cjs} +2 -2
- package/dist/{chunk-YDPKUAP4.js → chunk-DJ4IFQNQ.js} +2 -0
- package/dist/{chunk-DYDDAA6O.cjs → chunk-DWSBTGKT.cjs} +816 -798
- package/dist/{chunk-PSMJYZMV.js → chunk-DX3W7DPC.js} +2 -2
- package/dist/{chunk-PXAKSPLZ.js → chunk-E7NIZXDT.js} +20 -8
- package/dist/{chunk-6W46LVK4.js → chunk-ETQVXIYW.js} +6 -6
- package/dist/{chunk-742BGXNX.js → chunk-EWED6ISQ.js} +1 -1
- package/dist/{chunk-Q5327DXK.js → chunk-F33RMJOL.js} +11 -11
- package/dist/{chunk-RZQGIWK3.cjs → chunk-FDWYBJYD.cjs} +8 -8
- package/dist/{chunk-QF464PPL.cjs → chunk-GAFK3WNT.cjs} +62 -62
- package/dist/{chunk-6BLN5WDS.cjs → chunk-GYSTZD6X.cjs} +40 -40
- package/dist/{chunk-TORERAXD.js → chunk-HA2ASGJM.js} +6 -6
- package/dist/{chunk-KT3U3ZRP.cjs → chunk-HP4UUBJC.cjs} +16 -16
- package/dist/{chunk-DFQYAYBH.cjs → chunk-HQIOMFJH.cjs} +2 -0
- package/dist/{chunk-AZRI4XBP.js → chunk-I3UUMRO7.js} +1 -1
- package/dist/{chunk-VYZCKY5K.js → chunk-IF72N4PE.js} +7 -7
- package/dist/{chunk-RFUOIQSG.cjs → chunk-IITZ6JSC.cjs} +37 -37
- package/dist/{chunk-7LPR4RZ3.cjs → chunk-JQ55FFIK.cjs} +31 -31
- package/dist/{chunk-GQ7JJUIT.cjs → chunk-K2JUJ37D.cjs} +25 -1
- package/dist/{chunk-URW23QUM.js → chunk-K76ACBR3.js} +2 -2
- package/dist/{chunk-7IOU6BJE.js → chunk-KBPGSPXQ.js} +2387 -2369
- package/dist/{chunk-ILNN6QRW.js → chunk-KS3YLYVL.js} +4 -4
- package/dist/{chunk-2C72EWQR.cjs → chunk-KWBH63GV.cjs} +26 -26
- package/dist/{chunk-IYVFSLWJ.js → chunk-KZQO5EJQ.js} +4 -0
- package/dist/{chunk-IMTY3GRR.cjs → chunk-LV6UJD2K.cjs} +2 -2
- package/dist/{chunk-UWJMDFDO.cjs → chunk-MJ4SXOG2.cjs} +28 -28
- package/dist/{chunk-VF2CJXZ2.cjs → chunk-NFABAOMD.cjs} +77 -79
- package/dist/{chunk-B5LNX4GZ.js → chunk-NMGWNUKB.js} +3 -3
- package/dist/{chunk-RDP5UZXQ.cjs → chunk-P7Y626YJ.cjs} +370 -358
- package/dist/{chunk-P3JMAMHP.js → chunk-REETLEL5.js} +1 -1
- package/dist/{chunk-FFT56TYB.cjs → chunk-RUZIICXT.cjs} +2 -2
- package/dist/{chunk-ISCZ6UNF.cjs → chunk-RVQV6J5K.cjs} +75 -75
- package/dist/{chunk-VBHGJFA3.js → chunk-SZ3CBFSH.js} +13 -13
- package/dist/{chunk-O3MKJU6A.js → chunk-SZF7ENIW.js} +4 -4
- package/dist/{chunk-F5BPGWGT.cjs → chunk-TKFTWM3V.cjs} +5 -1
- package/dist/{chunk-YK3X74SF.js → chunk-UYMTAFHG.js} +6 -8
- package/dist/{chunk-DHNJSQGX.cjs → chunk-VC7COEWF.cjs} +105 -105
- package/dist/{chunk-XW3Q623Q.js → chunk-VSYQJCNR.js} +2 -2
- package/dist/{chunk-IL3ZWNM2.cjs → chunk-VU7RU3LL.cjs} +7 -7
- package/dist/{chunk-XSM46FHD.cjs → chunk-VV5INIQB.cjs} +3 -3
- package/dist/{chunk-HTS46FFY.cjs → chunk-VYHCN5NU.cjs} +16 -16
- package/dist/{chunk-ZPHOQDAE.js → chunk-WY4SLTMZ.js} +3 -3
- package/dist/{chunk-5XDCCQ4A.cjs → chunk-XJYAUIOL.cjs} +13 -13
- package/dist/{chunk-ZHD3F2TH.cjs → chunk-XR7NVJXS.cjs} +13 -13
- package/dist/{chunk-EVMM3JE6.cjs → chunk-ZHC6MDGF.cjs} +43 -43
- package/dist/{chunk-K2BYVPGR.js → chunk-ZMHP4Y6M.js} +5 -5
- package/dist/{chunk-NYSMDM4J.cjs → chunk-ZSOFLPQN.cjs} +7 -7
- package/dist/{cloud-tenants-RKQRSDNE.js → cloud-tenants-4Z36KWSX.js} +14 -14
- package/dist/{cloud-tenants-UQZASXUB.cjs → cloud-tenants-5NIC5VXK.cjs} +15 -15
- package/dist/components/calendar.cjs +4 -4
- package/dist/components/calendar.js +1 -1
- package/dist/components/case-studies/index.cjs +29 -29
- package/dist/components/case-studies/index.js +15 -15
- package/dist/components/chat/index.cjs +10 -10
- package/dist/components/chat/index.js +9 -9
- package/dist/components/contact/index.cjs +16 -16
- package/dist/components/contact/index.js +15 -15
- package/dist/components/docs/index.cjs +19 -19
- package/dist/components/docs/index.js +18 -18
- package/dist/components/embeds/index.cjs +16 -16
- package/dist/components/embeds/index.js +15 -15
- package/dist/components/faq/index.cjs +16 -16
- package/dist/components/faq/index.js +15 -15
- package/dist/components/features/index.cjs +15 -15
- package/dist/components/features/index.js +14 -14
- package/dist/components/features/remote-session/remote-access-request-card.d.ts.map +1 -1
- package/dist/components/help-center-pages/download-apps-page.d.ts +68 -0
- package/dist/components/help-center-pages/download-apps-page.d.ts.map +1 -0
- package/dist/components/help-center-pages/index.cjs +347 -117
- package/dist/components/help-center-pages/index.d.ts +1 -0
- package/dist/components/help-center-pages/index.d.ts.map +1 -1
- package/dist/components/help-center-pages/index.js +260 -30
- package/dist/components/index.cjs +87 -85
- package/dist/components/index.js +30 -28
- package/dist/components/meeting-scheduler/index.cjs +67 -67
- package/dist/components/meeting-scheduler/index.js +16 -16
- package/dist/components/navigation/index.cjs +18 -18
- package/dist/components/navigation/index.js +17 -17
- package/dist/components/onboarding-guides/index.cjs +18 -18
- package/dist/components/onboarding-guides/index.js +17 -17
- package/dist/components/product-demo/index.cjs +8 -8
- package/dist/components/product-demo/index.js +8 -8
- package/dist/components/related-content/index.cjs +7 -7
- package/dist/components/related-content/index.js +6 -6
- package/dist/components/tickets/index.cjs +20 -20
- package/dist/components/tickets/index.js +19 -19
- package/dist/components/ui/button/button.d.ts.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +11 -11
- package/dist/components/ui/file-manager/index.js +1 -1
- package/dist/components/ui/index.cjs +17 -15
- package/dist/components/ui/index.d.ts +1 -0
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +16 -14
- package/dist/components/ui/mobile-app-qr.d.ts +21 -0
- package/dist/components/ui/mobile-app-qr.d.ts.map +1 -0
- package/dist/components/ui/store-badges.d.ts +7 -4
- package/dist/components/ui/store-badges.d.ts.map +1 -1
- package/dist/{devices-U3Y4IIW4.js → devices-2TK3LAKM.js} +14 -14
- package/dist/{devices-7Q2EUM7B.cjs → devices-7IKT72DK.cjs} +16 -16
- package/dist/hooks/index.cjs +9 -3
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +8 -2
- package/dist/hooks/use-downloads.d.ts +41 -0
- package/dist/hooks/use-downloads.d.ts.map +1 -0
- package/dist/index.cjs +52 -20
- package/dist/index.js +50 -18
- package/dist/{knowledge-NST53EXE.js → knowledge-3GJ4MU3V.js} +14 -14
- package/dist/{knowledge-UYIZ74MA.cjs → knowledge-HYSEV35H.cjs} +16 -16
- package/dist/{logs-JVTRG232.js → logs-TATVM62H.js} +14 -14
- package/dist/{logs-HTH7X7KV.cjs → logs-ZX3NADQC.cjs} +24 -24
- package/dist/{policies-MXK2HB4W.cjs → policies-J4FSDKPI.cjs} +19 -19
- package/dist/{policies-DTXTRK56.js → policies-MRRKLF4Q.js} +14 -14
- package/dist/{remote-session-LAJZKQBN.js → remote-session-WCLR47RN.js} +6 -6
- package/dist/{remote-session-SKKF4PBV.cjs → remote-session-Z2YCUPHU.cjs} +8 -8
- package/dist/{software-update-P6BSM6HX.cjs → software-update-CXUBWYD2.cjs} +19 -19
- package/dist/{software-update-6RHMPM3W.js → software-update-KM46WUVQ.js} +14 -14
- package/dist/{tickets-board-BHLPAVNJ.cjs → tickets-board-R5OQSEEC.cjs} +10 -10
- package/dist/{tickets-board-PYDNELSK.js → tickets-board-U3RF3AO4.js} +5 -5
- package/dist/types/downloads.d.ts +83 -0
- package/dist/types/downloads.d.ts.map +1 -0
- package/dist/types/index.cjs +24 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +16 -1
- package/dist/utils/format.d.ts +11 -0
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/index.cjs +15 -0
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +13 -1
- package/dist/utils/mobile-app.cjs +37 -0
- package/dist/utils/mobile-app.d.ts +23 -0
- package/dist/utils/mobile-app.d.ts.map +1 -0
- package/dist/utils/mobile-app.js +34 -0
- package/package.json +7 -1
- package/src/components/features/remote-session/remote-access-request-card.tsx +6 -6
- package/src/components/help-center-pages/download-apps-page.tsx +388 -0
- package/src/components/help-center-pages/index.ts +1 -0
- package/src/components/ui/button/button.tsx +3 -0
- package/src/components/ui/index.ts +1 -0
- package/src/components/ui/mobile-app-qr.tsx +35 -0
- package/src/components/ui/store-badges.tsx +17 -9
- package/src/hooks/index.ts +1 -0
- package/src/hooks/use-downloads.ts +138 -0
- package/src/types/downloads.ts +99 -0
- package/src/types/index.ts +1 -0
- package/src/utils/format.ts +15 -0
- package/src/utils/index.ts +3 -1
- package/src/utils/mobile-app.ts +34 -0
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunk5K6YKRP5cjs = require('./chunk-5K6YKRP5.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
var
|
|
11
|
+
var _chunk6HRQLM6Tcjs = require('./chunk-6HRQLM6T.cjs');
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
var
|
|
15
|
+
var _chunkZSOFLPQNcjs = require('./chunk-ZSOFLPQN.cjs');
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _chunkVV5INIQBcjs = require('./chunk-VV5INIQB.cjs');
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
|
|
@@ -31,11 +31,11 @@ var _chunkXSM46FHDcjs = require('./chunk-XSM46FHD.cjs');
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
|
|
34
|
-
var
|
|
34
|
+
var _chunkDWSBTGKTcjs = require('./chunk-DWSBTGKT.cjs');
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
var
|
|
38
|
+
var _chunk4LY6R4TNcjs = require('./chunk-4LY6R4TN.cjs');
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
|
|
@@ -48,17 +48,17 @@ var _chunk4SIZCHVZcjs = require('./chunk-4SIZCHVZ.cjs');
|
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
|
|
51
|
-
var
|
|
51
|
+
var _chunkP7Y626YJcjs = require('./chunk-P7Y626YJ.cjs');
|
|
52
52
|
|
|
53
53
|
|
|
54
|
-
var
|
|
54
|
+
var _chunkHP4UUBJCcjs = require('./chunk-HP4UUBJC.cjs');
|
|
55
55
|
|
|
56
56
|
|
|
57
|
-
var
|
|
57
|
+
var _chunkFDWYBJYDcjs = require('./chunk-FDWYBJYD.cjs');
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
|
|
61
|
-
var
|
|
61
|
+
var _chunkK2JUJ37Dcjs = require('./chunk-K2JUJ37D.cjs');
|
|
62
62
|
|
|
63
63
|
|
|
64
64
|
|
|
@@ -69,10 +69,10 @@ var _chunk7DNL734Scjs = require('./chunk-7DNL734S.cjs');
|
|
|
69
69
|
|
|
70
70
|
|
|
71
71
|
|
|
72
|
-
var
|
|
72
|
+
var _chunkIITZ6JSCcjs = require('./chunk-IITZ6JSC.cjs');
|
|
73
73
|
|
|
74
74
|
|
|
75
|
-
var
|
|
75
|
+
var _chunkTKFTWM3Vcjs = require('./chunk-TKFTWM3V.cjs');
|
|
76
76
|
|
|
77
77
|
|
|
78
78
|
|
|
@@ -91,7 +91,7 @@ var _chunkULWVKHSIcjs = require('./chunk-ULWVKHSI.cjs');
|
|
|
91
91
|
var _chunkXXBLN4BPcjs = require('./chunk-XXBLN4BP.cjs');
|
|
92
92
|
|
|
93
93
|
|
|
94
|
-
var
|
|
94
|
+
var _chunkHQIOMFJHcjs = require('./chunk-HQIOMFJH.cjs');
|
|
95
95
|
|
|
96
96
|
|
|
97
97
|
var _chunkCPA2CKRZcjs = require('./chunk-CPA2CKRZ.cjs');
|
|
@@ -122,7 +122,7 @@ var TicketActionFailure = class extends Error {
|
|
|
122
122
|
function useTicketActions(options) {
|
|
123
123
|
const queryClient = _reactquery.useQueryClient.call(void 0, );
|
|
124
124
|
const ticketActionEndpoint = _nullishCoalesce(_chunkUJ7AXHRZcjs.useRequiredChatRuntime.call(void 0, ).endpoints.ticketActionUrl, () => ( TICKET_ACTION_ENDPOINT));
|
|
125
|
-
const ticketLive =
|
|
125
|
+
const ticketLive = _chunkVV5INIQBcjs.useOptionalTicketLive.call(void 0, );
|
|
126
126
|
const notifyTicketCreated = _optionalChain([ticketLive, 'optionalAccess', _2 => _2.notifyTicketCreated]);
|
|
127
127
|
const { prependOptimistic, removeOptimistic, removeTicketFromCache, toast: toast2, onSupportSystemDown } = options;
|
|
128
128
|
const formInFlightRef = _react.useRef.call(void 0, null);
|
|
@@ -283,10 +283,10 @@ function useTicketActions(options) {
|
|
|
283
283
|
..._optionalChain([input, 'access', _3 => _3.attachments, 'optionalAccess', _4 => _4.length]) ? { attachments: input.attachments } : {}
|
|
284
284
|
});
|
|
285
285
|
if (result.mirror_synced === false) {
|
|
286
|
-
toast2(
|
|
286
|
+
toast2(_chunkVV5INIQBcjs.TOAST_COPY.open_mirror_pending);
|
|
287
287
|
watchMirrorSync(placeholderId, result.ticket_id);
|
|
288
288
|
} else {
|
|
289
|
-
toast2(
|
|
289
|
+
toast2(_chunkVV5INIQBcjs.TOAST_COPY.open_success);
|
|
290
290
|
await queryClient.invalidateQueries({ queryKey: ["tickets"] });
|
|
291
291
|
removeOptimistic(placeholderId);
|
|
292
292
|
}
|
|
@@ -372,7 +372,7 @@ function useTicketActions(options) {
|
|
|
372
372
|
...hasText ? { content_addendum: trimmed } : {},
|
|
373
373
|
...hasFiles ? { attachments } : {}
|
|
374
374
|
},
|
|
375
|
-
|
|
375
|
+
_chunkVV5INIQBcjs.TOAST_COPY.comment_success,
|
|
376
376
|
"send message"
|
|
377
377
|
);
|
|
378
378
|
if (ok) {
|
|
@@ -395,13 +395,13 @@ function useTicketActions(options) {
|
|
|
395
395
|
status: "CLOSED",
|
|
396
396
|
..._optionalChain([resolution, 'optionalAccess', _6 => _6.trim, 'call', _7 => _7()]) ? { resolution: resolution.trim() } : {}
|
|
397
397
|
},
|
|
398
|
-
|
|
398
|
+
_chunkVV5INIQBcjs.TOAST_COPY.close_success,
|
|
399
399
|
"close ticket"
|
|
400
400
|
),
|
|
401
401
|
[updateTicket]
|
|
402
402
|
);
|
|
403
403
|
const reopenTicket = _react.useCallback.call(void 0,
|
|
404
|
-
(ticket) => updateTicket(ticket, { status: "OPEN" },
|
|
404
|
+
(ticket) => updateTicket(ticket, { status: "OPEN" }, _chunkVV5INIQBcjs.TOAST_COPY.reopen_success, "reopen ticket"),
|
|
405
405
|
[updateTicket]
|
|
406
406
|
);
|
|
407
407
|
return _react.useMemo.call(void 0,
|
|
@@ -616,14 +616,14 @@ function useTicketsList(filters) {
|
|
|
616
616
|
// src/components/tickets/ticket-open-form.tsx
|
|
617
617
|
|
|
618
618
|
var _jsxruntime = require('react/jsx-runtime');
|
|
619
|
-
var COUNTER_VISIBLE_AT = Math.floor(
|
|
619
|
+
var COUNTER_VISIBLE_AT = Math.floor(_chunkVV5INIQBcjs.TICKET_TEXT_MAX_CHARS * 0.8);
|
|
620
620
|
function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
|
|
621
621
|
const [subject, setSubject] = _react.useState.call(void 0, "");
|
|
622
622
|
const [content, setContent] = _react.useState.call(void 0, "");
|
|
623
|
-
const { attachments, readyAttachments, hasInflightUploads, addFiles, removeAttachment, clear } =
|
|
623
|
+
const { attachments, readyAttachments, hasInflightUploads, addFiles, removeAttachment, clear } = _chunkP7Y626YJcjs.useChatAttachments.call(void 0, );
|
|
624
624
|
const trimmedSubject = subject.trim();
|
|
625
625
|
const trimmedContent = content.trim();
|
|
626
|
-
const overCap = content.length >
|
|
626
|
+
const overCap = content.length > _chunkVV5INIQBcjs.TICKET_TEXT_MAX_CHARS;
|
|
627
627
|
const showCounter = content.length >= COUNTER_VISIBLE_AT;
|
|
628
628
|
const canSubmit = !isSubmitting && !supportSystemDown && !hasInflightUploads && trimmedSubject.length > 0 && trimmedContent.length > 0 && !overCap;
|
|
629
629
|
const handleSubmit = async (e) => {
|
|
@@ -640,7 +640,7 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
|
|
|
640
640
|
clear();
|
|
641
641
|
}
|
|
642
642
|
};
|
|
643
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
643
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIITZ6JSCcjs.Card, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: handleSubmit, className: "flex flex-col gap-6 md:flex-row", ..._chunkP7Y626YJcjs.HUBSPOT_DO_NOT_COLLECT_FORM_PROPS, children: [
|
|
644
644
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-w-0 flex-1 md:max-w-md", children: [
|
|
645
645
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "mb-2 text-ods-text-primary text-h2", children: "Need Support?" }),
|
|
646
646
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: "Can't find what you're looking for? Submit a support ticket below \u2014 we'll follow up shortly." }),
|
|
@@ -665,7 +665,7 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
|
|
|
665
665
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
|
|
666
666
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "label", { htmlFor: "ticket-content", className: "mb-1 block text-ods-text-primary text-h6", children: "Your Message" }),
|
|
667
667
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
668
|
-
|
|
668
|
+
_chunkDWSBTGKTcjs.Textarea,
|
|
669
669
|
{
|
|
670
670
|
id: "ticket-content",
|
|
671
671
|
placeholder: "Describe your issue or question in detail...",
|
|
@@ -679,11 +679,11 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
|
|
|
679
679
|
showCounter && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: `mt-1 text-right text-h6 ${overCap ? "text-ods-error" : "text-ods-text-secondary"}`, children: [
|
|
680
680
|
content.length,
|
|
681
681
|
"/",
|
|
682
|
-
|
|
682
|
+
_chunkVV5INIQBcjs.TICKET_TEXT_MAX_CHARS
|
|
683
683
|
] })
|
|
684
684
|
] }),
|
|
685
685
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
686
|
-
|
|
686
|
+
_chunkP7Y626YJcjs.ChatAttachmentChipStrip,
|
|
687
687
|
{
|
|
688
688
|
attachments,
|
|
689
689
|
onRemove: removeAttachment,
|
|
@@ -692,7 +692,7 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
|
|
|
692
692
|
),
|
|
693
693
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between gap-3", children: [
|
|
694
694
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
695
|
-
|
|
695
|
+
_chunkP7Y626YJcjs.ChatAttachmentAddButton,
|
|
696
696
|
{
|
|
697
697
|
attachmentsEnabled: !supportSystemDown,
|
|
698
698
|
attachmentsCount: attachments.length,
|
|
@@ -700,7 +700,7 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
|
|
|
700
700
|
disabled: isSubmitting
|
|
701
701
|
}
|
|
702
702
|
),
|
|
703
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
703
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHQIOMFJHcjs.Button, { type: "submit", disabled: !canSubmit, loading: isSubmitting, children: "Open Ticket" })
|
|
704
704
|
] })
|
|
705
705
|
] })
|
|
706
706
|
] }) });
|
|
@@ -722,7 +722,7 @@ var _usesticktobottom = require('use-stick-to-bottom');
|
|
|
722
722
|
|
|
723
723
|
var LIST_ENGAGEMENTS_ENDPOINT = "/api/chat/agent/list-engagements";
|
|
724
724
|
function useTicketEngagements(externalTicketId, enabled = true) {
|
|
725
|
-
const identity =
|
|
725
|
+
const identity = _chunkP7Y626YJcjs.useChatIdentity.call(void 0, );
|
|
726
726
|
const identityKey = _nullishCoalesce(_optionalChain([identity, 'access', _21 => _21.user, 'optionalAccess', _22 => _22.email]), () => ( "anon"));
|
|
727
727
|
const listEngagementsEndpoint = _nullishCoalesce(_chunkUJ7AXHRZcjs.useRequiredChatRuntime.call(void 0, ).endpoints.listEngagementsUrl, () => ( LIST_ENGAGEMENTS_ENDPOINT));
|
|
728
728
|
const fetchable = enabled && !!externalTicketId && !externalTicketId.startsWith("temp-");
|
|
@@ -795,7 +795,7 @@ function TicketLinkedDeliveryCard({ clickup, className }) {
|
|
|
795
795
|
dateClosed: clickup.date_closed,
|
|
796
796
|
clickupUrl: _nullishCoalesce(clickup.clickup_url, () => ( ""))
|
|
797
797
|
};
|
|
798
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `${
|
|
798
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `${_chunkIITZ6JSCcjs.CONTENT_CARD_SKELETON_FRAME_CLASS} ${_nullishCoalesce(className, () => ( ""))}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6HRQLM6Tcjs.DeliveryRow, { item, href: clickup.delivery_href, caption: "Linked delivery" }) });
|
|
799
799
|
}
|
|
800
800
|
|
|
801
801
|
// src/components/tickets/ticket-reply-composer.tsx
|
|
@@ -810,7 +810,7 @@ function TicketReplyComposer({
|
|
|
810
810
|
}) {
|
|
811
811
|
const [resolution, setResolution] = _react.useState.call(void 0, "");
|
|
812
812
|
const [closeDialogOpen, setCloseDialogOpen] = _react.useState.call(void 0, false);
|
|
813
|
-
const attachments =
|
|
813
|
+
const attachments = _chunkP7Y626YJcjs.useChatAttachments.call(void 0, );
|
|
814
814
|
const { readyAttachments, clear: clearAttachments } = attachments;
|
|
815
815
|
const ticketRef = { id: ticket.id, external_id: ticket.external_id };
|
|
816
816
|
const hasReadyFiles = readyAttachments.length > 0;
|
|
@@ -831,7 +831,7 @@ function TicketReplyComposer({
|
|
|
831
831
|
const disabled = busy || supportSystemDown;
|
|
832
832
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2", children: [
|
|
833
833
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
834
|
-
|
|
834
|
+
_chunkP7Y626YJcjs.ChatAttachmentChipStrip,
|
|
835
835
|
{
|
|
836
836
|
attachments: attachments.attachments,
|
|
837
837
|
onRemove: attachments.removeAttachment,
|
|
@@ -840,7 +840,7 @@ function TicketReplyComposer({
|
|
|
840
840
|
}
|
|
841
841
|
),
|
|
842
842
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
843
|
-
|
|
843
|
+
_chunkFDWYBJYDcjs.ChatInput,
|
|
844
844
|
{
|
|
845
845
|
fullWidth: true,
|
|
846
846
|
autoFocus: true,
|
|
@@ -848,13 +848,13 @@ function TicketReplyComposer({
|
|
|
848
848
|
sending: busy || attachments.hasInflightUploads,
|
|
849
849
|
disabled: supportSystemDown,
|
|
850
850
|
allowEmptySend: hasReadyFiles,
|
|
851
|
-
maxLength:
|
|
851
|
+
maxLength: _chunkVV5INIQBcjs.TICKET_TEXT_MAX_CHARS,
|
|
852
852
|
onSend: handleSend
|
|
853
853
|
}
|
|
854
854
|
),
|
|
855
855
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full items-center gap-2", children: [
|
|
856
856
|
!supportSystemDown && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
857
|
-
|
|
857
|
+
_chunkP7Y626YJcjs.ChatAttachmentAddButton,
|
|
858
858
|
{
|
|
859
859
|
attachmentsEnabled: true,
|
|
860
860
|
attachmentsCount: attachments.attachments.length,
|
|
@@ -865,7 +865,7 @@ function TicketReplyComposer({
|
|
|
865
865
|
),
|
|
866
866
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0 flex-1" }),
|
|
867
867
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
868
|
-
|
|
868
|
+
_chunkHQIOMFJHcjs.Button,
|
|
869
869
|
{
|
|
870
870
|
type: "button",
|
|
871
871
|
variant: "transparent",
|
|
@@ -877,25 +877,25 @@ function TicketReplyComposer({
|
|
|
877
877
|
}
|
|
878
878
|
)
|
|
879
879
|
] }),
|
|
880
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
881
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
882
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
883
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
880
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDWSBTGKTcjs.AlertDialog, { open: closeDialogOpen, onOpenChange: setCloseDialogOpen, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkDWSBTGKTcjs.AlertDialogContent, { className: "border-ods-border bg-ods-card", children: [
|
|
881
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkDWSBTGKTcjs.AlertDialogHeader, { children: [
|
|
882
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDWSBTGKTcjs.AlertDialogTitle, { className: "text-ods-text-primary", children: "Close this ticket?" }),
|
|
883
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDWSBTGKTcjs.AlertDialogDescription, { className: "text-ods-text-secondary", children: "Add an optional resolution note below. You can reopen the ticket later if needed." })
|
|
884
884
|
] }),
|
|
885
885
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
886
|
-
|
|
886
|
+
_chunkDWSBTGKTcjs.Textarea,
|
|
887
887
|
{
|
|
888
888
|
value: resolution,
|
|
889
889
|
onChange: (e) => setResolution(e.target.value),
|
|
890
890
|
placeholder: "Resolution (optional)",
|
|
891
891
|
rows: 3,
|
|
892
|
-
maxLength:
|
|
892
|
+
maxLength: _chunkVV5INIQBcjs.TICKET_TEXT_MAX_CHARS,
|
|
893
893
|
className: "mt-2"
|
|
894
894
|
}
|
|
895
895
|
),
|
|
896
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
896
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkDWSBTGKTcjs.AlertDialogFooter, { children: [
|
|
897
897
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
898
|
-
|
|
898
|
+
_chunkDWSBTGKTcjs.AlertDialogCancel,
|
|
899
899
|
{
|
|
900
900
|
disabled: busy,
|
|
901
901
|
className: "border-ods-border bg-transparent text-ods-text-primary hover:bg-ods-border",
|
|
@@ -903,7 +903,7 @@ function TicketReplyComposer({
|
|
|
903
903
|
}
|
|
904
904
|
),
|
|
905
905
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
906
|
-
|
|
906
|
+
_chunkDWSBTGKTcjs.AlertDialogAction,
|
|
907
907
|
{
|
|
908
908
|
onClick: () => void confirmClose(),
|
|
909
909
|
disabled: busy,
|
|
@@ -965,10 +965,10 @@ var TICKET_FEED_HEIGHT = "h-[60vh] md:h-[420px]";
|
|
|
965
965
|
var TICKET_FEED_INNER = "flex flex-col gap-4 md:gap-6 px-4 md:px-6 py-4 md:py-6";
|
|
966
966
|
var TICKET_FEED_SKELETON_ROWS = 6;
|
|
967
967
|
function TicketTimelinePanel({ ticket }) {
|
|
968
|
-
const identity =
|
|
969
|
-
const externalId =
|
|
968
|
+
const identity = _chunkP7Y626YJcjs.useChatIdentity.call(void 0, );
|
|
969
|
+
const externalId = _chunkVV5INIQBcjs.isOptimistic.call(void 0, ticket) ? null : ticket.external_id;
|
|
970
970
|
const { engagements, isLoading } = useTicketEngagements(externalId, !!externalId);
|
|
971
|
-
const live =
|
|
971
|
+
const live = _chunkVV5INIQBcjs.useOptionalTicketLive.call(void 0, );
|
|
972
972
|
const setOpenTicketId = _optionalChain([live, 'optionalAccess', _25 => _25.setOpenTicketId]);
|
|
973
973
|
const markRead = _optionalChain([live, 'optionalAccess', _26 => _26.markRead]);
|
|
974
974
|
const markReadDebounceRef = _react.useRef.call(void 0, null);
|
|
@@ -992,7 +992,7 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
992
992
|
markReadDebounceRef.current = setTimeout(() => {
|
|
993
993
|
markReadDebounceRef.current = null;
|
|
994
994
|
void markRead(externalId);
|
|
995
|
-
},
|
|
995
|
+
}, _chunkVV5INIQBcjs.TICKET_MARK_READ_DEBOUNCE_MS);
|
|
996
996
|
}, [engagementsCount, externalId, markRead]);
|
|
997
997
|
const { scrollRef, contentRef } = _usesticktobottom.useStickToBottom.call(void 0, { initial: "instant", resize: "smooth" });
|
|
998
998
|
const bodyTurns = ticket.body ? ticket.body.split(TURN_SEPARATOR_RE).map((t) => t.trim()).filter(Boolean) : [];
|
|
@@ -1007,11 +1007,11 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
1007
1007
|
const customerName = (isViewerTheCustomer ? viewerName : null) || ticketCustomerName || viewerName || _optionalChain([identity, 'access', _40 => _40.user, 'optionalAccess', _41 => _41.email]) || "You";
|
|
1008
1008
|
const customerAvatar = isViewerTheCustomer ? _nullishCoalesce(_optionalChain([identity, 'access', _42 => _42.user, 'optionalAccess', _43 => _43.avatarUrl]), () => ( void 0)) : void 0;
|
|
1009
1009
|
if (isLoading) {
|
|
1010
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `${TICKET_FEED_FRAME} ${TICKET_FEED_HEIGHT}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: TICKET_FEED_INNER, children: Array.from({ length: TICKET_FEED_SKELETON_ROWS }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1010
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `${TICKET_FEED_FRAME} ${TICKET_FEED_HEIGHT}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: TICKET_FEED_INNER, children: Array.from({ length: TICKET_FEED_SKELETON_ROWS }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP7Y626YJcjs.ChatMessageRowSkeleton, {}, i)) }) });
|
|
1011
1011
|
}
|
|
1012
1012
|
if (bodyTurns.length === 0 && engagements.length === 0) {
|
|
1013
1013
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1014
|
-
|
|
1014
|
+
_chunkZSOFLPQNcjs.EmptyState,
|
|
1015
1015
|
{
|
|
1016
1016
|
type: "generic",
|
|
1017
1017
|
title: "No conversation yet",
|
|
@@ -1026,7 +1026,7 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
1026
1026
|
const isResolution = turn.startsWith("[Resolution]");
|
|
1027
1027
|
const text = isResolution ? turn.replace(/^\[Resolution\]\s*/, "") : turn;
|
|
1028
1028
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1029
|
-
|
|
1029
|
+
_chunkP7Y626YJcjs.ChatMessageRow,
|
|
1030
1030
|
{
|
|
1031
1031
|
displayName: customerName,
|
|
1032
1032
|
avatarUrl: customerAvatar,
|
|
@@ -1055,13 +1055,13 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
1055
1055
|
}
|
|
1056
1056
|
const engAttachments = mapEngagementAttachments(eng.attachments);
|
|
1057
1057
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1058
|
-
|
|
1058
|
+
_chunkP7Y626YJcjs.ChatMessageRow,
|
|
1059
1059
|
{
|
|
1060
1060
|
displayName: author,
|
|
1061
1061
|
avatarUrl: avatarSrc,
|
|
1062
|
-
timeLabel: eng.createdAt ?
|
|
1062
|
+
timeLabel: eng.createdAt ? _chunkHP4UUBJCcjs.formatRelativeTime.call(void 0, eng.createdAt) : null,
|
|
1063
1063
|
body: stripAttachmentsPreamble(_nullishCoalesce(eng.body, () => ( ""))),
|
|
1064
|
-
footer: engAttachments.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1064
|
+
footer: engAttachments.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDWSBTGKTcjs.TicketAttachmentsList, { attachments: engAttachments, size: "compact" }) }) : null
|
|
1065
1065
|
},
|
|
1066
1066
|
eng.id
|
|
1067
1067
|
);
|
|
@@ -1102,7 +1102,7 @@ function ReopenAction({
|
|
|
1102
1102
|
void await onReopen(ticketRef);
|
|
1103
1103
|
};
|
|
1104
1104
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex justify-end", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1105
|
-
|
|
1105
|
+
_chunkHQIOMFJHcjs.Button,
|
|
1106
1106
|
{
|
|
1107
1107
|
type: "button",
|
|
1108
1108
|
variant: "outline",
|
|
@@ -1124,7 +1124,7 @@ function ReplyFailureBanner({ error, onDismiss }) {
|
|
|
1124
1124
|
children: [
|
|
1125
1125
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "font-medium leading-snug", children: error.message }),
|
|
1126
1126
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1127
|
-
|
|
1127
|
+
_chunkHQIOMFJHcjs.Button,
|
|
1128
1128
|
{
|
|
1129
1129
|
type: "button",
|
|
1130
1130
|
variant: "transparent",
|
|
@@ -1146,7 +1146,7 @@ function AssignedAgentRow({ assignedOwner }) {
|
|
|
1146
1146
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary text-h5", children: "Assigned to" }),
|
|
1147
1147
|
displayLabel ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-1.5 font-medium text-ods-text-primary", children: [
|
|
1148
1148
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1149
|
-
|
|
1149
|
+
_chunkTKFTWM3Vcjs.SquareAvatar,
|
|
1150
1150
|
{
|
|
1151
1151
|
size: "sm",
|
|
1152
1152
|
variant: "round",
|
|
@@ -1174,11 +1174,11 @@ function TicketRow({
|
|
|
1174
1174
|
onActionCollapsed,
|
|
1175
1175
|
id
|
|
1176
1176
|
}) {
|
|
1177
|
-
const optimistic =
|
|
1177
|
+
const optimistic = _chunkVV5INIQBcjs.isOptimistic.call(void 0, ticket);
|
|
1178
1178
|
const rowRef = _react.useRef.call(void 0, null);
|
|
1179
1179
|
const handleClick = _react.useCallback.call(void 0, () => {
|
|
1180
1180
|
onToggle(ticket.id);
|
|
1181
|
-
|
|
1181
|
+
_chunkK2JUJ37Dcjs.scrollElementIntoView.call(void 0, rowRef.current, {
|
|
1182
1182
|
adjustTargetY: (raw) => {
|
|
1183
1183
|
if (!rowRef.current) return raw;
|
|
1184
1184
|
const expandedDrawer = document.querySelector('div[id^="ticket-drawer-"]');
|
|
@@ -1202,7 +1202,7 @@ function TicketRow({
|
|
|
1202
1202
|
// so the badge accurately reflects "Closed" with a checkmark.
|
|
1203
1203
|
statusLabel: _nullishCoalesce(ticket.pipeline_stage_label, () => ( void 0)),
|
|
1204
1204
|
category: _nullishCoalesce(ticket.customer_company, () => ( void 0)),
|
|
1205
|
-
timeAgo: ticket.hubspot_updated_at ?
|
|
1205
|
+
timeAgo: ticket.hubspot_updated_at ? _chunkHP4UUBJCcjs.formatRelativeTime.call(void 0, ticket.hubspot_updated_at) : void 0,
|
|
1206
1206
|
// Linked-work chip: surfaced whenever the ticket has a linked
|
|
1207
1207
|
// ClickUp task. Uses the linked task's own status so the chip text
|
|
1208
1208
|
// reads "Working" / "Waiting on version release" / etc. — useful
|
|
@@ -1212,7 +1212,7 @@ function TicketRow({
|
|
|
1212
1212
|
};
|
|
1213
1213
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: rowRef, id, className: "scroll-mt-24", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Collapsible, { open: expanded && !optimistic, className: "border-b border-ods-border last:border-b-0", children: [
|
|
1214
1214
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1215
|
-
|
|
1215
|
+
_chunkP7Y626YJcjs.ChatTicketItem,
|
|
1216
1216
|
{
|
|
1217
1217
|
ticket: tileData,
|
|
1218
1218
|
onClick: optimistic ? void 0 : handleClick,
|
|
@@ -1244,14 +1244,14 @@ function TicketRow({
|
|
|
1244
1244
|
|
|
1245
1245
|
// src/components/tickets/ticket-center.tsx
|
|
1246
1246
|
|
|
1247
|
-
function TicketCenter({ toast: toast2 =
|
|
1248
|
-
const identity =
|
|
1247
|
+
function TicketCenter({ toast: toast2 = _chunk4LY6R4TNcjs.toast } = {}) {
|
|
1248
|
+
const identity = _chunkP7Y626YJcjs.useChatIdentity.call(void 0, );
|
|
1249
1249
|
if (identity.isLoading) {
|
|
1250
1250
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketCenterSkeleton, {});
|
|
1251
1251
|
}
|
|
1252
1252
|
if (identity.authTier === "anon" || !_optionalChain([identity, 'access', _62 => _62.user, 'optionalAccess', _63 => _63.email])) {
|
|
1253
1253
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1254
|
-
|
|
1254
|
+
_chunkZSOFLPQNcjs.EmptyState,
|
|
1255
1255
|
{
|
|
1256
1256
|
type: "generic",
|
|
1257
1257
|
title: "Sign in to manage tickets",
|
|
@@ -1316,10 +1316,10 @@ function TicketCenterAuthed({
|
|
|
1316
1316
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 text-ods-text-secondary text-h6", children: [
|
|
1317
1317
|
lastUpdatedAt && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { children: [
|
|
1318
1318
|
"Updated ",
|
|
1319
|
-
|
|
1319
|
+
_chunkHP4UUBJCcjs.formatRelativeTime.call(void 0, new Date(lastUpdatedAt))
|
|
1320
1320
|
] }),
|
|
1321
1321
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1322
|
-
|
|
1322
|
+
_chunkHQIOMFJHcjs.Button,
|
|
1323
1323
|
{
|
|
1324
1324
|
type: "button",
|
|
1325
1325
|
variant: "transparent",
|
|
@@ -1332,22 +1332,22 @@ function TicketCenterAuthed({
|
|
|
1332
1332
|
)
|
|
1333
1333
|
] })
|
|
1334
1334
|
] }),
|
|
1335
|
-
isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketListSkeleton, {}) : merged.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1336
|
-
|
|
1335
|
+
isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketListSkeleton, {}) : merged.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIITZ6JSCcjs.Card, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1336
|
+
_chunkZSOFLPQNcjs.EmptyState,
|
|
1337
1337
|
{
|
|
1338
1338
|
type: "generic",
|
|
1339
1339
|
title: "No tickets yet",
|
|
1340
1340
|
description: "Open one above to start the conversation.",
|
|
1341
1341
|
showCTA: false
|
|
1342
1342
|
}
|
|
1343
|
-
) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1343
|
+
) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIITZ6JSCcjs.Card, { className: "overflow-hidden", children: merged.map((ticket) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1344
1344
|
TicketRow,
|
|
1345
1345
|
{
|
|
1346
|
-
id:
|
|
1346
|
+
id: _chunkP7Y626YJcjs.devSectionAnchorId.call(void 0, "ticket", ticket.external_id),
|
|
1347
1347
|
ticket,
|
|
1348
1348
|
expanded: expandedTicketId === ticket.id,
|
|
1349
1349
|
onToggle: toggleRow,
|
|
1350
|
-
busy:
|
|
1350
|
+
busy: _chunkVV5INIQBcjs.isOptimistic.call(void 0, ticket) ? false : actions.isRowBusy(ticket.id),
|
|
1351
1351
|
supportSystemDown,
|
|
1352
1352
|
onSendMessage: actions.sendMessage,
|
|
1353
1353
|
onClose: actions.closeTicket,
|
|
@@ -1361,7 +1361,7 @@ function TicketCenterAuthed({
|
|
|
1361
1361
|
}
|
|
1362
1362
|
function TicketCenterSkeleton() {
|
|
1363
1363
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6", children: [
|
|
1364
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1364
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIITZ6JSCcjs.Card, { className: "p-6", children: [
|
|
1365
1365
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCPA2CKRZcjs.Skeleton, { className: "mb-4 h-7 w-48" }),
|
|
1366
1366
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCPA2CKRZcjs.Skeleton, { className: "mb-3 h-10 w-full" }),
|
|
1367
1367
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCPA2CKRZcjs.Skeleton, { className: "h-24 w-full" })
|
|
@@ -1370,7 +1370,7 @@ function TicketCenterSkeleton() {
|
|
|
1370
1370
|
] });
|
|
1371
1371
|
}
|
|
1372
1372
|
function TicketListSkeleton() {
|
|
1373
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1373
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIITZ6JSCcjs.Card, { className: "overflow-hidden", children: [0, 1, 2].map((i) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-20 items-center gap-4 border-b border-ods-border px-4 last:border-b-0", children: [
|
|
1374
1374
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-1 flex-col gap-2", children: [
|
|
1375
1375
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCPA2CKRZcjs.Skeleton, { className: "h-4 w-2/3" }),
|
|
1376
1376
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCPA2CKRZcjs.Skeleton, { className: "h-3 w-full" })
|
|
@@ -1401,10 +1401,10 @@ function HelpCenterCard({
|
|
|
1401
1401
|
onClearReplyError,
|
|
1402
1402
|
id
|
|
1403
1403
|
}) {
|
|
1404
|
-
const optimistic =
|
|
1404
|
+
const optimistic = _chunkVV5INIQBcjs.isOptimistic.call(void 0, ticket);
|
|
1405
1405
|
const rawStatus = (_nullishCoalesce(ticket.status, () => ( "OPEN"))).toUpperCase();
|
|
1406
1406
|
const priority = (_nullishCoalesce(ticket.priority, () => ( ""))).toUpperCase();
|
|
1407
|
-
const relativeUpdated = ticket.hubspot_updated_at ?
|
|
1407
|
+
const relativeUpdated = ticket.hubspot_updated_at ? _chunkHP4UUBJCcjs.formatRelativeTime.call(void 0, ticket.hubspot_updated_at) : "recently";
|
|
1408
1408
|
const title = (ticket.subject || "").trim() || "(untitled)";
|
|
1409
1409
|
const subtitle = `UPDATED ${relativeUpdated}, #${ticket.external_id || "\u2014"}${ticket.pipeline_stage_label ? `, ${ticket.pipeline_stage_label}` : ""}`;
|
|
1410
1410
|
const description = _nullishCoalesce(_nullishCoalesce(ticket.preview, () => ( ticket.body)), () => ( ""));
|
|
@@ -1417,17 +1417,17 @@ function HelpCenterCard({
|
|
|
1417
1417
|
_react.useEffect.call(void 0, () => {
|
|
1418
1418
|
if (!isExpanded) return void 0;
|
|
1419
1419
|
const raf = requestAnimationFrame(() => {
|
|
1420
|
-
|
|
1421
|
-
headerOffset:
|
|
1420
|
+
_chunkK2JUJ37Dcjs.scrollElementIntoView.call(void 0, rowRef.current, {
|
|
1421
|
+
headerOffset: _chunkK2JUJ37Dcjs.STICKY_HEADER_OFFSET_PX
|
|
1422
1422
|
});
|
|
1423
1423
|
});
|
|
1424
1424
|
return () => cancelAnimationFrame(raf);
|
|
1425
1425
|
}, [isExpanded]);
|
|
1426
|
-
const live =
|
|
1426
|
+
const live = _chunkVV5INIQBcjs.useOptionalTicketLive.call(void 0, );
|
|
1427
1427
|
const unreadCount = !optimistic && ticket.external_id && _optionalChain([live, 'optionalAccess', _64 => _64.unreadByTicket, 'access', _65 => _65[ticket.external_id]]) || 0;
|
|
1428
1428
|
const rightBadges = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
1429
1429
|
unreadCount > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1430
|
-
|
|
1430
|
+
_chunkIITZ6JSCcjs.StatusBadge,
|
|
1431
1431
|
{
|
|
1432
1432
|
text: `${unreadCount} NEW`,
|
|
1433
1433
|
colorScheme: "warning",
|
|
@@ -1436,16 +1436,16 @@ function HelpCenterCard({
|
|
|
1436
1436
|
}
|
|
1437
1437
|
),
|
|
1438
1438
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1439
|
-
|
|
1439
|
+
_chunkIITZ6JSCcjs.StatusBadge,
|
|
1440
1440
|
{
|
|
1441
1441
|
text: rawStatus,
|
|
1442
|
-
colorScheme:
|
|
1442
|
+
colorScheme: _chunkIITZ6JSCcjs.getStatusColorScheme.call(void 0, rawStatus),
|
|
1443
1443
|
variant: "card",
|
|
1444
1444
|
className: "border border-ods-border"
|
|
1445
1445
|
}
|
|
1446
1446
|
),
|
|
1447
1447
|
priority && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1448
|
-
|
|
1448
|
+
_chunkIITZ6JSCcjs.StatusBadge,
|
|
1449
1449
|
{
|
|
1450
1450
|
text: priority,
|
|
1451
1451
|
colorScheme: mapPriorityScheme(priority),
|
|
@@ -1459,7 +1459,7 @@ function HelpCenterCard({
|
|
|
1459
1459
|
{
|
|
1460
1460
|
ref: rowRef,
|
|
1461
1461
|
id,
|
|
1462
|
-
style: { scrollMarginTop:
|
|
1462
|
+
style: { scrollMarginTop: _chunkK2JUJ37Dcjs.STICKY_HEADER_OFFSET_PX },
|
|
1463
1463
|
className: `border-b border-ods-border last:border-b-0 ${optimistic ? "opacity-60" : ""}`,
|
|
1464
1464
|
"aria-busy": optimistic || void 0,
|
|
1465
1465
|
children: [
|
|
@@ -1473,7 +1473,7 @@ function HelpCenterCard({
|
|
|
1473
1473
|
"aria-controls": isExpanded ? `help-center-drawer-${ticket.id}` : void 0,
|
|
1474
1474
|
className: "w-full p-[12px] text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-accent disabled:cursor-default content-md:p-[16px]",
|
|
1475
1475
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1476
|
-
|
|
1476
|
+
_chunk6HRQLM6Tcjs.DevCardRowContent,
|
|
1477
1477
|
{
|
|
1478
1478
|
title,
|
|
1479
1479
|
subtitle,
|
|
@@ -1574,7 +1574,7 @@ function HelpCenterCreateForm({
|
|
|
1574
1574
|
subjectError && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { id: "help-center-subject-error", className: "mt-1 text-ods-error text-h6", children: subjectError })
|
|
1575
1575
|
] });
|
|
1576
1576
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1577
|
-
|
|
1577
|
+
_chunk5K6YKRP5cjs.ContactForm,
|
|
1578
1578
|
{
|
|
1579
1579
|
rescue: null,
|
|
1580
1580
|
title: "Open a new ticket",
|
|
@@ -1612,31 +1612,31 @@ function HelpCenterCreateForm({
|
|
|
1612
1612
|
|
|
1613
1613
|
// src/components/tickets/help-center-list.tsx
|
|
1614
1614
|
|
|
1615
|
-
function HelpCenterList({ toast: toast2 =
|
|
1616
|
-
const identity =
|
|
1615
|
+
function HelpCenterList({ toast: toast2 = _chunk4LY6R4TNcjs.toast, backButton, title, shell } = {}) {
|
|
1616
|
+
const identity = _chunkP7Y626YJcjs.useChatIdentity.call(void 0, );
|
|
1617
1617
|
const searchParams = _chunk7DNL734Scjs.useSearchParams.call(void 0, );
|
|
1618
1618
|
const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
|
|
1619
1619
|
const pathname = _chunk7DNL734Scjs.usePathname.call(void 0, );
|
|
1620
|
-
const search = searchParams.get(
|
|
1620
|
+
const search = searchParams.get(_chunkP7Y626YJcjs.DEV_SECTION_PARAM_KEYS.search) || "";
|
|
1621
1621
|
const status = searchParams.get("status") || "all";
|
|
1622
|
-
const ticketParam = searchParams.get(
|
|
1622
|
+
const ticketParam = searchParams.get(_chunkP7Y626YJcjs.TICKET_OPEN_PARAM) || "";
|
|
1623
1623
|
const page = _chunk7GRPR7XAcjs.positiveInt.call(void 0, searchParams.get("page"), 1);
|
|
1624
1624
|
if (identity.isLoading) {
|
|
1625
1625
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1626
|
-
|
|
1626
|
+
_chunk6HRQLM6Tcjs.DevSectionPage,
|
|
1627
1627
|
{
|
|
1628
1628
|
sectionKey: "tickets",
|
|
1629
1629
|
backButton,
|
|
1630
1630
|
title,
|
|
1631
1631
|
shell,
|
|
1632
1632
|
preControls: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HelpCenterCreateFormSkeleton, {}),
|
|
1633
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1633
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6HRQLM6Tcjs.DevCardRowSkeletonList, {})
|
|
1634
1634
|
}
|
|
1635
1635
|
);
|
|
1636
1636
|
}
|
|
1637
1637
|
if (identity.authTier === "anon" || !_optionalChain([identity, 'access', _66 => _66.user, 'optionalAccess', _67 => _67.email])) {
|
|
1638
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1639
|
-
|
|
1638
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6HRQLM6Tcjs.DevSectionPage, { sectionKey: "tickets", backButton, title, shell, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1639
|
+
_chunkZSOFLPQNcjs.EmptyState,
|
|
1640
1640
|
{
|
|
1641
1641
|
type: "generic",
|
|
1642
1642
|
title: "Sign in to manage tickets",
|
|
@@ -1687,8 +1687,8 @@ function HelpCenterListAuthed({
|
|
|
1687
1687
|
const setOpenTicket = _react.useCallback.call(void 0,
|
|
1688
1688
|
(externalId) => {
|
|
1689
1689
|
const params = new URLSearchParams(searchParams.toString());
|
|
1690
|
-
if (externalId) params.set(
|
|
1691
|
-
else params.delete(
|
|
1690
|
+
if (externalId) params.set(_chunkP7Y626YJcjs.TICKET_OPEN_PARAM, externalId);
|
|
1691
|
+
else params.delete(_chunkP7Y626YJcjs.TICKET_OPEN_PARAM);
|
|
1692
1692
|
const qs = params.toString();
|
|
1693
1693
|
router.replace(qs ? `${pathname}?${qs}` : pathname, { scroll: false });
|
|
1694
1694
|
},
|
|
@@ -1745,7 +1745,7 @@ function HelpCenterListAuthed({
|
|
|
1745
1745
|
[tickets, ticketParam, setOpenTicket]
|
|
1746
1746
|
);
|
|
1747
1747
|
const merged = [...optimisticTickets, ...tickets];
|
|
1748
|
-
|
|
1748
|
+
_chunk4LY6R4TNcjs.useScrollToHash.call(void 0, tickets, { headerOffset: _chunkK2JUJ37Dcjs.STICKY_HEADER_OFFSET_PX });
|
|
1749
1749
|
const hasActiveFilters = search !== "" || status !== "" && status !== "all";
|
|
1750
1750
|
const hasResults = merged.length > 0;
|
|
1751
1751
|
const form = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -1763,17 +1763,17 @@ function HelpCenterListAuthed({
|
|
|
1763
1763
|
"Couldn\u2019t load your tickets. ",
|
|
1764
1764
|
error.message
|
|
1765
1765
|
] }),
|
|
1766
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1766
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHQIOMFJHcjs.Button, { type: "button", variant: "accent", onClick: () => refetch(), children: "Retry" })
|
|
1767
1767
|
] }),
|
|
1768
|
-
!error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1768
|
+
!error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6HRQLM6Tcjs.DevCardRowSkeletonList, {}) : !hasResults && isFetching ? (
|
|
1769
1769
|
// Bridge state — background refetch in flight and the
|
|
1770
1770
|
// optimistic placeholder was just removed by the mutation
|
|
1771
1771
|
// callback. Without this branch "No tickets yet" would flash
|
|
1772
1772
|
// for ~50ms between `removeOptimistic` and the server
|
|
1773
1773
|
// response landing.
|
|
1774
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1774
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6HRQLM6Tcjs.DevCardRowSkeletonList, { rows: 1 })
|
|
1775
1775
|
) : !hasResults ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1776
|
-
|
|
1776
|
+
_chunk6HRQLM6Tcjs.ListEmptyState,
|
|
1777
1777
|
{
|
|
1778
1778
|
isFiltered: hasActiveFilters,
|
|
1779
1779
|
filtered: {
|
|
@@ -1804,11 +1804,11 @@ function HelpCenterListAuthed({
|
|
|
1804
1804
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full overflow-clip rounded-[6px] border border-ods-border bg-ods-card", children: merged.map((ticket) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1805
1805
|
HelpCenterCard,
|
|
1806
1806
|
{
|
|
1807
|
-
id:
|
|
1807
|
+
id: _chunkP7Y626YJcjs.devSectionAnchorId.call(void 0, "ticket", ticket.external_id),
|
|
1808
1808
|
ticket,
|
|
1809
1809
|
expanded: expandedTicketId === ticket.id,
|
|
1810
1810
|
onToggle: toggleRow,
|
|
1811
|
-
busy:
|
|
1811
|
+
busy: _chunkVV5INIQBcjs.isOptimistic.call(void 0, ticket) ? false : actions.isRowBusy(ticket.id),
|
|
1812
1812
|
supportSystemDown,
|
|
1813
1813
|
onSendMessage: actions.sendMessage,
|
|
1814
1814
|
onClose: actions.closeTicket,
|
|
@@ -1820,9 +1820,9 @@ function HelpCenterListAuthed({
|
|
|
1820
1820
|
ticket.id
|
|
1821
1821
|
)) })
|
|
1822
1822
|
) }),
|
|
1823
|
-
!error && totalPages > 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1823
|
+
!error && totalPages > 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZSOFLPQNcjs.UnifiedPagination, { currentPage: page, totalPages })
|
|
1824
1824
|
] });
|
|
1825
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1825
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6HRQLM6Tcjs.DevSectionPage, { sectionKey: "tickets", backButton, title, shell, preControls: form, children: body });
|
|
1826
1826
|
}
|
|
1827
1827
|
|
|
1828
1828
|
|