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

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 (113) 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-DPX6244M.js → chunk-45F7PXUI.js} +3 -3
  7. package/dist/{chunk-KYFNFRSV.js → chunk-67QBMN4R.js} +2 -2
  8. package/dist/{chunk-3RKBJT6K.cjs → chunk-6A43ZDWV.cjs} +2 -2
  9. package/dist/chunk-A6P6DHEZ.cjs +130 -0
  10. package/dist/{chunk-KNOZVVCU.cjs → chunk-BOTM373R.cjs} +9 -9
  11. package/dist/{chunk-DHMO5GI4.cjs → chunk-BWIN42ZA.cjs} +21 -21
  12. package/dist/{chunk-YTMV4OBY.js → chunk-DCD5WZUF.js} +4 -4
  13. package/dist/{chunk-V36WGIYR.js → chunk-DEZDMTBM.js} +5 -5
  14. package/dist/{chunk-YO5JB3WE.cjs → chunk-DXCBOZVT.cjs} +35 -35
  15. package/dist/{chunk-ZX7SCPLO.cjs → chunk-E7YCPY7K.cjs} +3 -3
  16. package/dist/{chunk-I5F2OTFE.cjs → chunk-EZC2F5OT.cjs} +33 -33
  17. package/dist/{chunk-DLEO53NX.cjs → chunk-GN4A7PMB.cjs} +69 -69
  18. package/dist/{chunk-6T3BTD6Q.js → chunk-IWCPXJEE.js} +201 -327
  19. package/dist/{chunk-ROBQ5TR7.js → chunk-JH2SIWPQ.js} +28 -17
  20. package/dist/{chunk-3AJIQPFG.js → chunk-JIWMBIVZ.js} +6 -6
  21. package/dist/{chunk-DDWFCWOE.js → chunk-JPD4NXH6.js} +1 -1
  22. package/dist/{chunk-JVCAK4W3.cjs → chunk-LE5WKGJV.cjs} +3 -3
  23. package/dist/{chunk-NPAQSMRY.js → chunk-LOYPRJWA.js} +1053 -357
  24. package/dist/{chunk-5IJXM3RU.cjs → chunk-MIQLUUVF.cjs} +10 -10
  25. package/dist/{chunk-MXPQMQI3.js → chunk-MM7MCIXL.js} +6 -6
  26. package/dist/{chunk-C5AGSZBT.js → chunk-N2PF5CFX.js} +4837 -5425
  27. package/dist/{chunk-STCJYO2Z.cjs → chunk-NDZ5ZXOQ.cjs} +11 -11
  28. package/dist/{chunk-H5R7U2D2.js → chunk-NZ5BHDFZ.js} +1 -1
  29. package/dist/{chunk-JCA5MBVY.js → chunk-PQ6HBLZ7.js} +4 -4
  30. package/dist/{chunk-EOKSKJSS.cjs → chunk-QBCDSTLE.cjs} +13 -13
  31. package/dist/{chunk-NQWJAOHO.js → chunk-QXZCLQNV.js} +1 -1
  32. package/dist/{chunk-2V7D5GJX.cjs → chunk-S2FUFMLW.cjs} +25 -25
  33. package/dist/{chunk-64F6OEEV.js → chunk-SGFTTJKO.js} +1 -1
  34. package/dist/{chunk-P7IL4CX3.js → chunk-TBCZCRQ5.js} +6 -6
  35. package/dist/{chunk-HETQETPV.cjs → chunk-UWQWMGJ7.cjs} +28 -17
  36. package/dist/{chunk-X2MNNV5H.cjs → chunk-WALCXC7J.cjs} +3 -3
  37. package/dist/{chunk-YBS5QGON.js → chunk-XGHGGBM3.js} +2 -2
  38. package/dist/{chunk-NKILEG3Y.cjs → chunk-YC5COB5V.cjs} +45 -45
  39. package/dist/{chunk-BVZ7W4HW.js → chunk-YEMCCYIF.js} +4 -4
  40. package/dist/chunk-YYYVS7CX.js +130 -0
  41. package/dist/{chunk-S2VWQX6T.cjs → chunk-Z3CVSPO3.cjs} +842 -1430
  42. package/dist/{chunk-PPXR22YC.cjs → chunk-Z5UWW3Z2.cjs} +707 -11
  43. package/dist/{chunk-JO5TLJPM.cjs → chunk-ZXCZYMN4.cjs} +37 -163
  44. package/dist/{cloud-tenants-2J7CPTKT.cjs → cloud-tenants-PFDF7O5U.cjs} +6 -5
  45. package/dist/{cloud-tenants-YOY2WLGC.js → cloud-tenants-TAKOWXLD.js} +5 -4
  46. package/dist/components/case-studies/index.cjs +17 -16
  47. package/dist/components/case-studies/index.js +6 -5
  48. package/dist/components/chat/index.cjs +2 -2
  49. package/dist/components/chat/index.js +1 -1
  50. package/dist/components/chat/types/message.types.d.ts +20 -16
  51. package/dist/components/chat/types/message.types.d.ts.map +1 -1
  52. package/dist/components/chat/types/unified-chat-state.types.d.ts +1 -1
  53. package/dist/components/chat/utils/process-historical-messages.d.ts.map +1 -1
  54. package/dist/components/contact/index.cjs +7 -6
  55. package/dist/components/contact/index.js +6 -5
  56. package/dist/components/docs/index.cjs +10 -9
  57. package/dist/components/docs/index.js +9 -8
  58. package/dist/components/embeds/index.cjs +7 -6
  59. package/dist/components/embeds/index.js +6 -5
  60. package/dist/components/faq/index.cjs +7 -6
  61. package/dist/components/faq/index.js +6 -5
  62. package/dist/components/features/index.cjs +10 -5
  63. package/dist/components/features/index.js +9 -4
  64. package/dist/components/features/remote-session/index.d.ts +2 -0
  65. package/dist/components/features/remote-session/index.d.ts.map +1 -1
  66. package/dist/components/features/remote-session/remote-session-keep-modals.d.ts +3 -3
  67. package/dist/components/features/remote-session/remote-session-keep-modals.d.ts.map +1 -1
  68. package/dist/components/features/remote-session/remote-session-ticket-modals.d.ts +29 -0
  69. package/dist/components/features/remote-session/remote-session-ticket-modals.d.ts.map +1 -0
  70. package/dist/components/help-center-pages/index.cjs +71 -70
  71. package/dist/components/help-center-pages/index.js +17 -16
  72. package/dist/components/index.cjs +44 -39
  73. package/dist/components/index.js +22 -17
  74. package/dist/components/meeting-scheduler/index.cjs +33 -32
  75. package/dist/components/meeting-scheduler/index.js +5 -4
  76. package/dist/components/navigation/index.cjs +9 -8
  77. package/dist/components/navigation/index.js +8 -7
  78. package/dist/components/onboarding-guides/index.cjs +9 -8
  79. package/dist/components/onboarding-guides/index.js +8 -7
  80. package/dist/components/product-demo/index.cjs +7 -7
  81. package/dist/components/product-demo/index.js +7 -7
  82. package/dist/components/tickets/index.cjs +10 -9
  83. package/dist/components/tickets/index.js +9 -8
  84. package/dist/components/ui/autocomplete.d.ts +6 -0
  85. package/dist/components/ui/autocomplete.d.ts.map +1 -1
  86. package/dist/components/ui/index.cjs +8 -7
  87. package/dist/components/ui/index.js +7 -6
  88. package/dist/{devices-5NADSKDZ.cjs → devices-KRCGZMGA.cjs} +7 -6
  89. package/dist/{devices-EQXXILXW.js → devices-LHEX7O5T.js} +5 -4
  90. package/dist/hooks/index.cjs +6 -4
  91. package/dist/hooks/index.js +5 -3
  92. package/dist/index.cjs +17 -11
  93. package/dist/index.js +18 -12
  94. package/dist/{knowledge-LHQYZJE7.cjs → knowledge-KLVPVEYZ.cjs} +7 -6
  95. package/dist/{knowledge-YCQITBJB.js → knowledge-RZSFNR33.js} +5 -4
  96. package/dist/{logs-LZNXGOSW.js → logs-E5DOV5JO.js} +5 -4
  97. package/dist/{logs-DUVKSQU3.cjs → logs-OX3XTVL2.cjs} +14 -13
  98. package/dist/{policies-5H74FS4S.cjs → policies-FOSCIZGK.cjs} +10 -9
  99. package/dist/{policies-VYWOJ7IF.js → policies-MC2S4S5G.js} +5 -4
  100. package/dist/{remote-session-R6VAFESR.cjs → remote-session-DRFE5XZE.cjs} +4 -3
  101. package/dist/{remote-session-GSGZOFDX.js → remote-session-JQ2BPIE3.js} +2 -1
  102. package/dist/{software-update-MSDY3OLX.js → software-update-D4OEIH65.js} +7 -5
  103. package/dist/{software-update-VRRX5U4W.cjs → software-update-HOBSTWVO.cjs} +12 -10
  104. package/package.json +1 -1
  105. package/src/chat-protocol/nats-decoder.ts +10 -8
  106. package/src/chat-protocol/source-metadata.ts +25 -2
  107. package/src/components/chat/types/message.types.ts +21 -15
  108. package/src/components/chat/types/unified-chat-state.types.ts +1 -1
  109. package/src/components/chat/utils/process-historical-messages.ts +12 -4
  110. package/src/components/features/remote-session/index.ts +2 -0
  111. package/src/components/features/remote-session/remote-session-keep-modals.tsx +4 -4
  112. package/src/components/features/remote-session/remote-session-ticket-modals.tsx +140 -0
  113. package/src/components/ui/autocomplete.tsx +18 -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"}
@@ -6,15 +6,15 @@ import {
6
6
  PageShell,
7
7
  SearchInput,
8
8
  StatusFilterComponent
9
- } from "./chunk-C5AGSZBT.js";
9
+ } from "./chunk-N2PF5CFX.js";
10
10
  import {
11
11
  PageLayout
12
- } from "./chunk-NPAQSMRY.js";
12
+ } from "./chunk-LOYPRJWA.js";
13
13
  import {
14
14
  OPENFRAME_DEV_SECTIONS,
15
15
  TASK_TYPE_LABELS,
16
16
  TASK_TYPE_TEXT_COLORS
17
- } from "./chunk-ROBQ5TR7.js";
17
+ } from "./chunk-JH2SIWPQ.js";
18
18
  import {
19
19
  usePathname,
20
20
  useRouter,
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  SearchInput
4
- } from "./chunk-C5AGSZBT.js";
4
+ } from "./chunk-N2PF5CFX.js";
5
5
  import {
6
6
  contentFetch
7
7
  } from "./chunk-G3GRYDMS.js";
@@ -12,7 +12,7 @@ import {
12
12
  resolveExternalNavigation,
13
13
  resolveSourceIcon,
14
14
  stripSameOriginToPath
15
- } from "./chunk-ROBQ5TR7.js";
15
+ } from "./chunk-JH2SIWPQ.js";
16
16
  import {
17
17
  useDebounce
18
18
  } from "./chunk-CMZ3QTFQ.js";
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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 _chunkPPXR22YCcjs = require('./chunk-PPXR22YC.cjs');
4
+ var _chunkZ5UWW3Z2cjs = require('./chunk-Z5UWW3Z2.cjs');
5
5
 
6
6
 
7
7
  var _chunkETYLOZOBcjs = require('./chunk-ETYLOZOB.cjs');
@@ -66,7 +66,7 @@ function DetailPageSkeleton({
66
66
  ] });
67
67
  if (bare) return content;
68
68
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
69
- _chunkPPXR22YCcjs.PageLayout,
69
+ _chunkZ5UWW3Z2cjs.PageLayout,
70
70
  {
71
71
  showHeader: false,
72
72
  className: "mx-auto max-w-[1280px] bg-ods-bg px-6 py-6 content-md:px-20 content-md:py-10",
@@ -0,0 +1,130 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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
+
3
+ // src/hooks/ui/use-auto-limit-tags.ts
4
+ var _react = require('react');
5
+ function useAutoLimitTags({
6
+ count,
7
+ limitTags = "auto",
8
+ placeholder = "",
9
+ reserveInputWidth = true
10
+ }) {
11
+ const middleRef = _react.useRef.call(void 0, null);
12
+ const measureRef = _react.useRef.call(void 0, null);
13
+ const textMeasureRef = _react.useRef.call(void 0, null);
14
+ const badgeRef = _react.useRef.call(void 0, null);
15
+ const inputRef = _react.useRef.call(void 0, null);
16
+ const [measuredCount, setMeasuredCount] = _react.useState.call(void 0, null);
17
+ const recalculate = _react.useCallback.call(void 0, () => {
18
+ const middle = middleRef.current;
19
+ const measure2 = measureRef.current;
20
+ if (!middle || !measure2) {
21
+ setMeasuredCount(null);
22
+ return;
23
+ }
24
+ if (count === 0) {
25
+ setMeasuredCount(0);
26
+ return;
27
+ }
28
+ const cs = getComputedStyle(middle);
29
+ const padL = parseFloat(cs.paddingLeft) || 0;
30
+ const padR = parseFloat(cs.paddingRight) || 0;
31
+ const gap = parseFloat(cs.gap) || 0;
32
+ const middleW = middle.clientWidth;
33
+ let inputReservedW = 0;
34
+ let trailingGap = 0;
35
+ if (reserveInputWidth) {
36
+ const textW = _nullishCoalesce(_optionalChain([textMeasureRef, 'access', _ => _.current, 'optionalAccess', _2 => _2.offsetWidth]), () => ( 60));
37
+ const inputMinW = inputRef.current ? parseFloat(getComputedStyle(inputRef.current).minWidth) || 60 : 60;
38
+ inputReservedW = Math.max(textW + 8, inputMinW);
39
+ trailingGap = gap;
40
+ }
41
+ const available = middleW - padL - padR - inputReservedW - trailingGap;
42
+ const tagEls = Array.from(measure2.children);
43
+ const widths = tagEls.map((el) => el.offsetWidth);
44
+ let total = 0;
45
+ for (let i = 0; i < widths.length; i++) {
46
+ total += widths[i] + (i > 0 ? gap : 0);
47
+ }
48
+ if (total <= available) {
49
+ setMeasuredCount(count);
50
+ return;
51
+ }
52
+ const badgeW = _nullishCoalesce(_optionalChain([badgeRef, 'access', _3 => _3.current, 'optionalAccess', _4 => _4.offsetWidth]), () => ( 40));
53
+ const spaceWithBadge = available - badgeW - gap;
54
+ let used = 0;
55
+ let fitCount = 0;
56
+ for (let i = 0; i < widths.length; i++) {
57
+ const need = widths[i] + (i > 0 ? gap : 0);
58
+ if (used + need > spaceWithBadge) break;
59
+ used += need;
60
+ fitCount++;
61
+ }
62
+ setMeasuredCount(Math.max(0, fitCount));
63
+ }, [count, placeholder, reserveInputWidth]);
64
+ _react.useEffect.call(void 0, () => {
65
+ if (limitTags !== "auto") return void 0;
66
+ const el = middleRef.current;
67
+ if (!el) return void 0;
68
+ const ro = new ResizeObserver(recalculate);
69
+ ro.observe(el);
70
+ return () => ro.disconnect();
71
+ }, [recalculate, limitTags]);
72
+ const visibleCount = limitTags !== "auto" ? Math.min(limitTags, count) : measuredCount === null ? count : Math.min(measuredCount, count);
73
+ return { visibleCount, middleRef, measureRef, textMeasureRef, badgeRef, inputRef };
74
+ }
75
+
76
+ // src/hooks/ui/use-keyboard-collision-padding.ts
77
+
78
+ var KEYBOARD_INSET_VAR = "--of-keyboard-inset";
79
+ function measure() {
80
+ if (typeof document === "undefined") return 0;
81
+ const inset = Number.parseFloat(getComputedStyle(document.documentElement).getPropertyValue(KEYBOARD_INSET_VAR));
82
+ if (!(inset > 0)) return 0;
83
+ const layoutHeight = document.documentElement.clientHeight;
84
+ const viewport = window.visualViewport;
85
+ const viewportBottom = viewport ? viewport.offsetTop + viewport.height : layoutHeight;
86
+ return Math.max(0, Math.round(viewportBottom - (layoutHeight - inset)));
87
+ }
88
+ var listeners = /* @__PURE__ */ new Set();
89
+ var padding = 0;
90
+ var teardown = null;
91
+ function sync() {
92
+ const next = measure();
93
+ if (next === padding) return;
94
+ padding = next;
95
+ for (const notify of listeners) notify();
96
+ }
97
+ function subscribe(onStoreChange) {
98
+ listeners.add(onStoreChange);
99
+ if (listeners.size === 1) {
100
+ padding = measure();
101
+ const observer = new MutationObserver(sync);
102
+ observer.observe(document.documentElement, { attributes: true, attributeFilter: ["style"] });
103
+ const viewport = window.visualViewport;
104
+ _optionalChain([viewport, 'optionalAccess', _5 => _5.addEventListener, 'call', _6 => _6("resize", sync)]);
105
+ _optionalChain([viewport, 'optionalAccess', _7 => _7.addEventListener, 'call', _8 => _8("scroll", sync)]);
106
+ teardown = () => {
107
+ observer.disconnect();
108
+ _optionalChain([viewport, 'optionalAccess', _9 => _9.removeEventListener, 'call', _10 => _10("resize", sync)]);
109
+ _optionalChain([viewport, 'optionalAccess', _11 => _11.removeEventListener, 'call', _12 => _12("scroll", sync)]);
110
+ };
111
+ }
112
+ return () => {
113
+ listeners.delete(onStoreChange);
114
+ if (listeners.size > 0) return;
115
+ _optionalChain([teardown, 'optionalCall', _13 => _13()]);
116
+ teardown = null;
117
+ };
118
+ }
119
+ function useKeyboardCollisionPadding() {
120
+ return _react.useSyncExternalStore.call(void 0,
121
+ subscribe,
122
+ () => padding,
123
+ () => 0
124
+ );
125
+ }
126
+
127
+
128
+
129
+
130
+ exports.useAutoLimitTags = useAutoLimitTags; exports.useKeyboardCollisionPadding = useKeyboardCollisionPadding;
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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 _chunkS2VWQX6Tcjs = require('./chunk-S2VWQX6T.cjs');
4
+ var _chunkZ3CVSPO3cjs = require('./chunk-Z3CVSPO3.cjs');
5
5
 
6
6
 
7
7
  var _chunkAUMKE74Mcjs = require('./chunk-AUMKE74M.cjs');
@@ -12,7 +12,7 @@ var _chunkAUMKE74Mcjs = require('./chunk-AUMKE74M.cjs');
12
12
 
13
13
 
14
14
 
15
- var _chunkHETQETPVcjs = require('./chunk-HETQETPV.cjs');
15
+ var _chunkUWQWMGJ7cjs = require('./chunk-UWQWMGJ7.cjs');
16
16
 
17
17
 
18
18
  var _chunkGQ7JJUITcjs = require('./chunk-GQ7JJUIT.cjs');
@@ -39,7 +39,7 @@ var _jsxruntime = require('react/jsx-runtime');
39
39
  function DocSearchResultRow({ result, isHighlighted }) {
40
40
  const docType = _optionalChain([result, 'access', _ => _.metadata, 'optionalAccess', _2 => _2.documentType]) || void 0;
41
41
  const sourceRepo = _optionalChain([result, 'access', _3 => _3.metadata, 'optionalAccess', _4 => _4.sourceRepo]) || void 0;
42
- const { Icon: SourceIcon, label: iconLabel } = _chunkHETQETPVcjs.resolveSourceIcon.call(void 0, {
42
+ const { Icon: SourceIcon, label: iconLabel } = _chunkUWQWMGJ7cjs.resolveSourceIcon.call(void 0, {
43
43
  sourceRepo,
44
44
  documentType: docType
45
45
  });
@@ -69,7 +69,7 @@ function DocSearchBar({
69
69
  renderResult
70
70
  }) {
71
71
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
72
- _chunkS2VWQX6Tcjs.SearchInput,
72
+ _chunkZ3CVSPO3cjs.SearchInput,
73
73
  {
74
74
  placeholder,
75
75
  value: query,
@@ -119,7 +119,7 @@ function mapDocSearchResults(docs) {
119
119
  results.push({
120
120
  id: `group-${entry.repo}`,
121
121
  // Same table label and count as the chat's grouped chip: one owner each.
122
- title: `${_chunkHETQETPVcjs.getSourceLabel.call(void 0, entry.repo)} ${_chunkHETQETPVcjs.recordCountLabel.call(void 0, rows.length)}`,
122
+ title: `${_chunkUWQWMGJ7cjs.getSourceLabel.call(void 0, entry.repo)} ${_chunkUWQWMGJ7cjs.recordCountLabel.call(void 0, rows.length)}`,
123
123
  path: rows[0].path,
124
124
  type: "file",
125
125
  metadata: {
@@ -311,27 +311,27 @@ function useDocSearch(config) {
311
311
  case "navigate-same-tab": {
312
312
  if (wantsNewTab) {
313
313
  setKeepOpen(true);
314
- window.open(action.href, "_blank", _chunkHETQETPVcjs.NEW_TAB_FEATURES);
314
+ window.open(action.href, "_blank", _chunkUWQWMGJ7cjs.NEW_TAB_FEATURES);
315
315
  return;
316
316
  }
317
317
  setKeepOpen(false);
318
318
  const path = baseRoute && action.href.startsWith(`${baseRoute}/`) ? action.href.slice(baseRoute.length + 1) : null;
319
319
  if (path && _optionalChain([onInPageSwap, 'optionalCall', _16 => _16(path)])) return;
320
- router.push(_chunkHETQETPVcjs.stripSameOriginToPath.call(void 0, action.href));
320
+ router.push(_chunkUWQWMGJ7cjs.stripSameOriginToPath.call(void 0, action.href));
321
321
  return;
322
322
  }
323
323
  case "navigate-new-tab":
324
324
  setKeepOpen(true);
325
325
  if (_optionalChain([runtime, 'optionalAccess', _17 => _17.navigation, 'access', _18 => _18.mode]) === "embed") {
326
326
  const targetPlatform = _nullishCoalesce(_optionalChain([result, 'access', _19 => _19.metadata, 'optionalAccess', _20 => _20.targetPlatform]), () => ( null));
327
- _chunkHETQETPVcjs.resolveExternalNavigation.call(void 0, {
327
+ _chunkUWQWMGJ7cjs.resolveExternalNavigation.call(void 0, {
328
328
  href: action.href,
329
329
  targetPlatform,
330
330
  runtime
331
331
  }).open();
332
332
  return;
333
333
  }
334
- window.open(action.href, "_blank", _chunkHETQETPVcjs.NEW_TAB_FEATURES);
334
+ window.open(action.href, "_blank", _chunkUWQWMGJ7cjs.NEW_TAB_FEATURES);
335
335
  return;
336
336
  case "ask-ai":
337
337
  setKeepOpen(false);
@@ -2,11 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- var _chunk3RKBJT6Kcjs = require('./chunk-3RKBJT6K.cjs');
5
+ var _chunk6A43ZDWVcjs = require('./chunk-6A43ZDWV.cjs');
6
6
 
7
7
 
8
8
 
9
- var _chunkKNOZVVCUcjs = require('./chunk-KNOZVVCU.cjs');
9
+ var _chunkBOTM373Rcjs = require('./chunk-BOTM373R.cjs');
10
10
 
11
11
 
12
12
  var _chunkGEDY7HQIcjs = require('./chunk-GEDY7HQI.cjs');
@@ -16,16 +16,16 @@ var _chunkGEDY7HQIcjs = require('./chunk-GEDY7HQI.cjs');
16
16
 
17
17
 
18
18
 
19
- var _chunkS2VWQX6Tcjs = require('./chunk-S2VWQX6T.cjs');
19
+ var _chunkZ3CVSPO3cjs = require('./chunk-Z3CVSPO3.cjs');
20
20
 
21
21
 
22
- var _chunkPPXR22YCcjs = require('./chunk-PPXR22YC.cjs');
22
+ var _chunkZ5UWW3Z2cjs = require('./chunk-Z5UWW3Z2.cjs');
23
23
 
24
24
 
25
25
 
26
26
 
27
27
 
28
- var _chunkHETQETPVcjs = require('./chunk-HETQETPV.cjs');
28
+ var _chunkUWQWMGJ7cjs = require('./chunk-UWQWMGJ7.cjs');
29
29
 
30
30
 
31
31
 
@@ -134,14 +134,14 @@ function OnboardingGuidesCatalogView({
134
134
  });
135
135
  };
136
136
  const source = _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _6 => _6.source]), () => ( "openframe"));
137
- const docSearch = _chunkKNOZVVCUcjs.useDocSearch.call(void 0, {
137
+ const docSearch = _chunkBOTM373Rcjs.useDocSearch.call(void 0, {
138
138
  source,
139
139
  baseRoute: basePath,
140
140
  onNavigate: (path) => router.push(path),
141
141
  tableIds: ["onboarding-guides"]
142
142
  });
143
143
  const defaultRenderCard = (guide) => {
144
- const cta = _chunkHETQETPVcjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _7 => _7.composeContentUrl]), {
144
+ const cta = _chunkUWQWMGJ7cjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _7 => _7.composeContentUrl]), {
145
145
  type: "onboarding_guide",
146
146
  slug: guide.slug,
147
147
  basePath,
@@ -152,7 +152,7 @@ function OnboardingGuidesCatalogView({
152
152
  const renderCardFn = _nullishCoalesce(renderCard, () => ( defaultRenderCard));
153
153
  const preControls = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
154
154
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
155
- _chunkKNOZVVCUcjs.DocSearchBar,
155
+ _chunkBOTM373Rcjs.DocSearchBar,
156
156
  {
157
157
  placeholder: "Search onboarding guides, releases, case studies\u2026",
158
158
  query: docSearch.query,
@@ -164,7 +164,7 @@ function OnboardingGuidesCatalogView({
164
164
  }
165
165
  ),
166
166
  sections.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
167
- _chunkS2VWQX6Tcjs.FilterPillRow,
167
+ _chunkZ3CVSPO3cjs.FilterPillRow,
168
168
  {
169
169
  label: "Section",
170
170
  selectedValue: activeSection,
@@ -174,7 +174,7 @@ function OnboardingGuidesCatalogView({
174
174
  )
175
175
  ] });
176
176
  if (selfFetch && guidesRes.error) {
177
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS2VWQX6Tcjs.LoadError, { message: "Failed to load onboarding guides.", onRetry: guidesRes.reload });
177
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ3CVSPO3cjs.LoadError, { message: "Failed to load onboarding guides.", onRetry: guidesRes.reload });
178
178
  }
179
179
  if (selfFetch && guidesRes.data == null && isLoading) {
180
180
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OnboardingGuidesCatalogSkeleton, {});
@@ -206,7 +206,7 @@ function OnboardingGuideDetailView({
206
206
  slug,
207
207
  guideEndpoint,
208
208
  related = [],
209
- MarkdownRenderer = _chunkS2VWQX6Tcjs.RichMarkdownRenderer,
209
+ MarkdownRenderer = _chunkZ3CVSPO3cjs.RichMarkdownRenderer,
210
210
  renderRelatedCard,
211
211
  backHref,
212
212
  backLabel = "Back to Getting Started",
@@ -216,9 +216,9 @@ function OnboardingGuideDetailView({
216
216
  }) {
217
217
  const resolvedBackHref = _nullishCoalesce(backHref, () => ( basePath));
218
218
  const runtime = _chunkUJ7AXHRZcjs.useChatRuntime.call(void 0, );
219
- const captions = _chunkHETQETPVcjs.useCaptions.call(void 0, );
219
+ const captions = _chunkUWQWMGJ7cjs.useCaptions.call(void 0, );
220
220
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
221
- const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS2VWQX6Tcjs.PageShell, { children: node }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: node });
221
+ const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ3CVSPO3cjs.PageShell, { children: node }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: node });
222
222
  const url = initialData ? null : slug && guideEndpoint ? guideEndpoint(slug) : null;
223
223
  const { data: guide, isLoading, error, reload } = _chunkGEDY7HQIcjs.useSelfFetch.call(void 0, url, { initialData });
224
224
  const { ref: videoWarmupRef } = _chunkETYLOZOBcjs.useVideoWarmup.call(void 0, {
@@ -226,13 +226,13 @@ function OnboardingGuideDetailView({
226
226
  supabaseStorageOrigin: _optionalChain([runtime, 'optionalAccess', _9 => _9.endpoints, 'access', _10 => _10.supabaseStorageOrigin])
227
227
  });
228
228
  if (error || !guide && !isLoading) {
229
- return renderShell(/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS2VWQX6Tcjs.LoadError, { message: "Guide not found.", onRetry: reload }));
229
+ return renderShell(/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ3CVSPO3cjs.LoadError, { message: "Guide not found.", onRetry: reload }));
230
230
  }
231
231
  if (!guide) {
232
232
  return renderShell(
233
233
  // Match the loaded page's top offset (TitleBlock's
234
234
  // `pt-[var(--spacing-system-l)]`) so content doesn't jump on load.
235
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "pt-[var(--spacing-system-l)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3RKBJT6Kcjs.DetailPageSkeleton, { bare: true, showImageGallery: false }) })
235
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "pt-[var(--spacing-system-l)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6A43ZDWVcjs.DetailPageSkeleton, { bare: true, showImageGallery: false }) })
236
236
  );
237
237
  }
238
238
  const { captionsUrl, highlightCaptionsUrl } = captions.forEntity("onboarding_guide", guide);
@@ -240,7 +240,7 @@ function OnboardingGuideDetailView({
240
240
  // worst), so it's the terminal fallback — no trailing `|| undefined` needed.
241
241
  _chunkAECTRMGQcjs.buildOgPlaceholderUrl.call(void 0, _optionalChain([runtime, 'optionalAccess', _11 => _11.endpoints]), guide.title, { aspect: "wide" });
242
242
  const defaultRenderRelatedCard = (g) => {
243
- const cta = _chunkHETQETPVcjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _12 => _12.composeContentUrl]), {
243
+ const cta = _chunkUWQWMGJ7cjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _12 => _12.composeContentUrl]), {
244
244
  type: "onboarding_guide",
245
245
  slug: g.slug,
246
246
  basePath,
@@ -251,14 +251,14 @@ function OnboardingGuideDetailView({
251
251
  const renderRelatedCardFn = _nullishCoalesce(renderRelatedCard, () => ( defaultRenderRelatedCard));
252
252
  return renderShell(
253
253
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
254
- _chunkPPXR22YCcjs.PageLayout,
254
+ _chunkZ5UWW3Z2cjs.PageLayout,
255
255
  {
256
256
  title: guide.title,
257
257
  titleSize: "h1",
258
258
  titleWrap: true,
259
259
  backButton: { label: backLabel, onClick: () => router.push(resolvedBackHref) },
260
260
  children: [
261
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkS2VWQX6Tcjs.EntityTagBadges, { tags: guide.onboarding_guide_tags }),
261
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ3CVSPO3cjs.EntityTagBadges, { tags: guide.onboarding_guide_tags }),
262
262
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
263
263
  _chunkETYLOZOBcjs.EntityAuthorCard,
264
264
  {
@@ -275,7 +275,7 @@ function OnboardingGuideDetailView({
275
275
  }
276
276
  ),
277
277
  (guide.main_video_url || guide.youtube_url) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: videoWarmupRef, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
278
- _chunkHETQETPVcjs.EntityVideoSection,
278
+ _chunkUWQWMGJ7cjs.EntityVideoSection,
279
279
  {
280
280
  mainVideoUrl: guide.main_video_url,
281
281
  youtubeUrl: guide.youtube_url || void 0,
@@ -293,7 +293,7 @@ function OnboardingGuideDetailView({
293
293
  ) }),
294
294
  guide.content && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "space-y-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownRenderer, { content: guide.content }) }),
295
295
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
296
- _chunkHETQETPVcjs.VideoBitesStrip,
296
+ _chunkUWQWMGJ7cjs.VideoBitesStrip,
297
297
  {
298
298
  bites: _nullishCoalesce(guide.video_bites, () => ( [])),
299
299
  filterPublished: true,
@@ -303,7 +303,7 @@ function OnboardingGuideDetailView({
303
303
  }
304
304
  ),
305
305
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
306
- _chunk3RKBJT6Kcjs.ArticleAuthorByline,
306
+ _chunk6A43ZDWVcjs.ArticleAuthorByline,
307
307
  {
308
308
  author: _nullishCoalesce(_optionalChain([guide, 'access', _13 => _13.author, 'optionalAccess', _14 => _14.full_name]), () => ( null)),
309
309
  avatar: _optionalChain([guide, 'access', _15 => _15.author, 'optionalAccess', _16 => _16.avatar_url]),
@@ -2,25 +2,25 @@
2
2
  import {
3
3
  HoneypotField,
4
4
  Textarea
5
- } from "./chunk-C5AGSZBT.js";
5
+ } from "./chunk-N2PF5CFX.js";
6
6
  import {
7
7
  Select,
8
8
  SelectContent,
9
9
  SelectItem,
10
10
  SelectTrigger,
11
11
  SelectValue
12
- } from "./chunk-NPAQSMRY.js";
12
+ } from "./chunk-LOYPRJWA.js";
13
13
  import {
14
14
  useContactSubmission,
15
15
  useHumanitySignals,
16
16
  useRescuedForm
17
- } from "./chunk-6T3BTD6Q.js";
17
+ } from "./chunk-IWCPXJEE.js";
18
18
  import {
19
19
  ChatAttachmentAddButton,
20
20
  ChatAttachmentChipStrip,
21
21
  HUBSPOT_DO_NOT_COLLECT_FORM_PROPS,
22
22
  useChatAttachments
23
- } from "./chunk-ROBQ5TR7.js";
23
+ } from "./chunk-JH2SIWPQ.js";
24
24
  import {
25
25
  SECTION_HEADING_CLASS,
26
26
  accentSentenceMarks