@flamingo-stack/openframe-frontend-core 0.0.221 → 0.0.222
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-4PBV66HQ.cjs → chunk-4JOWZLEL.cjs} +7 -7
- package/dist/{chunk-4PBV66HQ.cjs.map → chunk-4JOWZLEL.cjs.map} +1 -1
- package/dist/{chunk-73YDB6AT.cjs → chunk-A2SFHYVF.cjs} +9 -9
- package/dist/{chunk-73YDB6AT.cjs.map → chunk-A2SFHYVF.cjs.map} +1 -1
- package/dist/{chunk-IS4IZC7N.js → chunk-AIKPR6BE.js} +21 -4
- package/dist/{chunk-IS4IZC7N.js.map → chunk-AIKPR6BE.js.map} +1 -1
- package/dist/{chunk-CPIX5AAR.js → chunk-CCSEXVI4.js} +2 -2
- package/dist/{chunk-7TQNW2AM.cjs → chunk-GMNE7P7V.cjs} +24 -24
- package/dist/{chunk-7TQNW2AM.cjs.map → chunk-GMNE7P7V.cjs.map} +1 -1
- package/dist/{chunk-FOOQFRJR.js → chunk-HRIAZQ5D.js} +2 -2
- package/dist/{chunk-JMGSJHFP.cjs → chunk-IZA5WF44.cjs} +10 -10
- package/dist/{chunk-JMGSJHFP.cjs.map → chunk-IZA5WF44.cjs.map} +1 -1
- package/dist/{chunk-ZAGQXSAP.cjs → chunk-KM4KK2A6.cjs} +21 -4
- package/dist/chunk-KM4KK2A6.cjs.map +1 -0
- package/dist/{chunk-SRCEVQYA.js → chunk-ND24XSVT.js} +2 -2
- package/dist/{chunk-E2AWBQEU.js → chunk-RMOHKAHA.js} +2 -2
- package/dist/components/chat/index.cjs +2 -2
- package/dist/components/chat/index.js +1 -1
- package/dist/components/contact/index.cjs +3 -3
- package/dist/components/contact/index.js +2 -2
- package/dist/components/features/board/board-column-header.d.ts +2 -1
- package/dist/components/features/board/board-column-header.d.ts.map +1 -1
- package/dist/components/features/board/board-column.d.ts +2 -1
- package/dist/components/features/board/board-column.d.ts.map +1 -1
- package/dist/components/features/board/board.d.ts +2 -1
- package/dist/components/features/board/board.d.ts.map +1 -1
- package/dist/components/features/board/types.d.ts +1 -0
- package/dist/components/features/board/types.d.ts.map +1 -1
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/index.cjs +77 -77
- package/dist/components/index.js +4 -4
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/onboarding-guides/index.cjs +25 -25
- package/dist/components/onboarding-guides/index.js +3 -3
- package/dist/components/tickets/index.cjs +64 -64
- package/dist/components/tickets/index.js +4 -4
- package/dist/components/ui/index.cjs +2 -2
- package/dist/components/ui/index.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/components/features/board/board-column-header.tsx +14 -1
- package/src/components/features/board/board-column.tsx +3 -0
- package/src/components/features/board/board.tsx +3 -0
- package/src/components/features/board/types.ts +2 -0
- package/dist/chunk-ZAGQXSAP.cjs.map +0 -1
- /package/dist/{chunk-CPIX5AAR.js.map → chunk-CCSEXVI4.js.map} +0 -0
- /package/dist/{chunk-FOOQFRJR.js.map → chunk-HRIAZQ5D.js.map} +0 -0
- /package/dist/{chunk-SRCEVQYA.js.map → chunk-ND24XSVT.js.map} +0 -0
- /package/dist/{chunk-E2AWBQEU.js.map → chunk-RMOHKAHA.js.map} +0 -0
|
@@ -4,16 +4,16 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkA2SFHYVFcjs = require('../../chunk-A2SFHYVF.cjs');
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _chunk4JOWZLELcjs = require('../../chunk-4JOWZLEL.cjs');
|
|
13
13
|
require('../../chunk-OB45JHDY.cjs');
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _chunkGMNE7P7Vcjs = require('../../chunk-GMNE7P7V.cjs');
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
|
|
@@ -41,7 +41,7 @@ var _chunk7TQNW2AMcjs = require('../../chunk-7TQNW2AM.cjs');
|
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-
var
|
|
44
|
+
var _chunkKM4KK2A6cjs = require('../../chunk-KM4KK2A6.cjs');
|
|
45
45
|
require('../../chunk-XL4V2PYG.cjs');
|
|
46
46
|
require('../../chunk-BZFW3FOF.cjs');
|
|
47
47
|
|
|
@@ -105,7 +105,7 @@ function TicketOpenForm({
|
|
|
105
105
|
}) {
|
|
106
106
|
const [subject, setSubject] = _react.useState.call(void 0, "");
|
|
107
107
|
const [content, setContent] = _react.useState.call(void 0, "");
|
|
108
|
-
const { attachments, readyAttachments, hasInflightUploads, addFiles, removeAttachment, clear } =
|
|
108
|
+
const { attachments, readyAttachments, hasInflightUploads, addFiles, removeAttachment, clear } = _chunkKM4KK2A6cjs.useChatAttachments.call(void 0, );
|
|
109
109
|
const trimmedSubject = subject.trim();
|
|
110
110
|
const trimmedContent = content.trim();
|
|
111
111
|
const overCap = content.length > TICKET_TEXT_MAX_CHARS;
|
|
@@ -125,7 +125,7 @@ function TicketOpenForm({
|
|
|
125
125
|
clear();
|
|
126
126
|
}
|
|
127
127
|
};
|
|
128
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
128
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKM4KK2A6cjs.Card, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: handleSubmit, className: "flex flex-col md:flex-row gap-6", children: [
|
|
129
129
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0 md:max-w-md", children: [
|
|
130
130
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-2xl font-semibold text-ods-text-primary mb-2", children: "Need Support?" }),
|
|
131
131
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-sm", children: "Can't find what you're looking for? Submit a support ticket below \u2014 we'll follow up shortly." }),
|
|
@@ -164,7 +164,7 @@ function TicketOpenForm({
|
|
|
164
164
|
}
|
|
165
165
|
),
|
|
166
166
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
167
|
-
|
|
167
|
+
_chunkKM4KK2A6cjs.Textarea,
|
|
168
168
|
{
|
|
169
169
|
id: "ticket-content",
|
|
170
170
|
placeholder: "Describe your issue or question in detail...",
|
|
@@ -188,7 +188,7 @@ function TicketOpenForm({
|
|
|
188
188
|
)
|
|
189
189
|
] }),
|
|
190
190
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
191
|
-
|
|
191
|
+
_chunkKM4KK2A6cjs.ChatAttachmentChipStrip,
|
|
192
192
|
{
|
|
193
193
|
attachments,
|
|
194
194
|
onRemove: removeAttachment,
|
|
@@ -197,7 +197,7 @@ function TicketOpenForm({
|
|
|
197
197
|
),
|
|
198
198
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between gap-3", children: [
|
|
199
199
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
200
|
-
|
|
200
|
+
_chunkKM4KK2A6cjs.ChatAttachmentAddButton,
|
|
201
201
|
{
|
|
202
202
|
attachmentsEnabled: !supportSystemDown,
|
|
203
203
|
attachmentsCount: attachments.length,
|
|
@@ -235,7 +235,7 @@ var _usesticktobottom = require('use-stick-to-bottom');
|
|
|
235
235
|
|
|
236
236
|
var LIST_ENGAGEMENTS_ENDPOINT = "/api/chat/agent/list-engagements";
|
|
237
237
|
function useTicketEngagements(externalTicketId, enabled = true, refetchInterval = false) {
|
|
238
|
-
const identity =
|
|
238
|
+
const identity = _chunkKM4KK2A6cjs.useChatIdentity.call(void 0, );
|
|
239
239
|
const identityKey = _nullishCoalesce(_optionalChain([identity, 'access', _2 => _2.user, 'optionalAccess', _3 => _3.email]), () => ( "anon"));
|
|
240
240
|
const fetchable = enabled && !!externalTicketId && !externalTicketId.startsWith("temp-");
|
|
241
241
|
const queryEnabled = fetchable && identity.authTier !== "anon" && !!_optionalChain([identity, 'access', _4 => _4.user, 'optionalAccess', _5 => _5.email]);
|
|
@@ -255,7 +255,7 @@ function useTicketEngagements(externalTicketId, enabled = true, refetchInterval
|
|
|
255
255
|
// so polling pauses on a hidden tab.
|
|
256
256
|
refetchInterval,
|
|
257
257
|
queryFn: async () => {
|
|
258
|
-
const response = await
|
|
258
|
+
const response = await _chunkKM4KK2A6cjs.embedAuthedFetch.call(void 0, LIST_ENGAGEMENTS_ENDPOINT, {
|
|
259
259
|
method: "POST",
|
|
260
260
|
body: JSON.stringify({ ticket_id: externalTicketId })
|
|
261
261
|
});
|
|
@@ -316,7 +316,7 @@ function TicketLinkedDeliveryCard({
|
|
|
316
316
|
{
|
|
317
317
|
className: `rounded-md border border-ods-border bg-ods-bg overflow-hidden ${_nullishCoalesce(className, () => ( ""))}`,
|
|
318
318
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
319
|
-
|
|
319
|
+
_chunkA2SFHYVFcjs.DeliveryRow,
|
|
320
320
|
{
|
|
321
321
|
item,
|
|
322
322
|
href: clickup.delivery_href,
|
|
@@ -340,7 +340,7 @@ function TicketReplyComposer({
|
|
|
340
340
|
}) {
|
|
341
341
|
const [resolution, setResolution] = _react.useState.call(void 0, "");
|
|
342
342
|
const [closeDialogOpen, setCloseDialogOpen] = _react.useState.call(void 0, false);
|
|
343
|
-
const attachments =
|
|
343
|
+
const attachments = _chunkKM4KK2A6cjs.useChatAttachments.call(void 0, );
|
|
344
344
|
const ticketRef = { id: ticket.id, external_id: ticket.external_id };
|
|
345
345
|
const hasReadyFiles = attachments.readyAttachments.length > 0;
|
|
346
346
|
const handleSend = _react.useCallback.call(void 0,
|
|
@@ -368,7 +368,7 @@ function TicketReplyComposer({
|
|
|
368
368
|
const disabled = busy || supportSystemDown;
|
|
369
369
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2", children: [
|
|
370
370
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
371
|
-
|
|
371
|
+
_chunkKM4KK2A6cjs.ChatAttachmentChipStrip,
|
|
372
372
|
{
|
|
373
373
|
attachments: attachments.attachments,
|
|
374
374
|
onRemove: attachments.removeAttachment,
|
|
@@ -377,7 +377,7 @@ function TicketReplyComposer({
|
|
|
377
377
|
}
|
|
378
378
|
),
|
|
379
379
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
380
|
-
|
|
380
|
+
_chunkKM4KK2A6cjs.ChatInput,
|
|
381
381
|
{
|
|
382
382
|
fullWidth: true,
|
|
383
383
|
autoFocus: true,
|
|
@@ -391,7 +391,7 @@ function TicketReplyComposer({
|
|
|
391
391
|
),
|
|
392
392
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2 w-full", children: [
|
|
393
393
|
!supportSystemDown && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
394
|
-
|
|
394
|
+
_chunkKM4KK2A6cjs.ChatAttachmentAddButton,
|
|
395
395
|
{
|
|
396
396
|
attachmentsEnabled: true,
|
|
397
397
|
attachmentsCount: attachments.attachments.length,
|
|
@@ -414,13 +414,13 @@ function TicketReplyComposer({
|
|
|
414
414
|
}
|
|
415
415
|
)
|
|
416
416
|
] }),
|
|
417
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
418
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
419
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
420
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
417
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKM4KK2A6cjs.AlertDialog, { open: closeDialogOpen, onOpenChange: setCloseDialogOpen, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKM4KK2A6cjs.AlertDialogContent, { className: "bg-ods-card border-ods-border", children: [
|
|
418
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKM4KK2A6cjs.AlertDialogHeader, { children: [
|
|
419
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKM4KK2A6cjs.AlertDialogTitle, { className: "text-ods-text-primary", children: "Close this ticket?" }),
|
|
420
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKM4KK2A6cjs.AlertDialogDescription, { className: "text-ods-text-secondary", children: "Add an optional resolution note below. You can reopen the ticket later if needed." })
|
|
421
421
|
] }),
|
|
422
422
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
423
|
-
|
|
423
|
+
_chunkKM4KK2A6cjs.Textarea,
|
|
424
424
|
{
|
|
425
425
|
value: resolution,
|
|
426
426
|
onChange: (e) => setResolution(e.target.value),
|
|
@@ -430,9 +430,9 @@ function TicketReplyComposer({
|
|
|
430
430
|
className: "mt-2"
|
|
431
431
|
}
|
|
432
432
|
),
|
|
433
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
433
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKM4KK2A6cjs.AlertDialogFooter, { children: [
|
|
434
434
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
435
|
-
|
|
435
|
+
_chunkKM4KK2A6cjs.AlertDialogCancel,
|
|
436
436
|
{
|
|
437
437
|
disabled: busy,
|
|
438
438
|
className: "bg-transparent border-ods-border text-ods-text-primary hover:bg-ods-border",
|
|
@@ -440,7 +440,7 @@ function TicketReplyComposer({
|
|
|
440
440
|
}
|
|
441
441
|
),
|
|
442
442
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
443
|
-
|
|
443
|
+
_chunkKM4KK2A6cjs.AlertDialogAction,
|
|
444
444
|
{
|
|
445
445
|
onClick: () => void confirmClose(),
|
|
446
446
|
disabled: busy,
|
|
@@ -510,7 +510,7 @@ var TICKET_FEED_HEIGHT = "h-[60vh] md:h-[420px]";
|
|
|
510
510
|
var TICKET_FEED_INNER = "flex flex-col gap-4 md:gap-6 px-4 md:px-6 py-4 md:py-6";
|
|
511
511
|
var TICKET_FEED_SKELETON_ROWS = 6;
|
|
512
512
|
function TicketTimelinePanel({ ticket }) {
|
|
513
|
-
const identity =
|
|
513
|
+
const identity = _chunkKM4KK2A6cjs.useChatIdentity.call(void 0, );
|
|
514
514
|
const externalId = isOptimistic(ticket) ? null : ticket.external_id;
|
|
515
515
|
const { engagements, isLoading } = useTicketEngagements(
|
|
516
516
|
externalId,
|
|
@@ -530,11 +530,11 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
530
530
|
const customerName = (isViewerTheCustomer ? viewerName : null) || ticketCustomerName || viewerName || _optionalChain([identity, 'access', _19 => _19.user, 'optionalAccess', _20 => _20.email]) || "You";
|
|
531
531
|
const customerAvatar = isViewerTheCustomer ? _nullishCoalesce(_optionalChain([identity, 'access', _21 => _21.user, 'optionalAccess', _22 => _22.avatarUrl]), () => ( void 0)) : void 0;
|
|
532
532
|
if (isLoading) {
|
|
533
|
-
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,
|
|
533
|
+
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, _chunkKM4KK2A6cjs.ChatMessageRowSkeleton, {}, i)) }) });
|
|
534
534
|
}
|
|
535
535
|
if (bodyTurns.length === 0 && engagements.length === 0) {
|
|
536
536
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
537
|
-
|
|
537
|
+
_chunkA2SFHYVFcjs.EmptyState,
|
|
538
538
|
{
|
|
539
539
|
type: "generic",
|
|
540
540
|
title: "No conversation yet",
|
|
@@ -549,7 +549,7 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
549
549
|
const isResolution = turn.startsWith("[Resolution]");
|
|
550
550
|
const text = isResolution ? turn.replace(/^\[Resolution\]\s*/, "") : turn;
|
|
551
551
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
552
|
-
|
|
552
|
+
_chunkKM4KK2A6cjs.ChatMessageRow,
|
|
553
553
|
{
|
|
554
554
|
displayName: customerName,
|
|
555
555
|
avatarUrl: customerAvatar,
|
|
@@ -578,13 +578,13 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
578
578
|
}
|
|
579
579
|
const engAttachments = mapEngagementAttachments(eng.attachments);
|
|
580
580
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
581
|
-
|
|
581
|
+
_chunkKM4KK2A6cjs.ChatMessageRow,
|
|
582
582
|
{
|
|
583
583
|
displayName: author,
|
|
584
584
|
avatarUrl: avatarSrc,
|
|
585
|
-
timeLabel: eng.createdAt ?
|
|
585
|
+
timeLabel: eng.createdAt ? _chunkKM4KK2A6cjs.formatRelativeTime.call(void 0, eng.createdAt) : null,
|
|
586
586
|
body: stripAttachmentsPreamble(_nullishCoalesce(eng.body, () => ( ""))),
|
|
587
|
-
footer: engAttachments.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
587
|
+
footer: engAttachments.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKM4KK2A6cjs.TicketAttachmentsList, { attachments: engAttachments, size: "compact" }) }) : null
|
|
588
588
|
},
|
|
589
589
|
eng.id
|
|
590
590
|
);
|
|
@@ -672,7 +672,7 @@ function AssignedAgentRow({
|
|
|
672
672
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary uppercase tracking-wider font-medium", children: "Assigned to" }),
|
|
673
673
|
displayLabel ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-1.5 text-ods-text-primary font-medium", children: [
|
|
674
674
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
675
|
-
|
|
675
|
+
_chunkKM4KK2A6cjs.SquareAvatar,
|
|
676
676
|
{
|
|
677
677
|
size: "sm",
|
|
678
678
|
variant: "round",
|
|
@@ -703,7 +703,7 @@ function TicketRow({
|
|
|
703
703
|
const rowRef = _react.useRef.call(void 0, null);
|
|
704
704
|
const handleClick = _react.useCallback.call(void 0, () => {
|
|
705
705
|
onToggle(ticket.id);
|
|
706
|
-
|
|
706
|
+
_chunkKM4KK2A6cjs.scrollElementIntoView.call(void 0, rowRef.current, {
|
|
707
707
|
adjustTargetY: (raw) => {
|
|
708
708
|
if (!rowRef.current) return raw;
|
|
709
709
|
const expandedDrawer = document.querySelector(
|
|
@@ -729,7 +729,7 @@ function TicketRow({
|
|
|
729
729
|
// so the badge accurately reflects "Closed" with a checkmark.
|
|
730
730
|
statusLabel: _nullishCoalesce(ticket.pipeline_stage_label, () => ( void 0)),
|
|
731
731
|
category: _nullishCoalesce(ticket.customer_company, () => ( void 0)),
|
|
732
|
-
timeAgo: ticket.hubspot_updated_at ?
|
|
732
|
+
timeAgo: ticket.hubspot_updated_at ? _chunkKM4KK2A6cjs.formatRelativeTime.call(void 0, ticket.hubspot_updated_at) : void 0,
|
|
733
733
|
// Linked-work chip: surfaced whenever the ticket has a linked
|
|
734
734
|
// ClickUp task. Uses the linked task's own status so the chip text
|
|
735
735
|
// reads "Working" / "Waiting on version release" / etc. — useful
|
|
@@ -744,7 +744,7 @@ function TicketRow({
|
|
|
744
744
|
className: "border-b border-ods-border last:border-b-0",
|
|
745
745
|
children: [
|
|
746
746
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
747
|
-
|
|
747
|
+
_chunkKM4KK2A6cjs.ChatTicketItem,
|
|
748
748
|
{
|
|
749
749
|
ticket: tileData,
|
|
750
750
|
onClick: optimistic ? void 0 : handleClick,
|
|
@@ -813,7 +813,7 @@ function useTicketsList(filters) {
|
|
|
813
813
|
pageSize
|
|
814
814
|
};
|
|
815
815
|
if (statusFilter) body.status = statusFilter;
|
|
816
|
-
const response = await
|
|
816
|
+
const response = await _chunkKM4KK2A6cjs.embedAuthedFetch.call(void 0, FIND_TICKET_ENDPOINT, {
|
|
817
817
|
method: "POST",
|
|
818
818
|
body: JSON.stringify(body)
|
|
819
819
|
});
|
|
@@ -927,7 +927,7 @@ function useTicketActions(options) {
|
|
|
927
927
|
}, []);
|
|
928
928
|
const executeTicketAction = _react.useCallback.call(void 0,
|
|
929
929
|
async (toolName, args) => {
|
|
930
|
-
const res = await
|
|
930
|
+
const res = await _chunkKM4KK2A6cjs.embedAuthedFetch.call(void 0, TICKET_ACTION_ENDPOINT, {
|
|
931
931
|
method: "POST",
|
|
932
932
|
body: JSON.stringify({ tool_name: toolName, args })
|
|
933
933
|
});
|
|
@@ -1312,13 +1312,13 @@ function resolveErrorCode(bodyCode, status) {
|
|
|
1312
1312
|
// src/components/tickets/ticket-center.tsx
|
|
1313
1313
|
|
|
1314
1314
|
function TicketCenter({ toast: toast2 = _chunkQNYH3WUUcjs.toast } = {}) {
|
|
1315
|
-
const identity =
|
|
1315
|
+
const identity = _chunkKM4KK2A6cjs.useChatIdentity.call(void 0, );
|
|
1316
1316
|
if (identity.isLoading) {
|
|
1317
1317
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketCenterSkeleton, {});
|
|
1318
1318
|
}
|
|
1319
1319
|
if (identity.authTier === "anon" || !_optionalChain([identity, 'access', _58 => _58.user, 'optionalAccess', _59 => _59.email])) {
|
|
1320
1320
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1321
|
-
|
|
1321
|
+
_chunkA2SFHYVFcjs.EmptyState,
|
|
1322
1322
|
{
|
|
1323
1323
|
type: "generic",
|
|
1324
1324
|
title: "Sign in to manage tickets",
|
|
@@ -1389,7 +1389,7 @@ function TicketCenterAuthed({
|
|
|
1389
1389
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 text-xs text-ods-text-secondary", children: [
|
|
1390
1390
|
lastUpdatedAt && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { children: [
|
|
1391
1391
|
"Updated ",
|
|
1392
|
-
|
|
1392
|
+
_chunkKM4KK2A6cjs.formatRelativeTime.call(void 0, new Date(lastUpdatedAt))
|
|
1393
1393
|
] }),
|
|
1394
1394
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1395
1395
|
_chunkE6B4B7GMcjs.Button,
|
|
@@ -1405,15 +1405,15 @@ function TicketCenterAuthed({
|
|
|
1405
1405
|
)
|
|
1406
1406
|
] })
|
|
1407
1407
|
] }),
|
|
1408
|
-
isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketListSkeleton, {}) : merged.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1409
|
-
|
|
1408
|
+
isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketListSkeleton, {}) : merged.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKM4KK2A6cjs.Card, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1409
|
+
_chunkA2SFHYVFcjs.EmptyState,
|
|
1410
1410
|
{
|
|
1411
1411
|
type: "generic",
|
|
1412
1412
|
title: "No tickets yet",
|
|
1413
1413
|
description: "Open one above to start the conversation.",
|
|
1414
1414
|
showCTA: false
|
|
1415
1415
|
}
|
|
1416
|
-
) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1416
|
+
) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKM4KK2A6cjs.Card, { className: "overflow-hidden", children: merged.map((ticket) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1417
1417
|
TicketRow,
|
|
1418
1418
|
{
|
|
1419
1419
|
ticket,
|
|
@@ -1433,7 +1433,7 @@ function TicketCenterAuthed({
|
|
|
1433
1433
|
}
|
|
1434
1434
|
function TicketCenterSkeleton() {
|
|
1435
1435
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6", children: [
|
|
1436
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1436
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKM4KK2A6cjs.Card, { className: "p-6", children: [
|
|
1437
1437
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE6B4B7GMcjs.Skeleton, { className: "h-7 w-48 mb-4" }),
|
|
1438
1438
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE6B4B7GMcjs.Skeleton, { className: "h-10 w-full mb-3" }),
|
|
1439
1439
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE6B4B7GMcjs.Skeleton, { className: "h-24 w-full" })
|
|
@@ -1442,7 +1442,7 @@ function TicketCenterSkeleton() {
|
|
|
1442
1442
|
] });
|
|
1443
1443
|
}
|
|
1444
1444
|
function TicketListSkeleton() {
|
|
1445
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1445
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKM4KK2A6cjs.Card, { className: "overflow-hidden", children: [0, 1, 2].map((i) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "h-20 px-4 flex items-center gap-4 border-b border-ods-border last:border-b-0", children: [
|
|
1446
1446
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 flex flex-col gap-2", children: [
|
|
1447
1447
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE6B4B7GMcjs.Skeleton, { className: "h-4 w-2/3" }),
|
|
1448
1448
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE6B4B7GMcjs.Skeleton, { className: "h-3 w-full" })
|
|
@@ -1455,7 +1455,7 @@ function TicketListSkeleton() {
|
|
|
1455
1455
|
// src/components/tickets/help-center-list.tsx
|
|
1456
1456
|
|
|
1457
1457
|
|
|
1458
|
-
|
|
1458
|
+
_chunkA2SFHYVFcjs.init_unified_pagination.call(void 0, );
|
|
1459
1459
|
|
|
1460
1460
|
// src/components/tickets/help-center-card.tsx
|
|
1461
1461
|
|
|
@@ -1477,7 +1477,7 @@ function HelpCenterCard({
|
|
|
1477
1477
|
const optimistic = isOptimistic(ticket);
|
|
1478
1478
|
const rawStatus = (_nullishCoalesce(ticket.status, () => ( "OPEN"))).toUpperCase();
|
|
1479
1479
|
const priority = (_nullishCoalesce(ticket.priority, () => ( ""))).toUpperCase();
|
|
1480
|
-
const relativeUpdated = ticket.hubspot_updated_at ?
|
|
1480
|
+
const relativeUpdated = ticket.hubspot_updated_at ? _chunkKM4KK2A6cjs.formatRelativeTime.call(void 0, ticket.hubspot_updated_at) : "recently";
|
|
1481
1481
|
const title = (ticket.subject || "").trim() || "(untitled)";
|
|
1482
1482
|
const subtitle = `UPDATED ${relativeUpdated}, #${ticket.external_id || "\u2014"}${ticket.pipeline_stage_label ? `, ${ticket.pipeline_stage_label}` : ""}`;
|
|
1483
1483
|
const description = _nullishCoalesce(_nullishCoalesce(ticket.preview, () => ( ticket.body)), () => ( ""));
|
|
@@ -1490,7 +1490,7 @@ function HelpCenterCard({
|
|
|
1490
1490
|
_react.useEffect.call(void 0, () => {
|
|
1491
1491
|
if (!isExpanded) return;
|
|
1492
1492
|
const raf = requestAnimationFrame(() => {
|
|
1493
|
-
|
|
1493
|
+
_chunkKM4KK2A6cjs.scrollElementIntoView.call(void 0, rowRef.current, {
|
|
1494
1494
|
headerOffset: STICKY_HEADER_OFFSET_PX
|
|
1495
1495
|
});
|
|
1496
1496
|
});
|
|
@@ -1498,16 +1498,16 @@ function HelpCenterCard({
|
|
|
1498
1498
|
}, [isExpanded]);
|
|
1499
1499
|
const rightBadges = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
1500
1500
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1501
|
-
|
|
1501
|
+
_chunkKM4KK2A6cjs.StatusBadge,
|
|
1502
1502
|
{
|
|
1503
1503
|
text: rawStatus,
|
|
1504
|
-
colorScheme:
|
|
1504
|
+
colorScheme: _chunkKM4KK2A6cjs.getStatusColorScheme.call(void 0, rawStatus),
|
|
1505
1505
|
variant: "card",
|
|
1506
1506
|
className: "border border-ods-border"
|
|
1507
1507
|
}
|
|
1508
1508
|
),
|
|
1509
1509
|
priority && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1510
|
-
|
|
1510
|
+
_chunkKM4KK2A6cjs.StatusBadge,
|
|
1511
1511
|
{
|
|
1512
1512
|
text: priority,
|
|
1513
1513
|
colorScheme: mapPriorityScheme(priority),
|
|
@@ -1534,7 +1534,7 @@ function HelpCenterCard({
|
|
|
1534
1534
|
"aria-controls": isExpanded ? `help-center-drawer-${ticket.id}` : void 0,
|
|
1535
1535
|
className: "w-full text-left p-[12px] md:p-[16px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-inset disabled:cursor-default",
|
|
1536
1536
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1537
|
-
|
|
1537
|
+
_chunk4JOWZLELcjs.DevCardRowContent,
|
|
1538
1538
|
{
|
|
1539
1539
|
title,
|
|
1540
1540
|
subtitle,
|
|
@@ -1609,7 +1609,7 @@ function HelpCenterCreateForm({
|
|
|
1609
1609
|
const [subject, setSubject] = _react.useState.call(void 0, "");
|
|
1610
1610
|
const [subjectError, setSubjectError] = _react.useState.call(void 0, null);
|
|
1611
1611
|
const subjectField = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col", children: [
|
|
1612
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1612
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkKM4KK2A6cjs.Label, { htmlFor: "help-center-subject", children: [
|
|
1613
1613
|
"Subject",
|
|
1614
1614
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-accent", children: "*" })
|
|
1615
1615
|
] }),
|
|
@@ -1641,7 +1641,7 @@ function HelpCenterCreateForm({
|
|
|
1641
1641
|
)
|
|
1642
1642
|
] });
|
|
1643
1643
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1644
|
-
|
|
1644
|
+
_chunkGMNE7P7Vcjs.ContactForm,
|
|
1645
1645
|
{
|
|
1646
1646
|
title: "Open a new ticket",
|
|
1647
1647
|
footerText: "The support team typically responds within one business day.",
|
|
@@ -1679,7 +1679,7 @@ function HelpCenterCreateForm({
|
|
|
1679
1679
|
// src/components/tickets/help-center-list.tsx
|
|
1680
1680
|
|
|
1681
1681
|
function HelpCenterList({ toast: toast2 = _chunkQNYH3WUUcjs.toast } = {}) {
|
|
1682
|
-
const identity =
|
|
1682
|
+
const identity = _chunkKM4KK2A6cjs.useChatIdentity.call(void 0, );
|
|
1683
1683
|
const searchParams = _chunkG7UE6RKVcjs.useSearchParams.call(void 0, );
|
|
1684
1684
|
const router = _chunkG7UE6RKVcjs.useRouter.call(void 0, );
|
|
1685
1685
|
const pathname = _chunkG7UE6RKVcjs.usePathname.call(void 0, );
|
|
@@ -1689,11 +1689,11 @@ function HelpCenterList({ toast: toast2 = _chunkQNYH3WUUcjs.toast } = {}) {
|
|
|
1689
1689
|
const rawPage = Number(searchParams.get("page"));
|
|
1690
1690
|
const page = Number.isFinite(rawPage) && rawPage > 0 ? Math.floor(rawPage) : 1;
|
|
1691
1691
|
if (identity.isLoading) {
|
|
1692
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1692
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4JOWZLELcjs.DevSectionPage, { sectionKey: "tickets", preControls: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HelpCenterCreateFormSkeleton, {}), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4JOWZLELcjs.DevCardRowSkeletonList, {}) });
|
|
1693
1693
|
}
|
|
1694
1694
|
if (identity.authTier === "anon" || !_optionalChain([identity, 'access', _60 => _60.user, 'optionalAccess', _61 => _61.email])) {
|
|
1695
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1696
|
-
|
|
1695
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4JOWZLELcjs.DevSectionPage, { sectionKey: "tickets", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1696
|
+
_chunkA2SFHYVFcjs.EmptyState,
|
|
1697
1697
|
{
|
|
1698
1698
|
type: "generic",
|
|
1699
1699
|
title: "Sign in to manage tickets",
|
|
@@ -1818,15 +1818,15 @@ function HelpCenterListAuthed({
|
|
|
1818
1818
|
] }),
|
|
1819
1819
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE6B4B7GMcjs.Button, { type: "button", variant: "accent", onClick: () => refetch(), children: "Retry" })
|
|
1820
1820
|
] }),
|
|
1821
|
-
!error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1821
|
+
!error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4JOWZLELcjs.DevCardRowSkeletonList, {}) : !hasResults && isFetching ? (
|
|
1822
1822
|
// Bridge state — background refetch in flight and the
|
|
1823
1823
|
// optimistic placeholder was just removed by the mutation
|
|
1824
1824
|
// callback. Without this branch "No tickets yet" would flash
|
|
1825
1825
|
// for ~50ms between `removeOptimistic` and the server
|
|
1826
1826
|
// response landing.
|
|
1827
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1827
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4JOWZLELcjs.DevCardRowSkeletonList, { rows: 1 })
|
|
1828
1828
|
) : !hasResults ? hasActiveFilters ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1829
|
-
|
|
1829
|
+
_chunkA2SFHYVFcjs.EmptyState,
|
|
1830
1830
|
{
|
|
1831
1831
|
type: "search",
|
|
1832
1832
|
title: "No tickets found",
|
|
@@ -1841,7 +1841,7 @@ function HelpCenterListAuthed({
|
|
|
1841
1841
|
}
|
|
1842
1842
|
}
|
|
1843
1843
|
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1844
|
-
|
|
1844
|
+
_chunkA2SFHYVFcjs.EmptyState,
|
|
1845
1845
|
{
|
|
1846
1846
|
type: "generic",
|
|
1847
1847
|
title: "No tickets yet",
|
|
@@ -1875,9 +1875,9 @@ function HelpCenterListAuthed({
|
|
|
1875
1875
|
ticket.id
|
|
1876
1876
|
)) })
|
|
1877
1877
|
) }),
|
|
1878
|
-
!error && totalPages > 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1878
|
+
!error && totalPages > 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkA2SFHYVFcjs.UnifiedPagination, { currentPage: page, totalPages })
|
|
1879
1879
|
] });
|
|
1880
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1880
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4JOWZLELcjs.DevSectionPage, { sectionKey: "tickets", preControls: form, children: body });
|
|
1881
1881
|
}
|
|
1882
1882
|
|
|
1883
1883
|
|
|
@@ -4,16 +4,16 @@ import {
|
|
|
4
4
|
EmptyState,
|
|
5
5
|
UnifiedPagination,
|
|
6
6
|
init_unified_pagination
|
|
7
|
-
} from "../../chunk-
|
|
7
|
+
} from "../../chunk-ND24XSVT.js";
|
|
8
8
|
import {
|
|
9
9
|
DevCardRowContent,
|
|
10
10
|
DevCardRowSkeletonList,
|
|
11
11
|
DevSectionPage
|
|
12
|
-
} from "../../chunk-
|
|
12
|
+
} from "../../chunk-CCSEXVI4.js";
|
|
13
13
|
import "../../chunk-ORJREQ2W.js";
|
|
14
14
|
import {
|
|
15
15
|
ContactForm
|
|
16
|
-
} from "../../chunk-
|
|
16
|
+
} from "../../chunk-RMOHKAHA.js";
|
|
17
17
|
import {
|
|
18
18
|
AlertDialog,
|
|
19
19
|
AlertDialogAction,
|
|
@@ -41,7 +41,7 @@ import {
|
|
|
41
41
|
scrollElementIntoView,
|
|
42
42
|
useChatAttachments,
|
|
43
43
|
useChatIdentity
|
|
44
|
-
} from "../../chunk-
|
|
44
|
+
} from "../../chunk-AIKPR6BE.js";
|
|
45
45
|
import "../../chunk-LXC6P2EO.js";
|
|
46
46
|
import "../../chunk-EL5YVPD5.js";
|
|
47
47
|
import {
|