@flamingo-stack/openframe-frontend-core 0.0.220 → 0.0.221

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