@flamingo-stack/openframe-frontend-core 0.0.716 → 0.0.717

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 (89) hide show
  1. package/dist/chat-protocol/index.cjs +23 -14
  2. package/dist/chat-protocol/index.js +23 -14
  3. package/dist/chat-protocol/nats-decoder.d.ts.map +1 -1
  4. package/dist/chat-protocol/source-metadata.d.ts +11 -2
  5. package/dist/chat-protocol/source-metadata.d.ts.map +1 -1
  6. package/dist/{chunk-DLEO53NX.cjs → chunk-2AI2E3O2.cjs} +65 -65
  7. package/dist/{chunk-V36WGIYR.js → chunk-2EK7PA73.js} +3 -3
  8. package/dist/{chunk-3AJIQPFG.js → chunk-2X2P3VHF.js} +5 -5
  9. package/dist/{chunk-DPX6244M.js → chunk-3MJPCKB6.js} +2 -2
  10. package/dist/{chunk-2V7D5GJX.cjs → chunk-3QAMMWV2.cjs} +8 -8
  11. package/dist/{chunk-BVZ7W4HW.js → chunk-47FISYO5.js} +3 -3
  12. package/dist/{chunk-S2VWQX6T.cjs → chunk-5MF3NMYC.cjs} +261 -261
  13. package/dist/{chunk-YTMV4OBY.js → chunk-6MZI5SQ4.js} +2 -2
  14. package/dist/{chunk-C5AGSZBT.js → chunk-B5XU6KOA.js} +1 -1
  15. package/dist/{chunk-P7IL4CX3.js → chunk-E6FLX4TX.js} +3 -3
  16. package/dist/{chunk-ZX7SCPLO.cjs → chunk-E7YCPY7K.cjs} +3 -3
  17. package/dist/{chunk-MXPQMQI3.js → chunk-FGKSAQR3.js} +5 -5
  18. package/dist/{chunk-EOKSKJSS.cjs → chunk-FROXS52D.cjs} +11 -11
  19. package/dist/{chunk-I5F2OTFE.cjs → chunk-J3Q53TWW.cjs} +26 -26
  20. package/dist/{chunk-ROBQ5TR7.js → chunk-JH2SIWPQ.js} +28 -17
  21. package/dist/{chunk-DDWFCWOE.js → chunk-JPD4NXH6.js} +1 -1
  22. package/dist/{chunk-STCJYO2Z.cjs → chunk-LANNTTKP.cjs} +9 -9
  23. package/dist/{chunk-JVCAK4W3.cjs → chunk-LE5WKGJV.cjs} +3 -3
  24. package/dist/{chunk-KNOZVVCU.cjs → chunk-M2A5SC6H.cjs} +9 -9
  25. package/dist/{chunk-YO5JB3WE.cjs → chunk-NB6EWUDE.cjs} +33 -33
  26. package/dist/{chunk-H5R7U2D2.js → chunk-NZ5BHDFZ.js} +1 -1
  27. package/dist/{chunk-X2MNNV5H.cjs → chunk-OHLBO4LM.cjs} +3 -3
  28. package/dist/{chunk-64F6OEEV.js → chunk-PD4W2VMH.js} +1 -1
  29. package/dist/{chunk-KYFNFRSV.js → chunk-TYVS64YN.js} +2 -2
  30. package/dist/{chunk-5IJXM3RU.cjs → chunk-U3TP4UGA.cjs} +6 -6
  31. package/dist/{chunk-HETQETPV.cjs → chunk-UWQWMGJ7.cjs} +28 -17
  32. package/dist/{chunk-NKILEG3Y.cjs → chunk-VYKFM2NB.cjs} +35 -35
  33. package/dist/{chunk-YBS5QGON.js → chunk-VZI5BA4L.js} +1 -1
  34. package/dist/{chunk-JCA5MBVY.js → chunk-WH5GJSID.js} +2 -2
  35. package/dist/{chunk-DHMO5GI4.cjs → chunk-X3RVDBXU.cjs} +16 -16
  36. package/dist/{cloud-tenants-2J7CPTKT.cjs → cloud-tenants-KDWTVHSI.cjs} +3 -3
  37. package/dist/{cloud-tenants-YOY2WLGC.js → cloud-tenants-LNC26WY2.js} +2 -2
  38. package/dist/components/case-studies/index.cjs +14 -14
  39. package/dist/components/case-studies/index.js +3 -3
  40. package/dist/components/chat/index.cjs +2 -2
  41. package/dist/components/chat/index.js +1 -1
  42. package/dist/components/chat/types/message.types.d.ts +20 -16
  43. package/dist/components/chat/types/message.types.d.ts.map +1 -1
  44. package/dist/components/chat/types/unified-chat-state.types.d.ts +1 -1
  45. package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
  46. package/dist/components/contact/index.cjs +4 -4
  47. package/dist/components/contact/index.js +3 -3
  48. package/dist/components/docs/index.cjs +7 -7
  49. package/dist/components/docs/index.js +6 -6
  50. package/dist/components/embeds/index.cjs +4 -4
  51. package/dist/components/embeds/index.js +3 -3
  52. package/dist/components/faq/index.cjs +4 -4
  53. package/dist/components/faq/index.js +3 -3
  54. package/dist/components/features/index.cjs +3 -3
  55. package/dist/components/features/index.js +2 -2
  56. package/dist/components/help-center-pages/index.cjs +62 -62
  57. package/dist/components/help-center-pages/index.js +13 -13
  58. package/dist/components/index.cjs +33 -33
  59. package/dist/components/index.js +12 -12
  60. package/dist/components/meeting-scheduler/index.cjs +19 -19
  61. package/dist/components/meeting-scheduler/index.js +2 -2
  62. package/dist/components/navigation/index.cjs +6 -6
  63. package/dist/components/navigation/index.js +5 -5
  64. package/dist/components/onboarding-guides/index.cjs +5 -5
  65. package/dist/components/onboarding-guides/index.js +4 -4
  66. package/dist/components/product-demo/index.cjs +6 -6
  67. package/dist/components/product-demo/index.js +6 -6
  68. package/dist/components/tickets/index.cjs +7 -7
  69. package/dist/components/tickets/index.js +6 -6
  70. package/dist/components/ui/index.cjs +3 -3
  71. package/dist/components/ui/index.js +2 -2
  72. package/dist/{devices-5NADSKDZ.cjs → devices-ATHYJUVQ.cjs} +4 -4
  73. package/dist/{devices-EQXXILXW.js → devices-NYCRQ3PG.js} +2 -2
  74. package/dist/index.cjs +7 -7
  75. package/dist/index.js +6 -6
  76. package/dist/{knowledge-YCQITBJB.js → knowledge-DEKYJXBS.js} +2 -2
  77. package/dist/{knowledge-LHQYZJE7.cjs → knowledge-EHNRYT7U.cjs} +4 -4
  78. package/dist/{logs-DUVKSQU3.cjs → logs-3V765P7O.cjs} +11 -11
  79. package/dist/{logs-LZNXGOSW.js → logs-Q7YFIVYI.js} +2 -2
  80. package/dist/{policies-VYWOJ7IF.js → policies-BTIENK5A.js} +2 -2
  81. package/dist/{policies-5H74FS4S.cjs → policies-TXU5AIXS.cjs} +7 -7
  82. package/dist/{software-update-VRRX5U4W.cjs → software-update-MINTICZY.cjs} +7 -7
  83. package/dist/{software-update-MSDY3OLX.js → software-update-SW2HOBHW.js} +2 -2
  84. package/package.json +1 -1
  85. package/src/chat-protocol/nats-decoder.ts +10 -8
  86. package/src/chat-protocol/source-metadata.ts +25 -2
  87. package/src/components/chat/types/message.types.ts +21 -15
  88. package/src/components/chat/types/unified-chat-state.types.ts +1 -1
  89. package/src/components/chat/utils/process-historical-messages.ts +12 -4
@@ -308,15 +308,13 @@ var MESSAGE_TYPE = {
308
308
  TEXT: "TEXT",
309
309
  THINKING: "THINKING",
310
310
  ASK: "ASK",
311
- /** Per-answer source metadata (documents, videos, entity cards).
311
+ /** Per-answer attachments (cited documents, videos, entity cards).
312
312
  *
313
- * TWO names for ONE payload, on purpose. `SOURCES` is the contract the
314
- * backend is moving to; `GUIDE` is the envelope it ships in today, reused
315
- * from Guide Mode v2 so a released frontend keeps working during the v2→v3
316
- * rollout. Both decode through the same path, so dropping `GUIDE` later is a
317
- * deletion here and nothing else. */
313
+ * `ATTACHMENTS` carries `sources` / `videos` / `cards` on the record itself.
314
+ * `GUIDE` is the envelope it replaced — the same arrays under `payload` —
315
+ * and stays only until every backend ships `ATTACHMENTS`. */
316
+ ATTACHMENTS: "ATTACHMENTS",
318
317
  GUIDE: "GUIDE",
319
- SOURCES: "SOURCES",
320
318
  EXECUTING_TOOL: "EXECUTING_TOOL",
321
319
  EXECUTED_TOOL: "EXECUTED_TOOL",
322
320
  APPROVAL_REQUEST: "APPROVAL_REQUEST",
@@ -544,6 +542,16 @@ function sourceMetadataEvent(payload) {
544
542
  ...refs.length > 0 ? { refs } : {}
545
543
  };
546
544
  }
545
+ function withoutNulls(value) {
546
+ if (Array.isArray(value)) return value.map(withoutNulls);
547
+ if (!isRecord(value)) return value;
548
+ return Object.fromEntries(
549
+ Object.entries(value).filter(([, field]) => field !== null).map(([key, field]) => [key, withoutNulls(field)])
550
+ );
551
+ }
552
+ function attachmentsEvent(record) {
553
+ return sourceMetadataEvent(withoutNulls(record));
554
+ }
547
555
 
548
556
  // src/chat-protocol/nats-decoder.ts
549
557
  function str(value) {
@@ -610,13 +618,14 @@ function decodeNatsChunk(chunk) {
610
618
  return { type: "thinking-delta", text: data.text, ...seq };
611
619
  }
612
620
  return null;
613
- // Two chunk names, one payload and one decoder. `SOURCES` is the contract
614
- // the backend is moving to; `GUIDE` is the v2 envelope it ships in during
615
- // the rollout (see `MESSAGE_TYPE.GUIDE`). The chunk arrives BEFORE or
616
- // between the answer's text deltas, so the reducer — not this decoder —
617
- // owns attaching it to the right turn.
618
- case MESSAGE_TYPE.GUIDE:
619
- case MESSAGE_TYPE.SOURCES: {
621
+ // The chunk arrives BEFORE or between the answer's text deltas, so the
622
+ // reducer — not this decoder — owns attaching it to the right turn.
623
+ case MESSAGE_TYPE.ATTACHMENTS: {
624
+ const event = attachmentsEvent(data);
625
+ return event ? { ...event, ...seq } : null;
626
+ }
627
+ // The envelope `ATTACHMENTS` replaced (see `MESSAGE_TYPE.GUIDE`).
628
+ case MESSAGE_TYPE.GUIDE: {
620
629
  const event = sourceMetadataEvent(data.payload);
621
630
  return event ? { ...event, ...seq } : null;
622
631
  }
@@ -306,15 +306,13 @@ var MESSAGE_TYPE = {
306
306
  TEXT: "TEXT",
307
307
  THINKING: "THINKING",
308
308
  ASK: "ASK",
309
- /** Per-answer source metadata (documents, videos, entity cards).
309
+ /** Per-answer attachments (cited documents, videos, entity cards).
310
310
  *
311
- * TWO names for ONE payload, on purpose. `SOURCES` is the contract the
312
- * backend is moving to; `GUIDE` is the envelope it ships in today, reused
313
- * from Guide Mode v2 so a released frontend keeps working during the v2→v3
314
- * rollout. Both decode through the same path, so dropping `GUIDE` later is a
315
- * deletion here and nothing else. */
311
+ * `ATTACHMENTS` carries `sources` / `videos` / `cards` on the record itself.
312
+ * `GUIDE` is the envelope it replaced — the same arrays under `payload` —
313
+ * and stays only until every backend ships `ATTACHMENTS`. */
314
+ ATTACHMENTS: "ATTACHMENTS",
316
315
  GUIDE: "GUIDE",
317
- SOURCES: "SOURCES",
318
316
  EXECUTING_TOOL: "EXECUTING_TOOL",
319
317
  EXECUTED_TOOL: "EXECUTED_TOOL",
320
318
  APPROVAL_REQUEST: "APPROVAL_REQUEST",
@@ -542,6 +540,16 @@ function sourceMetadataEvent(payload) {
542
540
  ...refs.length > 0 ? { refs } : {}
543
541
  };
544
542
  }
543
+ function withoutNulls(value) {
544
+ if (Array.isArray(value)) return value.map(withoutNulls);
545
+ if (!isRecord(value)) return value;
546
+ return Object.fromEntries(
547
+ Object.entries(value).filter(([, field]) => field !== null).map(([key, field]) => [key, withoutNulls(field)])
548
+ );
549
+ }
550
+ function attachmentsEvent(record) {
551
+ return sourceMetadataEvent(withoutNulls(record));
552
+ }
545
553
 
546
554
  // src/chat-protocol/nats-decoder.ts
547
555
  function str(value) {
@@ -608,13 +616,14 @@ function decodeNatsChunk(chunk) {
608
616
  return { type: "thinking-delta", text: data.text, ...seq };
609
617
  }
610
618
  return null;
611
- // Two chunk names, one payload and one decoder. `SOURCES` is the contract
612
- // the backend is moving to; `GUIDE` is the v2 envelope it ships in during
613
- // the rollout (see `MESSAGE_TYPE.GUIDE`). The chunk arrives BEFORE or
614
- // between the answer's text deltas, so the reducer — not this decoder —
615
- // owns attaching it to the right turn.
616
- case MESSAGE_TYPE.GUIDE:
617
- case MESSAGE_TYPE.SOURCES: {
619
+ // The chunk arrives BEFORE or between the answer's text deltas, so the
620
+ // reducer — not this decoder — owns attaching it to the right turn.
621
+ case MESSAGE_TYPE.ATTACHMENTS: {
622
+ const event = attachmentsEvent(data);
623
+ return event ? { ...event, ...seq } : null;
624
+ }
625
+ // The envelope `ATTACHMENTS` replaced (see `MESSAGE_TYPE.GUIDE`).
626
+ case MESSAGE_TYPE.GUIDE: {
618
627
  const event = sourceMetadataEvent(data.payload);
619
628
  return event ? { ...event, ...seq } : null;
620
629
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nats-decoder.d.ts","sourceRoot":"","sources":["../../src/chat-protocol/nats-decoder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAE5E,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,UAAU,CAAC;AAyClE;;wDAEwD;AACxD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,EAAE,CASjE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAuStE"}
1
+ {"version":3,"file":"nats-decoder.d.ts","sourceRoot":"","sources":["../../src/chat-protocol/nats-decoder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAE5E,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,UAAU,CAAC;AAyClE;;wDAEwD;AACxD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,EAAE,CASjE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAyStE"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Source-metadata payload → `{ sources, refs }`.
3
3
  *
4
- * ONE decoder for two arrival paths: the live `GUIDE`/`SOURCES` NATS chunk and
5
- * the persisted row of the same name in dialog history. That is the whole point
4
+ * ONE decoder for two arrival paths: the live `ATTACHMENTS` NATS chunk and the
5
+ * persisted row of the same name in dialog history. That is the whole point
6
6
  * of putting it here rather than in either consumer — a reloaded thread has to
7
7
  * render identically to the live turn, and two parsers is exactly how that stops
8
8
  * being true.
@@ -46,6 +46,15 @@ export declare function youtubeVideoId(value: unknown): string | undefined;
46
46
  * an earlier chunk of the same turn had already supplied.
47
47
  */
48
48
  export declare function sourceMetadataEvent(payload: unknown): SourcesEvent | null;
49
+ /**
50
+ * Decode one typed `ATTACHMENTS` record — the live chunk or the persisted
51
+ * `AttachmentsData` row, which carry `sources` / `videos` / `cards` directly.
52
+ *
53
+ * GraphQL answers an unset field with `null` where the live chunk omits it, so
54
+ * nulls are read as absent: a reloaded source must not gain a
55
+ * `targetPlatform: null` ("no destination") the live one never carried.
56
+ */
57
+ export declare function attachmentsEvent(record: unknown): SourcesEvent | null;
49
58
  /** What one assistant answer carries: its citations and its expandable refs. */
50
59
  export interface SourceMetadata {
51
60
  sources?: ChatSource[];
@@ -1 +1 @@
1
- {"version":3,"file":"source-metadata.d.ts","sourceRoot":"","sources":["../../src/chat-protocol/source-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAsC7C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAkBjE;AAqMD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAYzE;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;CAClB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,EAAE,KAAK,EAAE,YAAY,GAAG,cAAc,CAcxG"}
1
+ {"version":3,"file":"source-metadata.d.ts","sourceRoot":"","sources":["../../src/chat-protocol/source-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAsC7C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAkBjE;AAqMD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAYzE;AAaD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAErE;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;CAClB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,EAAE,KAAK,EAAE,YAAY,GAAG,cAAc,CAcxG"}
@@ -1,14 +1,14 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
2
 
3
3
 
4
- var _chunk2V7D5GJXcjs = require('./chunk-2V7D5GJX.cjs');
4
+ var _chunk3QAMMWV2cjs = require('./chunk-3QAMMWV2.cjs');
5
5
 
6
6
 
7
7
 
8
8
 
9
9
 
10
10
 
11
- var _chunkSTCJYO2Zcjs = require('./chunk-STCJYO2Z.cjs');
11
+ var _chunkLANNTTKPcjs = require('./chunk-LANNTTKP.cjs');
12
12
 
13
13
 
14
14
 
@@ -19,7 +19,7 @@ var _chunkMA4Q5RBPcjs = require('./chunk-MA4Q5RBP.cjs');
19
19
 
20
20
 
21
21
 
22
- var _chunkZX7SCPLOcjs = require('./chunk-ZX7SCPLO.cjs');
22
+ var _chunkE7YCPY7Kcjs = require('./chunk-E7YCPY7K.cjs');
23
23
 
24
24
 
25
25
 
@@ -31,7 +31,7 @@ var _chunkZX7SCPLOcjs = require('./chunk-ZX7SCPLO.cjs');
31
31
 
32
32
 
33
33
 
34
- var _chunkS2VWQX6Tcjs = require('./chunk-S2VWQX6T.cjs');
34
+ var _chunk5MF3NMYCcjs = require('./chunk-5MF3NMYC.cjs');
35
35
 
36
36
 
37
37
 
@@ -48,7 +48,7 @@ var _chunkJO5TLJPMcjs = require('./chunk-JO5TLJPM.cjs');
48
48
 
49
49
 
50
50
 
51
- var _chunkHETQETPVcjs = require('./chunk-HETQETPV.cjs');
51
+ var _chunkUWQWMGJ7cjs = require('./chunk-UWQWMGJ7.cjs');
52
52
 
53
53
 
54
54
  var _chunkKT3U3ZRPcjs = require('./chunk-KT3U3ZRP.cjs');
@@ -122,7 +122,7 @@ var TicketActionFailure = class extends Error {
122
122
  function useTicketActions(options) {
123
123
  const queryClient = _reactquery.useQueryClient.call(void 0, );
124
124
  const ticketActionEndpoint = _nullishCoalesce(_chunkUJ7AXHRZcjs.useRequiredChatRuntime.call(void 0, ).endpoints.ticketActionUrl, () => ( TICKET_ACTION_ENDPOINT));
125
- const ticketLive = _chunkZX7SCPLOcjs.useOptionalTicketLive.call(void 0, );
125
+ const ticketLive = _chunkE7YCPY7Kcjs.useOptionalTicketLive.call(void 0, );
126
126
  const notifyTicketCreated = _optionalChain([ticketLive, 'optionalAccess', _2 => _2.notifyTicketCreated]);
127
127
  const { prependOptimistic, removeOptimistic, removeTicketFromCache, toast: toast2, onSupportSystemDown } = options;
128
128
  const formInFlightRef = _react.useRef.call(void 0, null);
@@ -283,10 +283,10 @@ function useTicketActions(options) {
283
283
  ..._optionalChain([input, 'access', _3 => _3.attachments, 'optionalAccess', _4 => _4.length]) ? { attachments: input.attachments } : {}
284
284
  });
285
285
  if (result.mirror_synced === false) {
286
- toast2(_chunkZX7SCPLOcjs.TOAST_COPY.open_mirror_pending);
286
+ toast2(_chunkE7YCPY7Kcjs.TOAST_COPY.open_mirror_pending);
287
287
  watchMirrorSync(placeholderId, result.ticket_id);
288
288
  } else {
289
- toast2(_chunkZX7SCPLOcjs.TOAST_COPY.open_success);
289
+ toast2(_chunkE7YCPY7Kcjs.TOAST_COPY.open_success);
290
290
  await queryClient.invalidateQueries({ queryKey: ["tickets"] });
291
291
  removeOptimistic(placeholderId);
292
292
  }
@@ -372,7 +372,7 @@ function useTicketActions(options) {
372
372
  ...hasText ? { content_addendum: trimmed } : {},
373
373
  ...hasFiles ? { attachments } : {}
374
374
  },
375
- _chunkZX7SCPLOcjs.TOAST_COPY.comment_success,
375
+ _chunkE7YCPY7Kcjs.TOAST_COPY.comment_success,
376
376
  "send message"
377
377
  );
378
378
  if (ok) {
@@ -395,13 +395,13 @@ function useTicketActions(options) {
395
395
  status: "CLOSED",
396
396
  ..._optionalChain([resolution, 'optionalAccess', _6 => _6.trim, 'call', _7 => _7()]) ? { resolution: resolution.trim() } : {}
397
397
  },
398
- _chunkZX7SCPLOcjs.TOAST_COPY.close_success,
398
+ _chunkE7YCPY7Kcjs.TOAST_COPY.close_success,
399
399
  "close ticket"
400
400
  ),
401
401
  [updateTicket]
402
402
  );
403
403
  const reopenTicket = _react.useCallback.call(void 0,
404
- (ticket) => updateTicket(ticket, { status: "OPEN" }, _chunkZX7SCPLOcjs.TOAST_COPY.reopen_success, "reopen ticket"),
404
+ (ticket) => updateTicket(ticket, { status: "OPEN" }, _chunkE7YCPY7Kcjs.TOAST_COPY.reopen_success, "reopen ticket"),
405
405
  [updateTicket]
406
406
  );
407
407
  return _react.useMemo.call(void 0,
@@ -616,14 +616,14 @@ function useTicketsList(filters) {
616
616
  // src/components/tickets/ticket-open-form.tsx
617
617
 
618
618
  var _jsxruntime = require('react/jsx-runtime');
619
- var COUNTER_VISIBLE_AT = Math.floor(_chunkZX7SCPLOcjs.TICKET_TEXT_MAX_CHARS * 0.8);
619
+ var COUNTER_VISIBLE_AT = Math.floor(_chunkE7YCPY7Kcjs.TICKET_TEXT_MAX_CHARS * 0.8);
620
620
  function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
621
621
  const [subject, setSubject] = _react.useState.call(void 0, "");
622
622
  const [content, setContent] = _react.useState.call(void 0, "");
623
- const { attachments, readyAttachments, hasInflightUploads, addFiles, removeAttachment, clear } = _chunkHETQETPVcjs.useChatAttachments.call(void 0, );
623
+ const { attachments, readyAttachments, hasInflightUploads, addFiles, removeAttachment, clear } = _chunkUWQWMGJ7cjs.useChatAttachments.call(void 0, );
624
624
  const trimmedSubject = subject.trim();
625
625
  const trimmedContent = content.trim();
626
- const overCap = content.length > _chunkZX7SCPLOcjs.TICKET_TEXT_MAX_CHARS;
626
+ const overCap = content.length > _chunkE7YCPY7Kcjs.TICKET_TEXT_MAX_CHARS;
627
627
  const showCounter = content.length >= COUNTER_VISIBLE_AT;
628
628
  const canSubmit = !isSubmitting && !supportSystemDown && !hasInflightUploads && trimmedSubject.length > 0 && trimmedContent.length > 0 && !overCap;
629
629
  const handleSubmit = async (e) => {
@@ -640,7 +640,7 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
640
640
  clear();
641
641
  }
642
642
  };
643
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkETYLOZOBcjs.Card, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: handleSubmit, className: "flex flex-col gap-6 md:flex-row", ..._chunkHETQETPVcjs.HUBSPOT_DO_NOT_COLLECT_FORM_PROPS, children: [
643
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkETYLOZOBcjs.Card, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: handleSubmit, className: "flex flex-col gap-6 md:flex-row", ..._chunkUWQWMGJ7cjs.HUBSPOT_DO_NOT_COLLECT_FORM_PROPS, children: [
644
644
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-w-0 flex-1 md:max-w-md", children: [
645
645
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "mb-2 text-ods-text-primary text-h2", children: "Need Support?" }),
646
646
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: "Can't find what you're looking for? Submit a support ticket below \u2014 we'll follow up shortly." }),
@@ -665,7 +665,7 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
665
665
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
666
666
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "label", { htmlFor: "ticket-content", className: "mb-1 block text-ods-text-primary text-h6", children: "Your Message" }),
667
667
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
668
- _chunkS2VWQX6Tcjs.Textarea,
668
+ _chunk5MF3NMYCcjs.Textarea,
669
669
  {
670
670
  id: "ticket-content",
671
671
  placeholder: "Describe your issue or question in detail...",
@@ -679,11 +679,11 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
679
679
  showCounter && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: `mt-1 text-right text-h6 ${overCap ? "text-ods-error" : "text-ods-text-secondary"}`, children: [
680
680
  content.length,
681
681
  "/",
682
- _chunkZX7SCPLOcjs.TICKET_TEXT_MAX_CHARS
682
+ _chunkE7YCPY7Kcjs.TICKET_TEXT_MAX_CHARS
683
683
  ] })
684
684
  ] }),
685
685
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
686
- _chunkHETQETPVcjs.ChatAttachmentChipStrip,
686
+ _chunkUWQWMGJ7cjs.ChatAttachmentChipStrip,
687
687
  {
688
688
  attachments,
689
689
  onRemove: removeAttachment,
@@ -692,7 +692,7 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
692
692
  ),
693
693
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between gap-3", children: [
694
694
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
695
- _chunkHETQETPVcjs.ChatAttachmentAddButton,
695
+ _chunkUWQWMGJ7cjs.ChatAttachmentAddButton,
696
696
  {
697
697
  attachmentsEnabled: !supportSystemDown,
698
698
  attachmentsCount: attachments.length,
@@ -722,7 +722,7 @@ var _usesticktobottom = require('use-stick-to-bottom');
722
722
 
723
723
  var LIST_ENGAGEMENTS_ENDPOINT = "/api/chat/agent/list-engagements";
724
724
  function useTicketEngagements(externalTicketId, enabled = true) {
725
- const identity = _chunkHETQETPVcjs.useChatIdentity.call(void 0, );
725
+ const identity = _chunkUWQWMGJ7cjs.useChatIdentity.call(void 0, );
726
726
  const identityKey = _nullishCoalesce(_optionalChain([identity, 'access', _21 => _21.user, 'optionalAccess', _22 => _22.email]), () => ( "anon"));
727
727
  const listEngagementsEndpoint = _nullishCoalesce(_chunkUJ7AXHRZcjs.useRequiredChatRuntime.call(void 0, ).endpoints.listEngagementsUrl, () => ( LIST_ENGAGEMENTS_ENDPOINT));
728
728
  const fetchable = enabled && !!externalTicketId && !externalTicketId.startsWith("temp-");
@@ -795,7 +795,7 @@ function TicketLinkedDeliveryCard({ clickup, className }) {
795
795
  dateClosed: clickup.date_closed,
796
796
  clickupUrl: _nullishCoalesce(clickup.clickup_url, () => ( ""))
797
797
  };
798
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `${_chunkETYLOZOBcjs.CONTENT_CARD_SKELETON_FRAME_CLASS} ${_nullishCoalesce(className, () => ( ""))}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSTCJYO2Zcjs.DeliveryRow, { item, href: clickup.delivery_href, caption: "Linked delivery" }) });
798
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `${_chunkETYLOZOBcjs.CONTENT_CARD_SKELETON_FRAME_CLASS} ${_nullishCoalesce(className, () => ( ""))}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLANNTTKPcjs.DeliveryRow, { item, href: clickup.delivery_href, caption: "Linked delivery" }) });
799
799
  }
800
800
 
801
801
  // src/components/tickets/ticket-reply-composer.tsx
@@ -810,7 +810,7 @@ function TicketReplyComposer({
810
810
  }) {
811
811
  const [resolution, setResolution] = _react.useState.call(void 0, "");
812
812
  const [closeDialogOpen, setCloseDialogOpen] = _react.useState.call(void 0, false);
813
- const attachments = _chunkHETQETPVcjs.useChatAttachments.call(void 0, );
813
+ const attachments = _chunkUWQWMGJ7cjs.useChatAttachments.call(void 0, );
814
814
  const { readyAttachments, clear: clearAttachments } = attachments;
815
815
  const ticketRef = { id: ticket.id, external_id: ticket.external_id };
816
816
  const hasReadyFiles = readyAttachments.length > 0;
@@ -831,7 +831,7 @@ function TicketReplyComposer({
831
831
  const disabled = busy || supportSystemDown;
832
832
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-2", children: [
833
833
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
834
- _chunkHETQETPVcjs.ChatAttachmentChipStrip,
834
+ _chunkUWQWMGJ7cjs.ChatAttachmentChipStrip,
835
835
  {
836
836
  attachments: attachments.attachments,
837
837
  onRemove: attachments.removeAttachment,
@@ -848,13 +848,13 @@ function TicketReplyComposer({
848
848
  sending: busy || attachments.hasInflightUploads,
849
849
  disabled: supportSystemDown,
850
850
  allowEmptySend: hasReadyFiles,
851
- maxLength: _chunkZX7SCPLOcjs.TICKET_TEXT_MAX_CHARS,
851
+ maxLength: _chunkE7YCPY7Kcjs.TICKET_TEXT_MAX_CHARS,
852
852
  onSend: handleSend
853
853
  }
854
854
  ),
855
855
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full items-center gap-2", children: [
856
856
  !supportSystemDown && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
857
- _chunkHETQETPVcjs.ChatAttachmentAddButton,
857
+ _chunkUWQWMGJ7cjs.ChatAttachmentAddButton,
858
858
  {
859
859
  attachmentsEnabled: true,
860
860
  attachmentsCount: attachments.attachments.length,
@@ -877,25 +877,25 @@ function TicketReplyComposer({
877
877
  }
878
878
  )
879
879
  ] }),
880
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS2VWQX6Tcjs.AlertDialog, { open: closeDialogOpen, onOpenChange: setCloseDialogOpen, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkS2VWQX6Tcjs.AlertDialogContent, { className: "border-ods-border bg-ods-card", children: [
881
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkS2VWQX6Tcjs.AlertDialogHeader, { children: [
882
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS2VWQX6Tcjs.AlertDialogTitle, { className: "text-ods-text-primary", children: "Close this ticket?" }),
883
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS2VWQX6Tcjs.AlertDialogDescription, { className: "text-ods-text-secondary", children: "Add an optional resolution note below. You can reopen the ticket later if needed." })
880
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5MF3NMYCcjs.AlertDialog, { open: closeDialogOpen, onOpenChange: setCloseDialogOpen, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunk5MF3NMYCcjs.AlertDialogContent, { className: "border-ods-border bg-ods-card", children: [
881
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunk5MF3NMYCcjs.AlertDialogHeader, { children: [
882
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5MF3NMYCcjs.AlertDialogTitle, { className: "text-ods-text-primary", children: "Close this ticket?" }),
883
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5MF3NMYCcjs.AlertDialogDescription, { className: "text-ods-text-secondary", children: "Add an optional resolution note below. You can reopen the ticket later if needed." })
884
884
  ] }),
885
885
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
886
- _chunkS2VWQX6Tcjs.Textarea,
886
+ _chunk5MF3NMYCcjs.Textarea,
887
887
  {
888
888
  value: resolution,
889
889
  onChange: (e) => setResolution(e.target.value),
890
890
  placeholder: "Resolution (optional)",
891
891
  rows: 3,
892
- maxLength: _chunkZX7SCPLOcjs.TICKET_TEXT_MAX_CHARS,
892
+ maxLength: _chunkE7YCPY7Kcjs.TICKET_TEXT_MAX_CHARS,
893
893
  className: "mt-2"
894
894
  }
895
895
  ),
896
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkS2VWQX6Tcjs.AlertDialogFooter, { children: [
896
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunk5MF3NMYCcjs.AlertDialogFooter, { children: [
897
897
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
898
- _chunkS2VWQX6Tcjs.AlertDialogCancel,
898
+ _chunk5MF3NMYCcjs.AlertDialogCancel,
899
899
  {
900
900
  disabled: busy,
901
901
  className: "border-ods-border bg-transparent text-ods-text-primary hover:bg-ods-border",
@@ -903,7 +903,7 @@ function TicketReplyComposer({
903
903
  }
904
904
  ),
905
905
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
906
- _chunkS2VWQX6Tcjs.AlertDialogAction,
906
+ _chunk5MF3NMYCcjs.AlertDialogAction,
907
907
  {
908
908
  onClick: () => void confirmClose(),
909
909
  disabled: busy,
@@ -965,10 +965,10 @@ var TICKET_FEED_HEIGHT = "h-[60vh] md:h-[420px]";
965
965
  var TICKET_FEED_INNER = "flex flex-col gap-4 md:gap-6 px-4 md:px-6 py-4 md:py-6";
966
966
  var TICKET_FEED_SKELETON_ROWS = 6;
967
967
  function TicketTimelinePanel({ ticket }) {
968
- const identity = _chunkHETQETPVcjs.useChatIdentity.call(void 0, );
969
- const externalId = _chunkZX7SCPLOcjs.isOptimistic.call(void 0, ticket) ? null : ticket.external_id;
968
+ const identity = _chunkUWQWMGJ7cjs.useChatIdentity.call(void 0, );
969
+ const externalId = _chunkE7YCPY7Kcjs.isOptimistic.call(void 0, ticket) ? null : ticket.external_id;
970
970
  const { engagements, isLoading } = useTicketEngagements(externalId, !!externalId);
971
- const live = _chunkZX7SCPLOcjs.useOptionalTicketLive.call(void 0, );
971
+ const live = _chunkE7YCPY7Kcjs.useOptionalTicketLive.call(void 0, );
972
972
  const setOpenTicketId = _optionalChain([live, 'optionalAccess', _25 => _25.setOpenTicketId]);
973
973
  const markRead = _optionalChain([live, 'optionalAccess', _26 => _26.markRead]);
974
974
  const markReadDebounceRef = _react.useRef.call(void 0, null);
@@ -992,7 +992,7 @@ function TicketTimelinePanel({ ticket }) {
992
992
  markReadDebounceRef.current = setTimeout(() => {
993
993
  markReadDebounceRef.current = null;
994
994
  void markRead(externalId);
995
- }, _chunkZX7SCPLOcjs.TICKET_MARK_READ_DEBOUNCE_MS);
995
+ }, _chunkE7YCPY7Kcjs.TICKET_MARK_READ_DEBOUNCE_MS);
996
996
  }, [engagementsCount, externalId, markRead]);
997
997
  const { scrollRef, contentRef } = _usesticktobottom.useStickToBottom.call(void 0, { initial: "instant", resize: "smooth" });
998
998
  const bodyTurns = ticket.body ? ticket.body.split(TURN_SEPARATOR_RE).map((t) => t.trim()).filter(Boolean) : [];
@@ -1007,7 +1007,7 @@ function TicketTimelinePanel({ ticket }) {
1007
1007
  const customerName = (isViewerTheCustomer ? viewerName : null) || ticketCustomerName || viewerName || _optionalChain([identity, 'access', _40 => _40.user, 'optionalAccess', _41 => _41.email]) || "You";
1008
1008
  const customerAvatar = isViewerTheCustomer ? _nullishCoalesce(_optionalChain([identity, 'access', _42 => _42.user, 'optionalAccess', _43 => _43.avatarUrl]), () => ( void 0)) : void 0;
1009
1009
  if (isLoading) {
1010
- 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, _chunkHETQETPVcjs.ChatMessageRowSkeleton, {}, i)) }) });
1010
+ 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, _chunkUWQWMGJ7cjs.ChatMessageRowSkeleton, {}, i)) }) });
1011
1011
  }
1012
1012
  if (bodyTurns.length === 0 && engagements.length === 0) {
1013
1013
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -1026,7 +1026,7 @@ function TicketTimelinePanel({ ticket }) {
1026
1026
  const isResolution = turn.startsWith("[Resolution]");
1027
1027
  const text = isResolution ? turn.replace(/^\[Resolution\]\s*/, "") : turn;
1028
1028
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1029
- _chunkHETQETPVcjs.ChatMessageRow,
1029
+ _chunkUWQWMGJ7cjs.ChatMessageRow,
1030
1030
  {
1031
1031
  displayName: customerName,
1032
1032
  avatarUrl: customerAvatar,
@@ -1055,13 +1055,13 @@ function TicketTimelinePanel({ ticket }) {
1055
1055
  }
1056
1056
  const engAttachments = mapEngagementAttachments(eng.attachments);
1057
1057
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1058
- _chunkHETQETPVcjs.ChatMessageRow,
1058
+ _chunkUWQWMGJ7cjs.ChatMessageRow,
1059
1059
  {
1060
1060
  displayName: author,
1061
1061
  avatarUrl: avatarSrc,
1062
1062
  timeLabel: eng.createdAt ? _chunkKT3U3ZRPcjs.formatRelativeTime.call(void 0, eng.createdAt) : null,
1063
1063
  body: stripAttachmentsPreamble(_nullishCoalesce(eng.body, () => ( ""))),
1064
- footer: engAttachments.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS2VWQX6Tcjs.TicketAttachmentsList, { attachments: engAttachments, size: "compact" }) }) : null
1064
+ footer: engAttachments.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5MF3NMYCcjs.TicketAttachmentsList, { attachments: engAttachments, size: "compact" }) }) : null
1065
1065
  },
1066
1066
  eng.id
1067
1067
  );
@@ -1174,7 +1174,7 @@ function TicketRow({
1174
1174
  onActionCollapsed,
1175
1175
  id
1176
1176
  }) {
1177
- const optimistic = _chunkZX7SCPLOcjs.isOptimistic.call(void 0, ticket);
1177
+ const optimistic = _chunkE7YCPY7Kcjs.isOptimistic.call(void 0, ticket);
1178
1178
  const rowRef = _react.useRef.call(void 0, null);
1179
1179
  const handleClick = _react.useCallback.call(void 0, () => {
1180
1180
  onToggle(ticket.id);
@@ -1212,7 +1212,7 @@ function TicketRow({
1212
1212
  };
1213
1213
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: rowRef, id, className: "scroll-mt-24", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Collapsible, { open: expanded && !optimistic, className: "border-b border-ods-border last:border-b-0", children: [
1214
1214
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1215
- _chunkHETQETPVcjs.ChatTicketItem,
1215
+ _chunkUWQWMGJ7cjs.ChatTicketItem,
1216
1216
  {
1217
1217
  ticket: tileData,
1218
1218
  onClick: optimistic ? void 0 : handleClick,
@@ -1245,7 +1245,7 @@ function TicketRow({
1245
1245
  // src/components/tickets/ticket-center.tsx
1246
1246
 
1247
1247
  function TicketCenter({ toast: toast2 = _chunkJO5TLJPMcjs.toast } = {}) {
1248
- const identity = _chunkHETQETPVcjs.useChatIdentity.call(void 0, );
1248
+ const identity = _chunkUWQWMGJ7cjs.useChatIdentity.call(void 0, );
1249
1249
  if (identity.isLoading) {
1250
1250
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketCenterSkeleton, {});
1251
1251
  }
@@ -1343,11 +1343,11 @@ function TicketCenterAuthed({
1343
1343
  ) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkETYLOZOBcjs.Card, { className: "overflow-hidden", children: merged.map((ticket) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1344
1344
  TicketRow,
1345
1345
  {
1346
- id: _chunkHETQETPVcjs.devSectionAnchorId.call(void 0, "ticket", ticket.external_id),
1346
+ id: _chunkUWQWMGJ7cjs.devSectionAnchorId.call(void 0, "ticket", ticket.external_id),
1347
1347
  ticket,
1348
1348
  expanded: expandedTicketId === ticket.id,
1349
1349
  onToggle: toggleRow,
1350
- busy: _chunkZX7SCPLOcjs.isOptimistic.call(void 0, ticket) ? false : actions.isRowBusy(ticket.id),
1350
+ busy: _chunkE7YCPY7Kcjs.isOptimistic.call(void 0, ticket) ? false : actions.isRowBusy(ticket.id),
1351
1351
  supportSystemDown,
1352
1352
  onSendMessage: actions.sendMessage,
1353
1353
  onClose: actions.closeTicket,
@@ -1401,7 +1401,7 @@ function HelpCenterCard({
1401
1401
  onClearReplyError,
1402
1402
  id
1403
1403
  }) {
1404
- const optimistic = _chunkZX7SCPLOcjs.isOptimistic.call(void 0, ticket);
1404
+ const optimistic = _chunkE7YCPY7Kcjs.isOptimistic.call(void 0, ticket);
1405
1405
  const rawStatus = (_nullishCoalesce(ticket.status, () => ( "OPEN"))).toUpperCase();
1406
1406
  const priority = (_nullishCoalesce(ticket.priority, () => ( ""))).toUpperCase();
1407
1407
  const relativeUpdated = ticket.hubspot_updated_at ? _chunkKT3U3ZRPcjs.formatRelativeTime.call(void 0, ticket.hubspot_updated_at) : "recently";
@@ -1423,7 +1423,7 @@ function HelpCenterCard({
1423
1423
  });
1424
1424
  return () => cancelAnimationFrame(raf);
1425
1425
  }, [isExpanded]);
1426
- const live = _chunkZX7SCPLOcjs.useOptionalTicketLive.call(void 0, );
1426
+ const live = _chunkE7YCPY7Kcjs.useOptionalTicketLive.call(void 0, );
1427
1427
  const unreadCount = !optimistic && ticket.external_id && _optionalChain([live, 'optionalAccess', _64 => _64.unreadByTicket, 'access', _65 => _65[ticket.external_id]]) || 0;
1428
1428
  const rightBadges = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
1429
1429
  unreadCount > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -1473,7 +1473,7 @@ function HelpCenterCard({
1473
1473
  "aria-controls": isExpanded ? `help-center-drawer-${ticket.id}` : void 0,
1474
1474
  className: "w-full p-[12px] text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-accent disabled:cursor-default content-md:p-[16px]",
1475
1475
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1476
- _chunkSTCJYO2Zcjs.DevCardRowContent,
1476
+ _chunkLANNTTKPcjs.DevCardRowContent,
1477
1477
  {
1478
1478
  title,
1479
1479
  subtitle,
@@ -1574,7 +1574,7 @@ function HelpCenterCreateForm({
1574
1574
  subjectError && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { id: "help-center-subject-error", className: "mt-1 text-ods-error text-h6", children: subjectError })
1575
1575
  ] });
1576
1576
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1577
- _chunk2V7D5GJXcjs.ContactForm,
1577
+ _chunk3QAMMWV2cjs.ContactForm,
1578
1578
  {
1579
1579
  rescue: null,
1580
1580
  title: "Open a new ticket",
@@ -1613,29 +1613,29 @@ function HelpCenterCreateForm({
1613
1613
  // src/components/tickets/help-center-list.tsx
1614
1614
 
1615
1615
  function HelpCenterList({ toast: toast2 = _chunkJO5TLJPMcjs.toast, backButton, title, shell } = {}) {
1616
- const identity = _chunkHETQETPVcjs.useChatIdentity.call(void 0, );
1616
+ const identity = _chunkUWQWMGJ7cjs.useChatIdentity.call(void 0, );
1617
1617
  const searchParams = _chunk7DNL734Scjs.useSearchParams.call(void 0, );
1618
1618
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
1619
1619
  const pathname = _chunk7DNL734Scjs.usePathname.call(void 0, );
1620
- const search = searchParams.get(_chunkHETQETPVcjs.DEV_SECTION_PARAM_KEYS.search) || "";
1620
+ const search = searchParams.get(_chunkUWQWMGJ7cjs.DEV_SECTION_PARAM_KEYS.search) || "";
1621
1621
  const status = searchParams.get("status") || "all";
1622
- const ticketParam = searchParams.get(_chunkHETQETPVcjs.TICKET_OPEN_PARAM) || "";
1622
+ const ticketParam = searchParams.get(_chunkUWQWMGJ7cjs.TICKET_OPEN_PARAM) || "";
1623
1623
  const page = _chunkAECTRMGQcjs.positiveInt.call(void 0, searchParams.get("page"), 1);
1624
1624
  if (identity.isLoading) {
1625
1625
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1626
- _chunkSTCJYO2Zcjs.DevSectionPage,
1626
+ _chunkLANNTTKPcjs.DevSectionPage,
1627
1627
  {
1628
1628
  sectionKey: "tickets",
1629
1629
  backButton,
1630
1630
  title,
1631
1631
  shell,
1632
1632
  preControls: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HelpCenterCreateFormSkeleton, {}),
1633
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSTCJYO2Zcjs.DevCardRowSkeletonList, {})
1633
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLANNTTKPcjs.DevCardRowSkeletonList, {})
1634
1634
  }
1635
1635
  );
1636
1636
  }
1637
1637
  if (identity.authTier === "anon" || !_optionalChain([identity, 'access', _66 => _66.user, 'optionalAccess', _67 => _67.email])) {
1638
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSTCJYO2Zcjs.DevSectionPage, { sectionKey: "tickets", backButton, title, shell, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1638
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLANNTTKPcjs.DevSectionPage, { sectionKey: "tickets", backButton, title, shell, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1639
1639
  _chunkMA4Q5RBPcjs.EmptyState,
1640
1640
  {
1641
1641
  type: "generic",
@@ -1687,8 +1687,8 @@ function HelpCenterListAuthed({
1687
1687
  const setOpenTicket = _react.useCallback.call(void 0,
1688
1688
  (externalId) => {
1689
1689
  const params = new URLSearchParams(searchParams.toString());
1690
- if (externalId) params.set(_chunkHETQETPVcjs.TICKET_OPEN_PARAM, externalId);
1691
- else params.delete(_chunkHETQETPVcjs.TICKET_OPEN_PARAM);
1690
+ if (externalId) params.set(_chunkUWQWMGJ7cjs.TICKET_OPEN_PARAM, externalId);
1691
+ else params.delete(_chunkUWQWMGJ7cjs.TICKET_OPEN_PARAM);
1692
1692
  const qs = params.toString();
1693
1693
  router.replace(qs ? `${pathname}?${qs}` : pathname, { scroll: false });
1694
1694
  },
@@ -1765,15 +1765,15 @@ function HelpCenterListAuthed({
1765
1765
  ] }),
1766
1766
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDFQYAYBHcjs.Button, { type: "button", variant: "accent", onClick: () => refetch(), children: "Retry" })
1767
1767
  ] }),
1768
- !error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSTCJYO2Zcjs.DevCardRowSkeletonList, {}) : !hasResults && isFetching ? (
1768
+ !error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLANNTTKPcjs.DevCardRowSkeletonList, {}) : !hasResults && isFetching ? (
1769
1769
  // Bridge state — background refetch in flight and the
1770
1770
  // optimistic placeholder was just removed by the mutation
1771
1771
  // callback. Without this branch "No tickets yet" would flash
1772
1772
  // for ~50ms between `removeOptimistic` and the server
1773
1773
  // response landing.
1774
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSTCJYO2Zcjs.DevCardRowSkeletonList, { rows: 1 })
1774
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLANNTTKPcjs.DevCardRowSkeletonList, { rows: 1 })
1775
1775
  ) : !hasResults ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1776
- _chunkSTCJYO2Zcjs.ListEmptyState,
1776
+ _chunkLANNTTKPcjs.ListEmptyState,
1777
1777
  {
1778
1778
  isFiltered: hasActiveFilters,
1779
1779
  filtered: {
@@ -1804,11 +1804,11 @@ function HelpCenterListAuthed({
1804
1804
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full overflow-clip rounded-[6px] border border-ods-border bg-ods-card", children: merged.map((ticket) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1805
1805
  HelpCenterCard,
1806
1806
  {
1807
- id: _chunkHETQETPVcjs.devSectionAnchorId.call(void 0, "ticket", ticket.external_id),
1807
+ id: _chunkUWQWMGJ7cjs.devSectionAnchorId.call(void 0, "ticket", ticket.external_id),
1808
1808
  ticket,
1809
1809
  expanded: expandedTicketId === ticket.id,
1810
1810
  onToggle: toggleRow,
1811
- busy: _chunkZX7SCPLOcjs.isOptimistic.call(void 0, ticket) ? false : actions.isRowBusy(ticket.id),
1811
+ busy: _chunkE7YCPY7Kcjs.isOptimistic.call(void 0, ticket) ? false : actions.isRowBusy(ticket.id),
1812
1812
  supportSystemDown,
1813
1813
  onSendMessage: actions.sendMessage,
1814
1814
  onClose: actions.closeTicket,
@@ -1822,7 +1822,7 @@ function HelpCenterListAuthed({
1822
1822
  ) }),
1823
1823
  !error && totalPages > 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMA4Q5RBPcjs.UnifiedPagination, { currentPage: page, totalPages })
1824
1824
  ] });
1825
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSTCJYO2Zcjs.DevSectionPage, { sectionKey: "tickets", backButton, title, shell, preControls: form, children: body });
1825
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLANNTTKPcjs.DevSectionPage, { sectionKey: "tickets", backButton, title, shell, preControls: form, children: body });
1826
1826
  }
1827
1827
 
1828
1828