@flamingo-stack/openframe-frontend-core 0.0.297 → 0.0.298
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-IL47XWV5.js → chunk-3LQWMUHJ.js} +2 -2
- package/dist/{chunk-YBYI62OE.cjs → chunk-57HYFVTZ.cjs} +26 -26
- package/dist/{chunk-YBYI62OE.cjs.map → chunk-57HYFVTZ.cjs.map} +1 -1
- package/dist/{chunk-PC746XCO.js → chunk-5MLYCLOI.js} +3 -3
- package/dist/chunk-5MLYCLOI.js.map +1 -0
- package/dist/{chunk-FCDQNTDG.cjs → chunk-67WXHSCX.cjs} +9 -9
- package/dist/{chunk-FCDQNTDG.cjs.map → chunk-67WXHSCX.cjs.map} +1 -1
- package/dist/{chunk-GUTS7HGA.cjs → chunk-BL6XZ2XD.cjs} +3 -3
- package/dist/chunk-BL6XZ2XD.cjs.map +1 -0
- package/dist/{chunk-AD6C23QY.js → chunk-DVHQGII5.js} +2 -2
- package/dist/{chunk-SA2WPJVO.js → chunk-N4DEX22O.js} +2 -2
- package/dist/{chunk-X4DOXQRT.js → chunk-NEVMYN4G.js} +2 -2
- package/dist/{chunk-F5OB2YAL.cjs → chunk-PLNR6BHN.cjs} +7 -7
- package/dist/{chunk-F5OB2YAL.cjs.map → chunk-PLNR6BHN.cjs.map} +1 -1
- package/dist/{chunk-UNVE2SDJ.cjs → chunk-PQEQUMSS.cjs} +16 -16
- package/dist/{chunk-UNVE2SDJ.cjs.map → chunk-PQEQUMSS.cjs.map} +1 -1
- package/dist/{chunk-6C526VNN.cjs → chunk-Q77BDAR7.cjs} +30 -30
- package/dist/chunk-Q77BDAR7.cjs.map +1 -0
- package/dist/{chunk-3JIQVE7T.js → chunk-QE5CNWPF.js} +2 -2
- package/dist/{chunk-4TLE6VLU.js → chunk-RY62M66O.js} +2 -2
- package/dist/{chunk-PWQUAVA3.js → chunk-WDWGFUT2.js} +5 -5
- package/dist/chunk-WDWGFUT2.js.map +1 -0
- package/dist/{chunk-4PSQS3SW.cjs → chunk-X26HXH3L.cjs} +5 -5
- package/dist/{chunk-4PSQS3SW.cjs.map → chunk-X26HXH3L.cjs.map} +1 -1
- package/dist/{chunk-53FUMSZ5.cjs → chunk-XG2KGQ76.cjs} +37 -37
- package/dist/{chunk-53FUMSZ5.cjs.map → chunk-XG2KGQ76.cjs.map} +1 -1
- package/dist/{chunk-L7ULJKG7.js → chunk-XKIO5K5N.js} +2 -2
- package/dist/{chunk-7OVGB2DQ.cjs → chunk-ZUXADRGJ.cjs} +12 -12
- package/dist/{chunk-7OVGB2DQ.cjs.map → chunk-ZUXADRGJ.cjs.map} +1 -1
- package/dist/components/case-studies/index.cjs +8 -8
- package/dist/components/case-studies/index.js +2 -2
- package/dist/components/chat/guide-welcome.d.ts.map +1 -1
- 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/docs/index.cjs +5 -5
- package/dist/components/docs/index.js +4 -4
- package/dist/components/embeds/index.cjs +3 -3
- package/dist/components/embeds/index.js +2 -2
- package/dist/components/faq/index.cjs +3 -3
- package/dist/components/faq/index.js +2 -2
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/index.cjs +172 -172
- package/dist/components/index.js +8 -8
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/onboarding-guides/index.cjs +23 -23
- package/dist/components/onboarding-guides/index.js +3 -3
- package/dist/components/related-content/index.cjs +3 -3
- package/dist/components/related-content/index.js +2 -2
- package/dist/components/tickets/index.cjs +60 -60
- package/dist/components/tickets/index.js +3 -3
- package/dist/components/ui/index.cjs +2 -2
- package/dist/components/ui/index.js +1 -1
- package/dist/components/ui/simple-markdown-renderer.d.ts.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/components/chat/guide-welcome.tsx +12 -3
- package/src/components/docs/doc-viewer.tsx +5 -1
- package/src/components/ui/simple-markdown-renderer.tsx +4 -1
- package/src/styles/app-globals.css +24 -0
- package/dist/chunk-6C526VNN.cjs.map +0 -1
- package/dist/chunk-GUTS7HGA.cjs.map +0 -1
- package/dist/chunk-PC746XCO.js.map +0 -1
- package/dist/chunk-PWQUAVA3.js.map +0 -1
- /package/dist/{chunk-IL47XWV5.js.map → chunk-3LQWMUHJ.js.map} +0 -0
- /package/dist/{chunk-AD6C23QY.js.map → chunk-DVHQGII5.js.map} +0 -0
- /package/dist/{chunk-SA2WPJVO.js.map → chunk-N4DEX22O.js.map} +0 -0
- /package/dist/{chunk-X4DOXQRT.js.map → chunk-NEVMYN4G.js.map} +0 -0
- /package/dist/{chunk-3JIQVE7T.js.map → chunk-QE5CNWPF.js.map} +0 -0
- /package/dist/{chunk-4TLE6VLU.js.map → chunk-RY62M66O.js.map} +0 -0
- /package/dist/{chunk-L7ULJKG7.js.map → chunk-XKIO5K5N.js.map} +0 -0
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkPQEQUMSScjs = require('../../chunk-PQEQUMSS.cjs');
|
|
11
11
|
require('../../chunk-VFKQMAUF.cjs');
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _chunk57HYFVTZcjs = require('../../chunk-57HYFVTZ.cjs');
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
|
|
@@ -38,7 +38,7 @@ var _chunkYBYI62OEcjs = require('../../chunk-YBYI62OE.cjs');
|
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
var
|
|
41
|
+
var _chunkBL6XZ2XDcjs = require('../../chunk-BL6XZ2XD.cjs');
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
|
|
@@ -108,7 +108,7 @@ function TicketOpenForm({
|
|
|
108
108
|
}) {
|
|
109
109
|
const [subject, setSubject] = _react.useState.call(void 0, "");
|
|
110
110
|
const [content, setContent] = _react.useState.call(void 0, "");
|
|
111
|
-
const { attachments, readyAttachments, hasInflightUploads, addFiles, removeAttachment, clear } =
|
|
111
|
+
const { attachments, readyAttachments, hasInflightUploads, addFiles, removeAttachment, clear } = _chunkBL6XZ2XDcjs.useChatAttachments.call(void 0, );
|
|
112
112
|
const trimmedSubject = subject.trim();
|
|
113
113
|
const trimmedContent = content.trim();
|
|
114
114
|
const overCap = content.length > TICKET_TEXT_MAX_CHARS;
|
|
@@ -128,7 +128,7 @@ function TicketOpenForm({
|
|
|
128
128
|
clear();
|
|
129
129
|
}
|
|
130
130
|
};
|
|
131
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
131
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBL6XZ2XDcjs.Card, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: handleSubmit, className: "flex flex-col md:flex-row gap-6", children: [
|
|
132
132
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0 md:max-w-md", children: [
|
|
133
133
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-2xl font-semibold text-ods-text-primary mb-2", children: "Need Support?" }),
|
|
134
134
|
/* @__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." }),
|
|
@@ -167,7 +167,7 @@ function TicketOpenForm({
|
|
|
167
167
|
}
|
|
168
168
|
),
|
|
169
169
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
170
|
-
|
|
170
|
+
_chunkBL6XZ2XDcjs.Textarea,
|
|
171
171
|
{
|
|
172
172
|
id: "ticket-content",
|
|
173
173
|
placeholder: "Describe your issue or question in detail...",
|
|
@@ -191,7 +191,7 @@ function TicketOpenForm({
|
|
|
191
191
|
)
|
|
192
192
|
] }),
|
|
193
193
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
194
|
-
|
|
194
|
+
_chunkBL6XZ2XDcjs.ChatAttachmentChipStrip,
|
|
195
195
|
{
|
|
196
196
|
attachments,
|
|
197
197
|
onRemove: removeAttachment,
|
|
@@ -200,7 +200,7 @@ function TicketOpenForm({
|
|
|
200
200
|
),
|
|
201
201
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between gap-3", children: [
|
|
202
202
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
203
|
-
|
|
203
|
+
_chunkBL6XZ2XDcjs.ChatAttachmentAddButton,
|
|
204
204
|
{
|
|
205
205
|
attachmentsEnabled: !supportSystemDown,
|
|
206
206
|
attachmentsCount: attachments.length,
|
|
@@ -238,7 +238,7 @@ var _usesticktobottom = require('use-stick-to-bottom');
|
|
|
238
238
|
|
|
239
239
|
var LIST_ENGAGEMENTS_ENDPOINT = "/api/chat/agent/list-engagements";
|
|
240
240
|
function useTicketEngagements(externalTicketId, enabled = true, refetchInterval = false) {
|
|
241
|
-
const identity =
|
|
241
|
+
const identity = _chunkBL6XZ2XDcjs.useChatIdentity.call(void 0, );
|
|
242
242
|
const identityKey = _nullishCoalesce(_optionalChain([identity, 'access', _2 => _2.user, 'optionalAccess', _3 => _3.email]), () => ( "anon"));
|
|
243
243
|
const listEngagementsEndpoint = _nullishCoalesce(_chunkL6PSSIUQcjs.useRequiredChatRuntime.call(void 0, ).endpoints.listEngagementsUrl, () => ( LIST_ENGAGEMENTS_ENDPOINT));
|
|
244
244
|
const fetchable = enabled && !!externalTicketId && !externalTicketId.startsWith("temp-");
|
|
@@ -320,7 +320,7 @@ function TicketLinkedDeliveryCard({
|
|
|
320
320
|
{
|
|
321
321
|
className: `rounded-md border border-ods-border bg-ods-bg overflow-hidden ${_nullishCoalesce(className, () => ( ""))}`,
|
|
322
322
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
323
|
-
|
|
323
|
+
_chunkPQEQUMSScjs.DeliveryRow,
|
|
324
324
|
{
|
|
325
325
|
item,
|
|
326
326
|
href: clickup.delivery_href,
|
|
@@ -344,7 +344,7 @@ function TicketReplyComposer({
|
|
|
344
344
|
}) {
|
|
345
345
|
const [resolution, setResolution] = _react.useState.call(void 0, "");
|
|
346
346
|
const [closeDialogOpen, setCloseDialogOpen] = _react.useState.call(void 0, false);
|
|
347
|
-
const attachments =
|
|
347
|
+
const attachments = _chunkBL6XZ2XDcjs.useChatAttachments.call(void 0, );
|
|
348
348
|
const ticketRef = { id: ticket.id, external_id: ticket.external_id };
|
|
349
349
|
const hasReadyFiles = attachments.readyAttachments.length > 0;
|
|
350
350
|
const handleSend = _react.useCallback.call(void 0,
|
|
@@ -372,7 +372,7 @@ function TicketReplyComposer({
|
|
|
372
372
|
const disabled = busy || supportSystemDown;
|
|
373
373
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2", children: [
|
|
374
374
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
375
|
-
|
|
375
|
+
_chunkBL6XZ2XDcjs.ChatAttachmentChipStrip,
|
|
376
376
|
{
|
|
377
377
|
attachments: attachments.attachments,
|
|
378
378
|
onRemove: attachments.removeAttachment,
|
|
@@ -381,7 +381,7 @@ function TicketReplyComposer({
|
|
|
381
381
|
}
|
|
382
382
|
),
|
|
383
383
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
384
|
-
|
|
384
|
+
_chunkBL6XZ2XDcjs.ChatInput,
|
|
385
385
|
{
|
|
386
386
|
fullWidth: true,
|
|
387
387
|
autoFocus: true,
|
|
@@ -395,7 +395,7 @@ function TicketReplyComposer({
|
|
|
395
395
|
),
|
|
396
396
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2 w-full", children: [
|
|
397
397
|
!supportSystemDown && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
398
|
-
|
|
398
|
+
_chunkBL6XZ2XDcjs.ChatAttachmentAddButton,
|
|
399
399
|
{
|
|
400
400
|
attachmentsEnabled: true,
|
|
401
401
|
attachmentsCount: attachments.attachments.length,
|
|
@@ -418,13 +418,13 @@ function TicketReplyComposer({
|
|
|
418
418
|
}
|
|
419
419
|
)
|
|
420
420
|
] }),
|
|
421
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
422
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
423
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
424
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
421
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBL6XZ2XDcjs.AlertDialog, { open: closeDialogOpen, onOpenChange: setCloseDialogOpen, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkBL6XZ2XDcjs.AlertDialogContent, { className: "bg-ods-card border-ods-border", children: [
|
|
422
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkBL6XZ2XDcjs.AlertDialogHeader, { children: [
|
|
423
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBL6XZ2XDcjs.AlertDialogTitle, { className: "text-ods-text-primary", children: "Close this ticket?" }),
|
|
424
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBL6XZ2XDcjs.AlertDialogDescription, { className: "text-ods-text-secondary", children: "Add an optional resolution note below. You can reopen the ticket later if needed." })
|
|
425
425
|
] }),
|
|
426
426
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
427
|
-
|
|
427
|
+
_chunkBL6XZ2XDcjs.Textarea,
|
|
428
428
|
{
|
|
429
429
|
value: resolution,
|
|
430
430
|
onChange: (e) => setResolution(e.target.value),
|
|
@@ -434,9 +434,9 @@ function TicketReplyComposer({
|
|
|
434
434
|
className: "mt-2"
|
|
435
435
|
}
|
|
436
436
|
),
|
|
437
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
437
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkBL6XZ2XDcjs.AlertDialogFooter, { children: [
|
|
438
438
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
439
|
-
|
|
439
|
+
_chunkBL6XZ2XDcjs.AlertDialogCancel,
|
|
440
440
|
{
|
|
441
441
|
disabled: busy,
|
|
442
442
|
className: "bg-transparent border-ods-border text-ods-text-primary hover:bg-ods-border",
|
|
@@ -444,7 +444,7 @@ function TicketReplyComposer({
|
|
|
444
444
|
}
|
|
445
445
|
),
|
|
446
446
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
447
|
-
|
|
447
|
+
_chunkBL6XZ2XDcjs.AlertDialogAction,
|
|
448
448
|
{
|
|
449
449
|
onClick: () => void confirmClose(),
|
|
450
450
|
disabled: busy,
|
|
@@ -514,7 +514,7 @@ var TICKET_FEED_HEIGHT = "h-[60vh] md:h-[420px]";
|
|
|
514
514
|
var TICKET_FEED_INNER = "flex flex-col gap-4 md:gap-6 px-4 md:px-6 py-4 md:py-6";
|
|
515
515
|
var TICKET_FEED_SKELETON_ROWS = 6;
|
|
516
516
|
function TicketTimelinePanel({ ticket }) {
|
|
517
|
-
const identity =
|
|
517
|
+
const identity = _chunkBL6XZ2XDcjs.useChatIdentity.call(void 0, );
|
|
518
518
|
const externalId = isOptimistic(ticket) ? null : ticket.external_id;
|
|
519
519
|
const { engagements, isLoading } = useTicketEngagements(
|
|
520
520
|
externalId,
|
|
@@ -534,11 +534,11 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
534
534
|
const customerName = (isViewerTheCustomer ? viewerName : null) || ticketCustomerName || viewerName || _optionalChain([identity, 'access', _19 => _19.user, 'optionalAccess', _20 => _20.email]) || "You";
|
|
535
535
|
const customerAvatar = isViewerTheCustomer ? _nullishCoalesce(_optionalChain([identity, 'access', _21 => _21.user, 'optionalAccess', _22 => _22.avatarUrl]), () => ( void 0)) : void 0;
|
|
536
536
|
if (isLoading) {
|
|
537
|
-
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,
|
|
537
|
+
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, _chunkBL6XZ2XDcjs.ChatMessageRowSkeleton, {}, i)) }) });
|
|
538
538
|
}
|
|
539
539
|
if (bodyTurns.length === 0 && engagements.length === 0) {
|
|
540
540
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
541
|
-
|
|
541
|
+
_chunkPQEQUMSScjs.EmptyState,
|
|
542
542
|
{
|
|
543
543
|
type: "generic",
|
|
544
544
|
title: "No conversation yet",
|
|
@@ -553,7 +553,7 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
553
553
|
const isResolution = turn.startsWith("[Resolution]");
|
|
554
554
|
const text = isResolution ? turn.replace(/^\[Resolution\]\s*/, "") : turn;
|
|
555
555
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
556
|
-
|
|
556
|
+
_chunkBL6XZ2XDcjs.ChatMessageRow,
|
|
557
557
|
{
|
|
558
558
|
displayName: customerName,
|
|
559
559
|
avatarUrl: customerAvatar,
|
|
@@ -582,13 +582,13 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
582
582
|
}
|
|
583
583
|
const engAttachments = mapEngagementAttachments(eng.attachments);
|
|
584
584
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
585
|
-
|
|
585
|
+
_chunkBL6XZ2XDcjs.ChatMessageRow,
|
|
586
586
|
{
|
|
587
587
|
displayName: author,
|
|
588
588
|
avatarUrl: avatarSrc,
|
|
589
|
-
timeLabel: eng.createdAt ?
|
|
589
|
+
timeLabel: eng.createdAt ? _chunkBL6XZ2XDcjs.formatRelativeTime.call(void 0, eng.createdAt) : null,
|
|
590
590
|
body: stripAttachmentsPreamble(_nullishCoalesce(eng.body, () => ( ""))),
|
|
591
|
-
footer: engAttachments.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
591
|
+
footer: engAttachments.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBL6XZ2XDcjs.TicketAttachmentsList, { attachments: engAttachments, size: "compact" }) }) : null
|
|
592
592
|
},
|
|
593
593
|
eng.id
|
|
594
594
|
);
|
|
@@ -676,7 +676,7 @@ function AssignedAgentRow({
|
|
|
676
676
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary uppercase tracking-wider font-medium", children: "Assigned to" }),
|
|
677
677
|
displayLabel ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-1.5 text-ods-text-primary font-medium", children: [
|
|
678
678
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
679
|
-
|
|
679
|
+
_chunkBL6XZ2XDcjs.SquareAvatar,
|
|
680
680
|
{
|
|
681
681
|
size: "sm",
|
|
682
682
|
variant: "round",
|
|
@@ -734,7 +734,7 @@ function TicketRow({
|
|
|
734
734
|
// so the badge accurately reflects "Closed" with a checkmark.
|
|
735
735
|
statusLabel: _nullishCoalesce(ticket.pipeline_stage_label, () => ( void 0)),
|
|
736
736
|
category: _nullishCoalesce(ticket.customer_company, () => ( void 0)),
|
|
737
|
-
timeAgo: ticket.hubspot_updated_at ?
|
|
737
|
+
timeAgo: ticket.hubspot_updated_at ? _chunkBL6XZ2XDcjs.formatRelativeTime.call(void 0, ticket.hubspot_updated_at) : void 0,
|
|
738
738
|
// Linked-work chip: surfaced whenever the ticket has a linked
|
|
739
739
|
// ClickUp task. Uses the linked task's own status so the chip text
|
|
740
740
|
// reads "Working" / "Waiting on version release" / etc. — useful
|
|
@@ -749,7 +749,7 @@ function TicketRow({
|
|
|
749
749
|
className: "border-b border-ods-border last:border-b-0",
|
|
750
750
|
children: [
|
|
751
751
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
752
|
-
|
|
752
|
+
_chunkBL6XZ2XDcjs.ChatTicketItem,
|
|
753
753
|
{
|
|
754
754
|
ticket: tileData,
|
|
755
755
|
onClick: optimistic ? void 0 : handleClick,
|
|
@@ -1319,13 +1319,13 @@ function resolveErrorCode(bodyCode, status) {
|
|
|
1319
1319
|
// src/components/tickets/ticket-center.tsx
|
|
1320
1320
|
|
|
1321
1321
|
function TicketCenter({ toast: toast2 = _chunkWMSTJAZTcjs.toast } = {}) {
|
|
1322
|
-
const identity =
|
|
1322
|
+
const identity = _chunkBL6XZ2XDcjs.useChatIdentity.call(void 0, );
|
|
1323
1323
|
if (identity.isLoading) {
|
|
1324
1324
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketCenterSkeleton, {});
|
|
1325
1325
|
}
|
|
1326
1326
|
if (identity.authTier === "anon" || !_optionalChain([identity, 'access', _58 => _58.user, 'optionalAccess', _59 => _59.email])) {
|
|
1327
1327
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1328
|
-
|
|
1328
|
+
_chunkPQEQUMSScjs.EmptyState,
|
|
1329
1329
|
{
|
|
1330
1330
|
type: "generic",
|
|
1331
1331
|
title: "Sign in to manage tickets",
|
|
@@ -1396,7 +1396,7 @@ function TicketCenterAuthed({
|
|
|
1396
1396
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 text-xs text-ods-text-secondary", children: [
|
|
1397
1397
|
lastUpdatedAt && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { children: [
|
|
1398
1398
|
"Updated ",
|
|
1399
|
-
|
|
1399
|
+
_chunkBL6XZ2XDcjs.formatRelativeTime.call(void 0, new Date(lastUpdatedAt))
|
|
1400
1400
|
] }),
|
|
1401
1401
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1402
1402
|
_chunkFQOTC3UUcjs.Button,
|
|
@@ -1412,18 +1412,18 @@ function TicketCenterAuthed({
|
|
|
1412
1412
|
)
|
|
1413
1413
|
] })
|
|
1414
1414
|
] }),
|
|
1415
|
-
isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketListSkeleton, {}) : merged.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1416
|
-
|
|
1415
|
+
isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketListSkeleton, {}) : merged.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBL6XZ2XDcjs.Card, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1416
|
+
_chunkPQEQUMSScjs.EmptyState,
|
|
1417
1417
|
{
|
|
1418
1418
|
type: "generic",
|
|
1419
1419
|
title: "No tickets yet",
|
|
1420
1420
|
description: "Open one above to start the conversation.",
|
|
1421
1421
|
showCTA: false
|
|
1422
1422
|
}
|
|
1423
|
-
) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1423
|
+
) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBL6XZ2XDcjs.Card, { className: "overflow-hidden", children: merged.map((ticket) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1424
1424
|
TicketRow,
|
|
1425
1425
|
{
|
|
1426
|
-
id:
|
|
1426
|
+
id: _chunkBL6XZ2XDcjs.devSectionAnchorId.call(void 0, "ticket", ticket.external_id),
|
|
1427
1427
|
ticket,
|
|
1428
1428
|
expanded: expandedTicketId === ticket.id,
|
|
1429
1429
|
onToggle: toggleRow,
|
|
@@ -1441,7 +1441,7 @@ function TicketCenterAuthed({
|
|
|
1441
1441
|
}
|
|
1442
1442
|
function TicketCenterSkeleton() {
|
|
1443
1443
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6", children: [
|
|
1444
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1444
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkBL6XZ2XDcjs.Card, { className: "p-6", children: [
|
|
1445
1445
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFQOTC3UUcjs.Skeleton, { className: "h-7 w-48 mb-4" }),
|
|
1446
1446
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFQOTC3UUcjs.Skeleton, { className: "h-10 w-full mb-3" }),
|
|
1447
1447
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFQOTC3UUcjs.Skeleton, { className: "h-24 w-full" })
|
|
@@ -1450,7 +1450,7 @@ function TicketCenterSkeleton() {
|
|
|
1450
1450
|
] });
|
|
1451
1451
|
}
|
|
1452
1452
|
function TicketListSkeleton() {
|
|
1453
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1453
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBL6XZ2XDcjs.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: [
|
|
1454
1454
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 flex flex-col gap-2", children: [
|
|
1455
1455
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFQOTC3UUcjs.Skeleton, { className: "h-4 w-2/3" }),
|
|
1456
1456
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFQOTC3UUcjs.Skeleton, { className: "h-3 w-full" })
|
|
@@ -1463,7 +1463,7 @@ function TicketListSkeleton() {
|
|
|
1463
1463
|
// src/components/tickets/help-center-list.tsx
|
|
1464
1464
|
|
|
1465
1465
|
|
|
1466
|
-
|
|
1466
|
+
_chunkPQEQUMSScjs.init_unified_pagination.call(void 0, );
|
|
1467
1467
|
|
|
1468
1468
|
// src/components/tickets/help-center-card.tsx
|
|
1469
1469
|
|
|
@@ -1485,7 +1485,7 @@ function HelpCenterCard({
|
|
|
1485
1485
|
const optimistic = isOptimistic(ticket);
|
|
1486
1486
|
const rawStatus = (_nullishCoalesce(ticket.status, () => ( "OPEN"))).toUpperCase();
|
|
1487
1487
|
const priority = (_nullishCoalesce(ticket.priority, () => ( ""))).toUpperCase();
|
|
1488
|
-
const relativeUpdated = ticket.hubspot_updated_at ?
|
|
1488
|
+
const relativeUpdated = ticket.hubspot_updated_at ? _chunkBL6XZ2XDcjs.formatRelativeTime.call(void 0, ticket.hubspot_updated_at) : "recently";
|
|
1489
1489
|
const title = (ticket.subject || "").trim() || "(untitled)";
|
|
1490
1490
|
const subtitle = `UPDATED ${relativeUpdated}, #${ticket.external_id || "\u2014"}${ticket.pipeline_stage_label ? `, ${ticket.pipeline_stage_label}` : ""}`;
|
|
1491
1491
|
const description = _nullishCoalesce(_nullishCoalesce(ticket.preview, () => ( ticket.body)), () => ( ""));
|
|
@@ -1506,16 +1506,16 @@ function HelpCenterCard({
|
|
|
1506
1506
|
}, [isExpanded]);
|
|
1507
1507
|
const rightBadges = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
1508
1508
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1509
|
-
|
|
1509
|
+
_chunkBL6XZ2XDcjs.StatusBadge,
|
|
1510
1510
|
{
|
|
1511
1511
|
text: rawStatus,
|
|
1512
|
-
colorScheme:
|
|
1512
|
+
colorScheme: _chunkBL6XZ2XDcjs.getStatusColorScheme.call(void 0, rawStatus),
|
|
1513
1513
|
variant: "card",
|
|
1514
1514
|
className: "border border-ods-border"
|
|
1515
1515
|
}
|
|
1516
1516
|
),
|
|
1517
1517
|
priority && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1518
|
-
|
|
1518
|
+
_chunkBL6XZ2XDcjs.StatusBadge,
|
|
1519
1519
|
{
|
|
1520
1520
|
text: priority,
|
|
1521
1521
|
colorScheme: mapPriorityScheme(priority),
|
|
@@ -1543,7 +1543,7 @@ function HelpCenterCard({
|
|
|
1543
1543
|
"aria-controls": isExpanded ? `help-center-drawer-${ticket.id}` : void 0,
|
|
1544
1544
|
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",
|
|
1545
1545
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1546
|
-
|
|
1546
|
+
_chunkPQEQUMSScjs.DevCardRowContent,
|
|
1547
1547
|
{
|
|
1548
1548
|
title,
|
|
1549
1549
|
subtitle,
|
|
@@ -1618,7 +1618,7 @@ function HelpCenterCreateForm({
|
|
|
1618
1618
|
const [subject, setSubject] = _react.useState.call(void 0, "");
|
|
1619
1619
|
const [subjectError, setSubjectError] = _react.useState.call(void 0, null);
|
|
1620
1620
|
const subjectField = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col", children: [
|
|
1621
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1621
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkBL6XZ2XDcjs.Label, { htmlFor: "help-center-subject", children: [
|
|
1622
1622
|
"Subject",
|
|
1623
1623
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-accent", children: "*" })
|
|
1624
1624
|
] }),
|
|
@@ -1650,7 +1650,7 @@ function HelpCenterCreateForm({
|
|
|
1650
1650
|
)
|
|
1651
1651
|
] });
|
|
1652
1652
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1653
|
-
|
|
1653
|
+
_chunk57HYFVTZcjs.ContactForm,
|
|
1654
1654
|
{
|
|
1655
1655
|
title: "Open a new ticket",
|
|
1656
1656
|
footerText: "The support team typically responds within one business day.",
|
|
@@ -1688,7 +1688,7 @@ function HelpCenterCreateForm({
|
|
|
1688
1688
|
// src/components/tickets/help-center-list.tsx
|
|
1689
1689
|
|
|
1690
1690
|
function HelpCenterList({ toast: toast2 = _chunkWMSTJAZTcjs.toast, backButton } = {}) {
|
|
1691
|
-
const identity =
|
|
1691
|
+
const identity = _chunkBL6XZ2XDcjs.useChatIdentity.call(void 0, );
|
|
1692
1692
|
const searchParams = _chunkG7UE6RKVcjs.useSearchParams.call(void 0, );
|
|
1693
1693
|
const router = _chunkG7UE6RKVcjs.useRouter.call(void 0, );
|
|
1694
1694
|
const pathname = _chunkG7UE6RKVcjs.usePathname.call(void 0, );
|
|
@@ -1698,11 +1698,11 @@ function HelpCenterList({ toast: toast2 = _chunkWMSTJAZTcjs.toast, backButton }
|
|
|
1698
1698
|
const rawPage = Number(searchParams.get("page"));
|
|
1699
1699
|
const page = Number.isFinite(rawPage) && rawPage > 0 ? Math.floor(rawPage) : 1;
|
|
1700
1700
|
if (identity.isLoading) {
|
|
1701
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1701
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPQEQUMSScjs.DevSectionPage, { sectionKey: "tickets", backButton, preControls: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HelpCenterCreateFormSkeleton, {}), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPQEQUMSScjs.DevCardRowSkeletonList, {}) });
|
|
1702
1702
|
}
|
|
1703
1703
|
if (identity.authTier === "anon" || !_optionalChain([identity, 'access', _60 => _60.user, 'optionalAccess', _61 => _61.email])) {
|
|
1704
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1705
|
-
|
|
1704
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPQEQUMSScjs.DevSectionPage, { sectionKey: "tickets", backButton, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1705
|
+
_chunkPQEQUMSScjs.EmptyState,
|
|
1706
1706
|
{
|
|
1707
1707
|
type: "generic",
|
|
1708
1708
|
title: "Sign in to manage tickets",
|
|
@@ -1830,15 +1830,15 @@ function HelpCenterListAuthed({
|
|
|
1830
1830
|
] }),
|
|
1831
1831
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFQOTC3UUcjs.Button, { type: "button", variant: "accent", onClick: () => refetch(), children: "Retry" })
|
|
1832
1832
|
] }),
|
|
1833
|
-
!error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1833
|
+
!error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPQEQUMSScjs.DevCardRowSkeletonList, {}) : !hasResults && isFetching ? (
|
|
1834
1834
|
// Bridge state — background refetch in flight and the
|
|
1835
1835
|
// optimistic placeholder was just removed by the mutation
|
|
1836
1836
|
// callback. Without this branch "No tickets yet" would flash
|
|
1837
1837
|
// for ~50ms between `removeOptimistic` and the server
|
|
1838
1838
|
// response landing.
|
|
1839
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1839
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPQEQUMSScjs.DevCardRowSkeletonList, { rows: 1 })
|
|
1840
1840
|
) : !hasResults ? hasActiveFilters ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1841
|
-
|
|
1841
|
+
_chunkPQEQUMSScjs.EmptyState,
|
|
1842
1842
|
{
|
|
1843
1843
|
type: "search",
|
|
1844
1844
|
title: "No tickets found",
|
|
@@ -1853,7 +1853,7 @@ function HelpCenterListAuthed({
|
|
|
1853
1853
|
}
|
|
1854
1854
|
}
|
|
1855
1855
|
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1856
|
-
|
|
1856
|
+
_chunkPQEQUMSScjs.EmptyState,
|
|
1857
1857
|
{
|
|
1858
1858
|
type: "generic",
|
|
1859
1859
|
title: "No tickets yet",
|
|
@@ -1872,7 +1872,7 @@ function HelpCenterListAuthed({
|
|
|
1872
1872
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "bg-ods-card border border-ods-border rounded-[6px] overflow-clip w-full", children: merged.map((ticket) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1873
1873
|
HelpCenterCard,
|
|
1874
1874
|
{
|
|
1875
|
-
id:
|
|
1875
|
+
id: _chunkBL6XZ2XDcjs.devSectionAnchorId.call(void 0, "ticket", ticket.external_id),
|
|
1876
1876
|
ticket,
|
|
1877
1877
|
expanded: expandedTicketId === ticket.id,
|
|
1878
1878
|
onToggle: toggleRow,
|
|
@@ -1888,9 +1888,9 @@ function HelpCenterListAuthed({
|
|
|
1888
1888
|
ticket.id
|
|
1889
1889
|
)) })
|
|
1890
1890
|
) }),
|
|
1891
|
-
!error && totalPages > 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1891
|
+
!error && totalPages > 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPQEQUMSScjs.UnifiedPagination, { currentPage: page, totalPages })
|
|
1892
1892
|
] });
|
|
1893
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1893
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPQEQUMSScjs.DevSectionPage, { sectionKey: "tickets", backButton, preControls: form, children: body });
|
|
1894
1894
|
}
|
|
1895
1895
|
|
|
1896
1896
|
|
|
@@ -7,11 +7,11 @@ import {
|
|
|
7
7
|
EmptyState,
|
|
8
8
|
UnifiedPagination,
|
|
9
9
|
init_unified_pagination
|
|
10
|
-
} from "../../chunk-
|
|
10
|
+
} from "../../chunk-RY62M66O.js";
|
|
11
11
|
import "../../chunk-4XLJWX2N.js";
|
|
12
12
|
import {
|
|
13
13
|
ContactForm
|
|
14
|
-
} from "../../chunk-
|
|
14
|
+
} from "../../chunk-XKIO5K5N.js";
|
|
15
15
|
import {
|
|
16
16
|
AlertDialog,
|
|
17
17
|
AlertDialogAction,
|
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
getStatusColorScheme,
|
|
39
39
|
useChatAttachments,
|
|
40
40
|
useChatIdentity
|
|
41
|
-
} from "../../chunk-
|
|
41
|
+
} from "../../chunk-5MLYCLOI.js";
|
|
42
42
|
import {
|
|
43
43
|
STICKY_HEADER_OFFSET_PX,
|
|
44
44
|
embedAuthedFetch,
|