@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.
Files changed (33) hide show
  1. package/dist/{chunk-GIKD2LWD.js → chunk-ATEUJQKU.js} +2 -2
  2. package/dist/{chunk-Y7IXGY7T.cjs → chunk-MDTIOPVS.cjs} +24 -24
  3. package/dist/{chunk-Y7IXGY7T.cjs.map → chunk-MDTIOPVS.cjs.map} +1 -1
  4. package/dist/{chunk-HZT4YU33.js → chunk-R5RNRH62.js} +36 -22
  5. package/dist/chunk-R5RNRH62.js.map +1 -0
  6. package/dist/{chunk-SJQLTQC7.cjs → chunk-TWKPYZNQ.cjs} +32 -18
  7. package/dist/chunk-TWKPYZNQ.cjs.map +1 -0
  8. package/dist/{chunk-S2B3UFVP.cjs → chunk-VBFOCTMD.cjs} +17 -17
  9. package/dist/{chunk-S2B3UFVP.cjs.map → chunk-VBFOCTMD.cjs.map} +1 -1
  10. package/dist/{chunk-RFSBDUXD.js → chunk-WJBPLMBX.js} +2 -2
  11. package/dist/components/chat/entity-cards/blog-card.d.ts.map +1 -1
  12. package/dist/components/chat/index.cjs +2 -2
  13. package/dist/components/chat/index.js +1 -1
  14. package/dist/components/contact/index.cjs +3 -3
  15. package/dist/components/contact/index.js +2 -2
  16. package/dist/components/features/index.cjs +2 -2
  17. package/dist/components/features/index.js +1 -1
  18. package/dist/components/index.cjs +49 -49
  19. package/dist/components/index.js +2 -2
  20. package/dist/components/navigation/index.cjs +2 -2
  21. package/dist/components/navigation/index.js +1 -1
  22. package/dist/components/tickets/index.cjs +59 -59
  23. package/dist/components/tickets/index.js +3 -3
  24. package/dist/components/ui/index.cjs +2 -2
  25. package/dist/components/ui/index.js +1 -1
  26. package/dist/index.cjs +2 -2
  27. package/dist/index.js +1 -1
  28. package/package.json +1 -1
  29. package/src/components/chat/entity-cards/blog-card.tsx +25 -16
  30. package/dist/chunk-HZT4YU33.js.map +0 -1
  31. package/dist/chunk-SJQLTQC7.cjs.map +0 -1
  32. /package/dist/{chunk-GIKD2LWD.js.map → chunk-ATEUJQKU.js.map} +0 -0
  33. /package/dist/{chunk-RFSBDUXD.js.map → chunk-WJBPLMBX.js.map} +0 -0
@@ -11,7 +11,7 @@ import {
11
11
  UnifiedPagination,
12
12
  init_unified_pagination,
13
13
  unified_pagination_exports
14
- } from "../chunk-GIKD2LWD.js";
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-HZT4YU33.js";
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 _chunkSJQLTQC7cjs = require('../../chunk-SJQLTQC7.cjs');
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 = _chunkSJQLTQC7cjs.AppHeader; exports.AppLayout = _chunkSJQLTQC7cjs.AppLayout; exports.ClientOnlyHeader = _chunkSJQLTQC7cjs.ClientOnlyHeader; exports.Header = _chunkSJQLTQC7cjs.Header; exports.HeaderButton = _chunkSJQLTQC7cjs.HeaderButton; exports.HeaderGlobalSearch = _chunkSJQLTQC7cjs.HeaderGlobalSearch; exports.HeaderOrganizationFilter = _chunkSJQLTQC7cjs.HeaderOrganizationFilter; exports.HeaderSkeleton = _chunkSJQLTQC7cjs.HeaderSkeleton; exports.MobileBurgerMenu = _chunkSJQLTQC7cjs.MobileBurgerMenu; exports.MobileNavPanel = _chunkSJQLTQC7cjs.MobileNavPanel; exports.NavigationSidebar = _chunkSJQLTQC7cjs.NavigationSidebar; exports.SlidingSidebar = _chunkSJQLTQC7cjs.SlidingSidebar; exports.StickySectionNav = _chunkSJQLTQC7cjs.StickySectionNav; exports.useSectionNavigation = _chunkSJQLTQC7cjs.useSectionNavigation;
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
@@ -15,7 +15,7 @@ import {
15
15
  SlidingSidebar,
16
16
  StickySectionNav,
17
17
  useSectionNavigation
18
- } from "../../chunk-HZT4YU33.js";
18
+ } from "../../chunk-R5RNRH62.js";
19
19
  import "../../chunk-UYQOPC57.js";
20
20
  import "../../chunk-CIPO6DXK.js";
21
21
  import "../../chunk-EDW2NVRV.js";
@@ -9,11 +9,11 @@
9
9
 
10
10
 
11
11
 
12
- var _chunkS2B3UFVPcjs = require('../../chunk-S2B3UFVP.cjs');
12
+ var _chunkVBFOCTMDcjs = require('../../chunk-VBFOCTMD.cjs');
13
13
  require('../../chunk-VFKQMAUF.cjs');
14
14
 
15
15
 
16
- var _chunkY7IXGY7Tcjs = require('../../chunk-Y7IXGY7T.cjs');
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 _chunkSJQLTQC7cjs = require('../../chunk-SJQLTQC7.cjs');
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 } = _chunkSJQLTQC7cjs.useChatAttachments.call(void 0, );
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, _chunkSJQLTQC7cjs.Card, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: handleSubmit, className: "flex flex-col md:flex-row gap-6", children: [
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
- _chunkSJQLTQC7cjs.Textarea,
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
- _chunkSJQLTQC7cjs.ChatAttachmentChipStrip,
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
- _chunkSJQLTQC7cjs.ChatAttachmentAddButton,
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 = _chunkSJQLTQC7cjs.useChatIdentity.call(void 0, );
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 _chunkSJQLTQC7cjs.embedAuthedFetch.call(void 0, LIST_ENGAGEMENTS_ENDPOINT, {
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
- _chunkS2B3UFVPcjs.DeliveryRow,
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 = _chunkSJQLTQC7cjs.useChatIdentity.call(void 0, );
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, _chunkS2B3UFVPcjs.ConversationCardRowSkeletonList, { rows: 2 });
357
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVBFOCTMDcjs.ConversationCardRowSkeletonList, { rows: 2 });
358
358
  }
359
359
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
360
- _chunkS2B3UFVPcjs.EmptyState,
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
- _chunkS2B3UFVPcjs.ConversationCardRow,
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
- _chunkS2B3UFVPcjs.ConversationCardRow,
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, _chunkS2B3UFVPcjs.ConversationCardRowSkeletonList, { rows: 1 })
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 = _chunkSJQLTQC7cjs.useChatAttachments.call(void 0, );
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
- _chunkSJQLTQC7cjs.Textarea,
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
- _chunkSJQLTQC7cjs.ChatAttachmentChipStrip,
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
- _chunkSJQLTQC7cjs.ChatAttachmentAddButton,
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, _chunkSJQLTQC7cjs.AlertDialog, { open: closeDialogOpen, onOpenChange: setCloseDialogOpen, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkSJQLTQC7cjs.AlertDialogContent, { className: "bg-ods-card border-ods-border", children: [
555
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkSJQLTQC7cjs.AlertDialogHeader, { children: [
556
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSJQLTQC7cjs.AlertDialogTitle, { className: "text-ods-text-primary font-['DM_Sans'] text-[20px] font-semibold", children: "Close this ticket?" }),
557
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSJQLTQC7cjs.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." })
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
- _chunkSJQLTQC7cjs.Textarea,
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, _chunkSJQLTQC7cjs.AlertDialogFooter, { children: [
570
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkTWKPYZNQcjs.AlertDialogFooter, { children: [
571
571
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
572
- _chunkSJQLTQC7cjs.AlertDialogCancel,
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
- _chunkSJQLTQC7cjs.AlertDialogAction,
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 ? _chunkSJQLTQC7cjs.formatRelativeTime.call(void 0, ticket.hubspot_updated_at) : void 0,
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
- _chunkSJQLTQC7cjs.ChatTicketItem,
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 _chunkSJQLTQC7cjs.embedAuthedFetch.call(void 0, FIND_TICKET_ENDPOINT, {
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 _chunkSJQLTQC7cjs.embedAuthedFetch.call(void 0, TICKET_ACTION_ENDPOINT, {
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 = _chunkSJQLTQC7cjs.useChatIdentity.call(void 0, );
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
- _chunkS2B3UFVPcjs.EmptyState,
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
- _chunkSJQLTQC7cjs.formatRelativeTime.call(void 0, new Date(lastUpdatedAt))
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, _chunkSJQLTQC7cjs.Card, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1203
- _chunkS2B3UFVPcjs.EmptyState,
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, _chunkSJQLTQC7cjs.Card, { className: "overflow-hidden", children: merged.map((ticket) => /* @__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, _chunkSJQLTQC7cjs.Card, { className: "p-6", children: [
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, _chunkSJQLTQC7cjs.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: [
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
- _chunkS2B3UFVPcjs.init_unified_pagination.call(void 0, );
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 ? _chunkSJQLTQC7cjs.formatRelativeTime.call(void 0, ticket.hubspot_updated_at) : "recently";
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
- _chunkSJQLTQC7cjs.StatusBadge,
1278
+ _chunkTWKPYZNQcjs.StatusBadge,
1279
1279
  {
1280
1280
  text: rawStatus,
1281
- colorScheme: _chunkSJQLTQC7cjs.getStatusColorScheme.call(void 0, rawStatus),
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
- _chunkSJQLTQC7cjs.StatusBadge,
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
- _chunkS2B3UFVPcjs.DevCardRowContent,
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, _chunkSJQLTQC7cjs.Label, { htmlFor: "help-center-subject", children: [
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
- _chunkY7IXGY7Tcjs.ContactForm,
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 = _chunkSJQLTQC7cjs.useChatIdentity.call(void 0, );
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, _chunkS2B3UFVPcjs.DevSectionPage, { sectionKey: "tickets", preControls: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HelpCenterCreateFormSkeleton, {}), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS2B3UFVPcjs.DevCardRowSkeletonList, {}) });
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, _chunkS2B3UFVPcjs.DevSectionPage, { sectionKey: "tickets", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1468
- _chunkS2B3UFVPcjs.EmptyState,
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, _chunkS2B3UFVPcjs.DevCardRowSkeletonList, {}) : !hasResults && isFetching ? (
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, _chunkS2B3UFVPcjs.DevCardRowSkeletonList, { rows: 1 })
1574
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVBFOCTMDcjs.DevCardRowSkeletonList, { rows: 1 })
1575
1575
  ) : !hasResults ? hasActiveFilters ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1576
- _chunkS2B3UFVPcjs.EmptyState,
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
- _chunkS2B3UFVPcjs.EmptyState,
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, _chunkS2B3UFVPcjs.UnifiedPagination, { currentPage: page, totalPages })
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, _chunkS2B3UFVPcjs.DevSectionPage, { sectionKey: "tickets", preControls: form, children: body });
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-GIKD2LWD.js";
12
+ } from "../../chunk-ATEUJQKU.js";
13
13
  import "../../chunk-4XLJWX2N.js";
14
14
  import {
15
15
  ContactForm
16
- } from "../../chunk-RFSBDUXD.js";
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-HZT4YU33.js";
38
+ } from "../../chunk-R5RNRH62.js";
39
39
  import {
40
40
  toast
41
41
  } from "../../chunk-UYQOPC57.js";