@flamingo-stack/openframe-frontend-core 0.0.209 → 0.0.210
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-GIKD2LWD.js → chunk-ATEUJQKU.js} +2 -2
- package/dist/{chunk-Y7IXGY7T.cjs → chunk-MDTIOPVS.cjs} +24 -24
- package/dist/{chunk-Y7IXGY7T.cjs.map → chunk-MDTIOPVS.cjs.map} +1 -1
- package/dist/{chunk-HZT4YU33.js → chunk-R5RNRH62.js} +36 -22
- package/dist/chunk-R5RNRH62.js.map +1 -0
- package/dist/{chunk-SJQLTQC7.cjs → chunk-TWKPYZNQ.cjs} +32 -18
- package/dist/chunk-TWKPYZNQ.cjs.map +1 -0
- package/dist/{chunk-S2B3UFVP.cjs → chunk-VBFOCTMD.cjs} +17 -17
- package/dist/{chunk-S2B3UFVP.cjs.map → chunk-VBFOCTMD.cjs.map} +1 -1
- package/dist/{chunk-RFSBDUXD.js → chunk-WJBPLMBX.js} +2 -2
- package/dist/components/chat/entity-cards/blog-card.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/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/index.cjs +49 -49
- package/dist/components/index.js +2 -2
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/tickets/index.cjs +59 -59
- 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/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/components/chat/entity-cards/blog-card.tsx +25 -16
- package/dist/chunk-HZT4YU33.js.map +0 -1
- package/dist/chunk-SJQLTQC7.cjs.map +0 -1
- /package/dist/{chunk-GIKD2LWD.js.map → chunk-ATEUJQKU.js.map} +0 -0
- /package/dist/{chunk-RFSBDUXD.js.map → chunk-WJBPLMBX.js.map} +0 -0
package/dist/components/index.js
CHANGED
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
UnifiedPagination,
|
|
12
12
|
init_unified_pagination,
|
|
13
13
|
unified_pagination_exports
|
|
14
|
-
} from "../chunk-
|
|
14
|
+
} from "../chunk-ATEUJQKU.js";
|
|
15
15
|
import "../chunk-4XLJWX2N.js";
|
|
16
16
|
import {
|
|
17
17
|
AIEnrichButton,
|
|
@@ -617,7 +617,7 @@ import {
|
|
|
617
617
|
useTheme,
|
|
618
618
|
useThemeToggle,
|
|
619
619
|
useUnifiedChat
|
|
620
|
-
} from "../chunk-
|
|
620
|
+
} from "../chunk-R5RNRH62.js";
|
|
621
621
|
import {
|
|
622
622
|
CommandApprovalToast,
|
|
623
623
|
ToastCard,
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _chunkTWKPYZNQcjs = require('../../chunk-TWKPYZNQ.cjs');
|
|
19
19
|
require('../../chunk-EH3RWVF3.cjs');
|
|
20
20
|
require('../../chunk-24KCAECR.cjs');
|
|
21
21
|
require('../../chunk-65CPJ4SX.cjs');
|
|
@@ -45,5 +45,5 @@ require('../../chunk-VRHGVLSL.cjs');
|
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
|
|
48
|
-
exports.AppHeader =
|
|
48
|
+
exports.AppHeader = _chunkTWKPYZNQcjs.AppHeader; exports.AppLayout = _chunkTWKPYZNQcjs.AppLayout; exports.ClientOnlyHeader = _chunkTWKPYZNQcjs.ClientOnlyHeader; exports.Header = _chunkTWKPYZNQcjs.Header; exports.HeaderButton = _chunkTWKPYZNQcjs.HeaderButton; exports.HeaderGlobalSearch = _chunkTWKPYZNQcjs.HeaderGlobalSearch; exports.HeaderOrganizationFilter = _chunkTWKPYZNQcjs.HeaderOrganizationFilter; exports.HeaderSkeleton = _chunkTWKPYZNQcjs.HeaderSkeleton; exports.MobileBurgerMenu = _chunkTWKPYZNQcjs.MobileBurgerMenu; exports.MobileNavPanel = _chunkTWKPYZNQcjs.MobileNavPanel; exports.NavigationSidebar = _chunkTWKPYZNQcjs.NavigationSidebar; exports.SlidingSidebar = _chunkTWKPYZNQcjs.SlidingSidebar; exports.StickySectionNav = _chunkTWKPYZNQcjs.StickySectionNav; exports.useSectionNavigation = _chunkTWKPYZNQcjs.useSectionNavigation;
|
|
49
49
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _chunkVBFOCTMDcjs = require('../../chunk-VBFOCTMD.cjs');
|
|
13
13
|
require('../../chunk-VFKQMAUF.cjs');
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _chunkMDTIOPVScjs = require('../../chunk-MDTIOPVS.cjs');
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
|
|
@@ -35,7 +35,7 @@ var _chunkY7IXGY7Tcjs = require('../../chunk-Y7IXGY7T.cjs');
|
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
var
|
|
38
|
+
var _chunkTWKPYZNQcjs = require('../../chunk-TWKPYZNQ.cjs');
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
var _chunkEH3RWVF3cjs = require('../../chunk-EH3RWVF3.cjs');
|
|
@@ -97,7 +97,7 @@ function TicketOpenForm({
|
|
|
97
97
|
}) {
|
|
98
98
|
const [subject, setSubject] = _react.useState.call(void 0, "");
|
|
99
99
|
const [content, setContent] = _react.useState.call(void 0, "");
|
|
100
|
-
const { attachments, readyAttachments, hasInflightUploads, addFiles, removeAttachment, clear } =
|
|
100
|
+
const { attachments, readyAttachments, hasInflightUploads, addFiles, removeAttachment, clear } = _chunkTWKPYZNQcjs.useChatAttachments.call(void 0, );
|
|
101
101
|
const trimmedSubject = subject.trim();
|
|
102
102
|
const trimmedContent = content.trim();
|
|
103
103
|
const overCap = content.length > TICKET_TEXT_MAX_CHARS;
|
|
@@ -117,7 +117,7 @@ function TicketOpenForm({
|
|
|
117
117
|
clear();
|
|
118
118
|
}
|
|
119
119
|
};
|
|
120
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
120
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTWKPYZNQcjs.Card, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: handleSubmit, className: "flex flex-col md:flex-row gap-6", children: [
|
|
121
121
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0 md:max-w-md", children: [
|
|
122
122
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-2xl font-semibold text-ods-text-primary mb-2", children: "Need Support?" }),
|
|
123
123
|
/* @__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." }),
|
|
@@ -156,7 +156,7 @@ function TicketOpenForm({
|
|
|
156
156
|
}
|
|
157
157
|
),
|
|
158
158
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
159
|
-
|
|
159
|
+
_chunkTWKPYZNQcjs.Textarea,
|
|
160
160
|
{
|
|
161
161
|
id: "ticket-content",
|
|
162
162
|
placeholder: "Describe your issue or question in detail...",
|
|
@@ -180,7 +180,7 @@ function TicketOpenForm({
|
|
|
180
180
|
)
|
|
181
181
|
] }),
|
|
182
182
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
183
|
-
|
|
183
|
+
_chunkTWKPYZNQcjs.ChatAttachmentChipStrip,
|
|
184
184
|
{
|
|
185
185
|
attachments,
|
|
186
186
|
onRemove: removeAttachment,
|
|
@@ -189,7 +189,7 @@ function TicketOpenForm({
|
|
|
189
189
|
),
|
|
190
190
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between gap-3", children: [
|
|
191
191
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
192
|
-
|
|
192
|
+
_chunkTWKPYZNQcjs.ChatAttachmentAddButton,
|
|
193
193
|
{
|
|
194
194
|
attachmentsEnabled: !supportSystemDown,
|
|
195
195
|
attachmentsCount: attachments.length,
|
|
@@ -227,7 +227,7 @@ _chunkUXZ3ZJ3Mcjs.init_button2.call(void 0, );
|
|
|
227
227
|
|
|
228
228
|
var LIST_ENGAGEMENTS_ENDPOINT = "/api/chat/agent/list-engagements";
|
|
229
229
|
function useTicketEngagements(externalTicketId, enabled = true) {
|
|
230
|
-
const identity =
|
|
230
|
+
const identity = _chunkTWKPYZNQcjs.useChatIdentity.call(void 0, );
|
|
231
231
|
const identityKey = _nullishCoalesce(_optionalChain([identity, 'access', _ => _.user, 'optionalAccess', _2 => _2.email]), () => ( "anon"));
|
|
232
232
|
const queryEnabled = enabled && identity.authTier !== "anon" && !!_optionalChain([identity, 'access', _3 => _3.user, 'optionalAccess', _4 => _4.email]) && !!externalTicketId && !externalTicketId.startsWith("temp-");
|
|
233
233
|
const query = _reactquery.useQuery.call(void 0, {
|
|
@@ -241,7 +241,7 @@ function useTicketEngagements(externalTicketId, enabled = true) {
|
|
|
241
241
|
refetchOnMount: "always",
|
|
242
242
|
refetchOnWindowFocus: true,
|
|
243
243
|
queryFn: async () => {
|
|
244
|
-
const response = await
|
|
244
|
+
const response = await _chunkTWKPYZNQcjs.embedAuthedFetch.call(void 0, LIST_ENGAGEMENTS_ENDPOINT, {
|
|
245
245
|
method: "POST",
|
|
246
246
|
body: JSON.stringify({ ticket_id: externalTicketId })
|
|
247
247
|
});
|
|
@@ -289,7 +289,7 @@ function TicketLinkedDeliveryCard({
|
|
|
289
289
|
{
|
|
290
290
|
className: `rounded-md border border-ods-border bg-ods-bg overflow-hidden ${_nullishCoalesce(className, () => ( ""))}`,
|
|
291
291
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
292
|
-
|
|
292
|
+
_chunkVBFOCTMDcjs.DeliveryRow,
|
|
293
293
|
{
|
|
294
294
|
item,
|
|
295
295
|
href: clickup.delivery_href,
|
|
@@ -342,7 +342,7 @@ function TicketDetailDrawer({
|
|
|
342
342
|
}
|
|
343
343
|
var TURN_SEPARATOR_RE = /[\s]{1,16}---[\s]{1,16}/g;
|
|
344
344
|
function TicketTimelinePanel({ ticket }) {
|
|
345
|
-
const identity =
|
|
345
|
+
const identity = _chunkTWKPYZNQcjs.useChatIdentity.call(void 0, );
|
|
346
346
|
const externalId = isOptimistic(ticket) ? null : ticket.external_id;
|
|
347
347
|
const { engagements, isLoading } = useTicketEngagements(externalId, !!externalId);
|
|
348
348
|
const bodyTurns = ticket.body ? ticket.body.split(TURN_SEPARATOR_RE).map((t) => t.trim()).filter(Boolean) : [];
|
|
@@ -354,10 +354,10 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
354
354
|
const customerAvatar = isViewerTheCustomer ? _nullishCoalesce(_optionalChain([identity, 'access', _20 => _20.user, 'optionalAccess', _21 => _21.avatarUrl]), () => ( void 0)) : void 0;
|
|
355
355
|
if (bodyTurns.length === 0 && engagements.length === 0) {
|
|
356
356
|
if (isLoading) {
|
|
357
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
357
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVBFOCTMDcjs.ConversationCardRowSkeletonList, { rows: 2 });
|
|
358
358
|
}
|
|
359
359
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
360
|
-
|
|
360
|
+
_chunkVBFOCTMDcjs.EmptyState,
|
|
361
361
|
{
|
|
362
362
|
type: "generic",
|
|
363
363
|
title: "No conversation yet",
|
|
@@ -372,7 +372,7 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
372
372
|
const role = i === 0 ? "Original message" : isResolution ? "Resolution" : `Update ${i}`;
|
|
373
373
|
const text = isResolution ? turn.replace(/^\[Resolution\]\s*/, "") : turn;
|
|
374
374
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
375
|
-
|
|
375
|
+
_chunkVBFOCTMDcjs.ConversationCardRow,
|
|
376
376
|
{
|
|
377
377
|
author: customerName,
|
|
378
378
|
role,
|
|
@@ -402,7 +402,7 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
402
402
|
avatarSrc = void 0;
|
|
403
403
|
}
|
|
404
404
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
405
|
-
|
|
405
|
+
_chunkVBFOCTMDcjs.ConversationCardRow,
|
|
406
406
|
{
|
|
407
407
|
author,
|
|
408
408
|
role: isCustomer ? "Reply" : "Note",
|
|
@@ -419,7 +419,7 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
419
419
|
// content rendered — drawer is showing the customer's body
|
|
420
420
|
// turns + cached engagements while a background refetch is
|
|
421
421
|
// in flight. Single row keeps the placeholder modest.
|
|
422
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
422
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVBFOCTMDcjs.ConversationCardRowSkeletonList, { rows: 1 })
|
|
423
423
|
] });
|
|
424
424
|
}
|
|
425
425
|
function mapEngagementAttachments(files) {
|
|
@@ -472,7 +472,7 @@ function OpenActions({
|
|
|
472
472
|
const [messageText, setMessageText] = _react.useState.call(void 0, "");
|
|
473
473
|
const [resolution, setResolution] = _react.useState.call(void 0, "");
|
|
474
474
|
const [closeDialogOpen, setCloseDialogOpen] = _react.useState.call(void 0, false);
|
|
475
|
-
const attachments =
|
|
475
|
+
const attachments = _chunkTWKPYZNQcjs.useChatAttachments.call(void 0, );
|
|
476
476
|
const disabled = busy || supportSystemDown;
|
|
477
477
|
const ticketRef = { id: ticket.id, external_id: ticket.external_id };
|
|
478
478
|
const hasText = messageText.trim().length > 0;
|
|
@@ -495,7 +495,7 @@ function OpenActions({
|
|
|
495
495
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-3", children: [
|
|
496
496
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2", children: [
|
|
497
497
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
498
|
-
|
|
498
|
+
_chunkTWKPYZNQcjs.Textarea,
|
|
499
499
|
{
|
|
500
500
|
value: messageText,
|
|
501
501
|
onChange: (e) => setMessageText(e.target.value),
|
|
@@ -506,7 +506,7 @@ function OpenActions({
|
|
|
506
506
|
}
|
|
507
507
|
),
|
|
508
508
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
509
|
-
|
|
509
|
+
_chunkTWKPYZNQcjs.ChatAttachmentChipStrip,
|
|
510
510
|
{
|
|
511
511
|
attachments: attachments.attachments,
|
|
512
512
|
onRemove: attachments.removeAttachment,
|
|
@@ -516,7 +516,7 @@ function OpenActions({
|
|
|
516
516
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex justify-between items-center gap-2 flex-wrap", children: [
|
|
517
517
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
|
|
518
518
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
519
|
-
|
|
519
|
+
_chunkTWKPYZNQcjs.ChatAttachmentAddButton,
|
|
520
520
|
{
|
|
521
521
|
attachmentsEnabled: !supportSystemDown,
|
|
522
522
|
attachmentsCount: attachments.attachments.length,
|
|
@@ -551,13 +551,13 @@ function OpenActions({
|
|
|
551
551
|
] })
|
|
552
552
|
] })
|
|
553
553
|
] }),
|
|
554
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
555
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
556
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
557
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
554
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTWKPYZNQcjs.AlertDialog, { open: closeDialogOpen, onOpenChange: setCloseDialogOpen, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkTWKPYZNQcjs.AlertDialogContent, { className: "bg-ods-card border-ods-border", children: [
|
|
555
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkTWKPYZNQcjs.AlertDialogHeader, { children: [
|
|
556
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTWKPYZNQcjs.AlertDialogTitle, { className: "text-ods-text-primary font-['DM_Sans'] text-[20px] font-semibold", children: "Close this ticket?" }),
|
|
557
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTWKPYZNQcjs.AlertDialogDescription, { className: "text-ods-text-secondary font-['DM_Sans'] text-[14px]", children: "Add an optional resolution note below. You can reopen the ticket later if needed." })
|
|
558
558
|
] }),
|
|
559
559
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
560
|
-
|
|
560
|
+
_chunkTWKPYZNQcjs.Textarea,
|
|
561
561
|
{
|
|
562
562
|
value: resolution,
|
|
563
563
|
onChange: (e) => setResolution(e.target.value),
|
|
@@ -567,9 +567,9 @@ function OpenActions({
|
|
|
567
567
|
className: "mt-2"
|
|
568
568
|
}
|
|
569
569
|
),
|
|
570
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
570
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkTWKPYZNQcjs.AlertDialogFooter, { children: [
|
|
571
571
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
572
|
-
|
|
572
|
+
_chunkTWKPYZNQcjs.AlertDialogCancel,
|
|
573
573
|
{
|
|
574
574
|
disabled: busy,
|
|
575
575
|
className: "bg-transparent border-ods-border text-ods-text-primary hover:bg-ods-border",
|
|
@@ -577,7 +577,7 @@ function OpenActions({
|
|
|
577
577
|
}
|
|
578
578
|
),
|
|
579
579
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
580
|
-
|
|
580
|
+
_chunkTWKPYZNQcjs.AlertDialogAction,
|
|
581
581
|
{
|
|
582
582
|
onClick: () => void confirmClose(),
|
|
583
583
|
disabled: busy,
|
|
@@ -625,7 +625,7 @@ function TicketRow({
|
|
|
625
625
|
// so the badge accurately reflects "Closed" with a checkmark.
|
|
626
626
|
statusLabel: _nullishCoalesce(ticket.pipeline_stage_label, () => ( void 0)),
|
|
627
627
|
category: _nullishCoalesce(ticket.customer_company, () => ( void 0)),
|
|
628
|
-
timeAgo: ticket.hubspot_updated_at ?
|
|
628
|
+
timeAgo: ticket.hubspot_updated_at ? _chunkTWKPYZNQcjs.formatRelativeTime.call(void 0, ticket.hubspot_updated_at) : void 0,
|
|
629
629
|
// Linked-work chip: surfaced whenever the ticket has a linked
|
|
630
630
|
// ClickUp task. Uses the linked task's own status so the chip text
|
|
631
631
|
// reads "Working" / "Waiting on version release" / etc. — useful
|
|
@@ -640,7 +640,7 @@ function TicketRow({
|
|
|
640
640
|
className: "border-b border-ods-border last:border-b-0",
|
|
641
641
|
children: [
|
|
642
642
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
643
|
-
|
|
643
|
+
_chunkTWKPYZNQcjs.ChatTicketItem,
|
|
644
644
|
{
|
|
645
645
|
ticket: tileData,
|
|
646
646
|
onClick: optimistic ? void 0 : onToggle,
|
|
@@ -704,7 +704,7 @@ function useTicketsList(filters) {
|
|
|
704
704
|
pageSize
|
|
705
705
|
};
|
|
706
706
|
if (statusFilter) body.status = statusFilter;
|
|
707
|
-
const response = await
|
|
707
|
+
const response = await _chunkTWKPYZNQcjs.embedAuthedFetch.call(void 0, FIND_TICKET_ENDPOINT, {
|
|
708
708
|
method: "POST",
|
|
709
709
|
body: JSON.stringify(body)
|
|
710
710
|
});
|
|
@@ -792,7 +792,7 @@ function useTicketActions(options) {
|
|
|
792
792
|
}, []);
|
|
793
793
|
const executeTicketAction = _react.useCallback.call(void 0,
|
|
794
794
|
async (toolName, args) => {
|
|
795
|
-
const res = await
|
|
795
|
+
const res = await _chunkTWKPYZNQcjs.embedAuthedFetch.call(void 0, TICKET_ACTION_ENDPOINT, {
|
|
796
796
|
method: "POST",
|
|
797
797
|
body: JSON.stringify({ tool_name: toolName, args })
|
|
798
798
|
});
|
|
@@ -1106,13 +1106,13 @@ function resolveErrorCode(bodyCode, status) {
|
|
|
1106
1106
|
// src/components/tickets/ticket-center.tsx
|
|
1107
1107
|
|
|
1108
1108
|
function TicketCenter({ toast: toast2 = _chunkEH3RWVF3cjs.toast } = {}) {
|
|
1109
|
-
const identity =
|
|
1109
|
+
const identity = _chunkTWKPYZNQcjs.useChatIdentity.call(void 0, );
|
|
1110
1110
|
if (identity.isLoading) {
|
|
1111
1111
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketCenterSkeleton, {});
|
|
1112
1112
|
}
|
|
1113
1113
|
if (identity.authTier === "anon" || !_optionalChain([identity, 'access', _50 => _50.user, 'optionalAccess', _51 => _51.email])) {
|
|
1114
1114
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1115
|
-
|
|
1115
|
+
_chunkVBFOCTMDcjs.EmptyState,
|
|
1116
1116
|
{
|
|
1117
1117
|
type: "generic",
|
|
1118
1118
|
title: "Sign in to manage tickets",
|
|
@@ -1183,7 +1183,7 @@ function TicketCenterAuthed({
|
|
|
1183
1183
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 text-xs text-ods-text-secondary", children: [
|
|
1184
1184
|
lastUpdatedAt && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { children: [
|
|
1185
1185
|
"Updated ",
|
|
1186
|
-
|
|
1186
|
+
_chunkTWKPYZNQcjs.formatRelativeTime.call(void 0, new Date(lastUpdatedAt))
|
|
1187
1187
|
] }),
|
|
1188
1188
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1189
1189
|
_chunkUXZ3ZJ3Mcjs.Button,
|
|
@@ -1199,15 +1199,15 @@ function TicketCenterAuthed({
|
|
|
1199
1199
|
)
|
|
1200
1200
|
] })
|
|
1201
1201
|
] }),
|
|
1202
|
-
isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketListSkeleton, {}) : merged.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1203
|
-
|
|
1202
|
+
isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketListSkeleton, {}) : merged.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTWKPYZNQcjs.Card, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1203
|
+
_chunkVBFOCTMDcjs.EmptyState,
|
|
1204
1204
|
{
|
|
1205
1205
|
type: "generic",
|
|
1206
1206
|
title: "No tickets yet",
|
|
1207
1207
|
description: "Open one above to start the conversation.",
|
|
1208
1208
|
showCTA: false
|
|
1209
1209
|
}
|
|
1210
|
-
) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1210
|
+
) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTWKPYZNQcjs.Card, { className: "overflow-hidden", children: merged.map((ticket) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1211
1211
|
TicketRow,
|
|
1212
1212
|
{
|
|
1213
1213
|
ticket,
|
|
@@ -1227,7 +1227,7 @@ function TicketCenterAuthed({
|
|
|
1227
1227
|
}
|
|
1228
1228
|
function TicketCenterSkeleton() {
|
|
1229
1229
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6", children: [
|
|
1230
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1230
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkTWKPYZNQcjs.Card, { className: "p-6", children: [
|
|
1231
1231
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUXZ3ZJ3Mcjs.Skeleton, { className: "h-7 w-48 mb-4" }),
|
|
1232
1232
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUXZ3ZJ3Mcjs.Skeleton, { className: "h-10 w-full mb-3" }),
|
|
1233
1233
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUXZ3ZJ3Mcjs.Skeleton, { className: "h-24 w-full" })
|
|
@@ -1236,7 +1236,7 @@ function TicketCenterSkeleton() {
|
|
|
1236
1236
|
] });
|
|
1237
1237
|
}
|
|
1238
1238
|
function TicketListSkeleton() {
|
|
1239
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1239
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTWKPYZNQcjs.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: [
|
|
1240
1240
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 flex flex-col gap-2", children: [
|
|
1241
1241
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUXZ3ZJ3Mcjs.Skeleton, { className: "h-4 w-2/3" }),
|
|
1242
1242
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUXZ3ZJ3Mcjs.Skeleton, { className: "h-3 w-full" })
|
|
@@ -1249,7 +1249,7 @@ function TicketListSkeleton() {
|
|
|
1249
1249
|
// src/components/tickets/help-center-list.tsx
|
|
1250
1250
|
|
|
1251
1251
|
|
|
1252
|
-
|
|
1252
|
+
_chunkVBFOCTMDcjs.init_unified_pagination.call(void 0, );
|
|
1253
1253
|
|
|
1254
1254
|
// src/components/tickets/help-center-card.tsx
|
|
1255
1255
|
|
|
@@ -1267,7 +1267,7 @@ function HelpCenterCard({
|
|
|
1267
1267
|
const optimistic = isOptimistic(ticket);
|
|
1268
1268
|
const rawStatus = (_nullishCoalesce(ticket.status, () => ( "OPEN"))).toUpperCase();
|
|
1269
1269
|
const priority = (_nullishCoalesce(ticket.priority, () => ( ""))).toUpperCase();
|
|
1270
|
-
const relativeUpdated = ticket.hubspot_updated_at ?
|
|
1270
|
+
const relativeUpdated = ticket.hubspot_updated_at ? _chunkTWKPYZNQcjs.formatRelativeTime.call(void 0, ticket.hubspot_updated_at) : "recently";
|
|
1271
1271
|
const title = (ticket.subject || "").trim() || "(untitled)";
|
|
1272
1272
|
const subtitle = `UPDATED ${relativeUpdated}, #${ticket.external_id || "\u2014"}${ticket.pipeline_stage_label ? `, ${ticket.pipeline_stage_label}` : ""}`;
|
|
1273
1273
|
const description = _nullishCoalesce(_nullishCoalesce(ticket.preview, () => ( ticket.body)), () => ( ""));
|
|
@@ -1275,16 +1275,16 @@ function HelpCenterCard({
|
|
|
1275
1275
|
const isExpanded = expanded && isExpandable;
|
|
1276
1276
|
const rightBadges = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
1277
1277
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1278
|
-
|
|
1278
|
+
_chunkTWKPYZNQcjs.StatusBadge,
|
|
1279
1279
|
{
|
|
1280
1280
|
text: rawStatus,
|
|
1281
|
-
colorScheme:
|
|
1281
|
+
colorScheme: _chunkTWKPYZNQcjs.getStatusColorScheme.call(void 0, rawStatus),
|
|
1282
1282
|
variant: "card",
|
|
1283
1283
|
className: "border border-ods-border"
|
|
1284
1284
|
}
|
|
1285
1285
|
),
|
|
1286
1286
|
priority && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1287
|
-
|
|
1287
|
+
_chunkTWKPYZNQcjs.StatusBadge,
|
|
1288
1288
|
{
|
|
1289
1289
|
text: priority,
|
|
1290
1290
|
colorScheme: mapPriorityScheme(priority),
|
|
@@ -1309,7 +1309,7 @@ function HelpCenterCard({
|
|
|
1309
1309
|
"aria-controls": isExpanded ? `help-center-drawer-${ticket.id}` : void 0,
|
|
1310
1310
|
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",
|
|
1311
1311
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1312
|
-
|
|
1312
|
+
_chunkVBFOCTMDcjs.DevCardRowContent,
|
|
1313
1313
|
{
|
|
1314
1314
|
title,
|
|
1315
1315
|
subtitle,
|
|
@@ -1382,7 +1382,7 @@ function HelpCenterCreateForm({
|
|
|
1382
1382
|
const [subject, setSubject] = _react.useState.call(void 0, "");
|
|
1383
1383
|
const [subjectError, setSubjectError] = _react.useState.call(void 0, null);
|
|
1384
1384
|
const subjectField = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col", children: [
|
|
1385
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1385
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkTWKPYZNQcjs.Label, { htmlFor: "help-center-subject", children: [
|
|
1386
1386
|
"Subject",
|
|
1387
1387
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-accent", children: "*" })
|
|
1388
1388
|
] }),
|
|
@@ -1414,7 +1414,7 @@ function HelpCenterCreateForm({
|
|
|
1414
1414
|
)
|
|
1415
1415
|
] });
|
|
1416
1416
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1417
|
-
|
|
1417
|
+
_chunkMDTIOPVScjs.ContactForm,
|
|
1418
1418
|
{
|
|
1419
1419
|
title: "Open a new ticket",
|
|
1420
1420
|
footerText: "The support team typically responds within one business day.",
|
|
@@ -1452,7 +1452,7 @@ function HelpCenterCreateForm({
|
|
|
1452
1452
|
// src/components/tickets/help-center-list.tsx
|
|
1453
1453
|
|
|
1454
1454
|
function HelpCenterList({ toast: toast2 = _chunkEH3RWVF3cjs.toast } = {}) {
|
|
1455
|
-
const identity =
|
|
1455
|
+
const identity = _chunkTWKPYZNQcjs.useChatIdentity.call(void 0, );
|
|
1456
1456
|
const searchParams = _chunkG7UE6RKVcjs.useSearchParams.call(void 0, );
|
|
1457
1457
|
const router = _chunkG7UE6RKVcjs.useRouter.call(void 0, );
|
|
1458
1458
|
const pathname = _chunkG7UE6RKVcjs.usePathname.call(void 0, );
|
|
@@ -1461,11 +1461,11 @@ function HelpCenterList({ toast: toast2 = _chunkEH3RWVF3cjs.toast } = {}) {
|
|
|
1461
1461
|
const rawPage = Number(searchParams.get("page"));
|
|
1462
1462
|
const page = Number.isFinite(rawPage) && rawPage > 0 ? Math.floor(rawPage) : 1;
|
|
1463
1463
|
if (identity.isLoading) {
|
|
1464
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1464
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVBFOCTMDcjs.DevSectionPage, { sectionKey: "tickets", preControls: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HelpCenterCreateFormSkeleton, {}), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVBFOCTMDcjs.DevCardRowSkeletonList, {}) });
|
|
1465
1465
|
}
|
|
1466
1466
|
if (identity.authTier === "anon" || !_optionalChain([identity, 'access', _52 => _52.user, 'optionalAccess', _53 => _53.email])) {
|
|
1467
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1468
|
-
|
|
1467
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVBFOCTMDcjs.DevSectionPage, { sectionKey: "tickets", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1468
|
+
_chunkVBFOCTMDcjs.EmptyState,
|
|
1469
1469
|
{
|
|
1470
1470
|
type: "generic",
|
|
1471
1471
|
title: "Sign in to manage tickets",
|
|
@@ -1565,15 +1565,15 @@ function HelpCenterListAuthed({
|
|
|
1565
1565
|
] }),
|
|
1566
1566
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUXZ3ZJ3Mcjs.Button, { type: "button", variant: "accent", onClick: () => refetch(), children: "Retry" })
|
|
1567
1567
|
] }),
|
|
1568
|
-
!error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1568
|
+
!error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVBFOCTMDcjs.DevCardRowSkeletonList, {}) : !hasResults && isFetching ? (
|
|
1569
1569
|
// Bridge state — background refetch in flight and the
|
|
1570
1570
|
// optimistic placeholder was just removed by the mutation
|
|
1571
1571
|
// callback. Without this branch "No tickets yet" would flash
|
|
1572
1572
|
// for ~50ms between `removeOptimistic` and the server
|
|
1573
1573
|
// response landing.
|
|
1574
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1574
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVBFOCTMDcjs.DevCardRowSkeletonList, { rows: 1 })
|
|
1575
1575
|
) : !hasResults ? hasActiveFilters ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1576
|
-
|
|
1576
|
+
_chunkVBFOCTMDcjs.EmptyState,
|
|
1577
1577
|
{
|
|
1578
1578
|
type: "search",
|
|
1579
1579
|
title: "No tickets found",
|
|
@@ -1588,7 +1588,7 @@ function HelpCenterListAuthed({
|
|
|
1588
1588
|
}
|
|
1589
1589
|
}
|
|
1590
1590
|
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1591
|
-
|
|
1591
|
+
_chunkVBFOCTMDcjs.EmptyState,
|
|
1592
1592
|
{
|
|
1593
1593
|
type: "generic",
|
|
1594
1594
|
title: "No tickets yet",
|
|
@@ -1610,9 +1610,9 @@ function HelpCenterListAuthed({
|
|
|
1610
1610
|
},
|
|
1611
1611
|
ticket.id
|
|
1612
1612
|
)) }) }),
|
|
1613
|
-
!error && totalPages > 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1613
|
+
!error && totalPages > 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVBFOCTMDcjs.UnifiedPagination, { currentPage: page, totalPages })
|
|
1614
1614
|
] });
|
|
1615
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1615
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVBFOCTMDcjs.DevSectionPage, { sectionKey: "tickets", preControls: form, children: body });
|
|
1616
1616
|
}
|
|
1617
1617
|
|
|
1618
1618
|
|
|
@@ -9,11 +9,11 @@ import {
|
|
|
9
9
|
EmptyState,
|
|
10
10
|
UnifiedPagination,
|
|
11
11
|
init_unified_pagination
|
|
12
|
-
} from "../../chunk-
|
|
12
|
+
} from "../../chunk-ATEUJQKU.js";
|
|
13
13
|
import "../../chunk-4XLJWX2N.js";
|
|
14
14
|
import {
|
|
15
15
|
ContactForm
|
|
16
|
-
} from "../../chunk-
|
|
16
|
+
} from "../../chunk-WJBPLMBX.js";
|
|
17
17
|
import {
|
|
18
18
|
AlertDialog,
|
|
19
19
|
AlertDialogAction,
|
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
getStatusColorScheme,
|
|
36
36
|
useChatAttachments,
|
|
37
37
|
useChatIdentity
|
|
38
|
-
} from "../../chunk-
|
|
38
|
+
} from "../../chunk-R5RNRH62.js";
|
|
39
39
|
import {
|
|
40
40
|
toast
|
|
41
41
|
} from "../../chunk-UYQOPC57.js";
|