@flamingo-stack/openframe-frontend-core 0.0.853 → 0.0.855

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 (214) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{case-study-card-WP5Z234Q.cjs → case-study-card-6VAMNHLU.cjs} +8 -8
  3. package/dist/{chunk-2W22LY3W.cjs → chunk-2JCA7BRK.cjs} +19 -19
  4. package/dist/{chunk-53QPG7SJ.cjs → chunk-2MCPK6AX.cjs} +28 -28
  5. package/dist/{chunk-QOW2GP3V.cjs → chunk-2P72KAG5.cjs} +23 -23
  6. package/dist/{chunk-NMWLXHFH.cjs → chunk-3GJ75OUL.cjs} +183 -183
  7. package/dist/{chunk-P63CRPWI.cjs → chunk-4H3J57AN.cjs} +25 -25
  8. package/dist/{chunk-6GWRPW6B.cjs → chunk-5NK3FUHY.cjs} +4 -4
  9. package/dist/{chunk-DLTPSP5F.cjs → chunk-5TYG5JNB.cjs} +2 -2
  10. package/dist/{chunk-EIACEY2L.cjs → chunk-65NMKAPQ.cjs} +12 -12
  11. package/dist/{chunk-IGVAPIEW.cjs → chunk-6C4OR4MZ.cjs} +2 -2
  12. package/dist/{chunk-GG466XFQ.cjs → chunk-6DMH4GXN.cjs} +30 -5
  13. package/dist/{chunk-EF2FZ7GT.cjs → chunk-6VVQJU76.cjs} +54 -54
  14. package/dist/{chunk-G7GF4PWA.cjs → chunk-77GX573I.cjs} +9 -9
  15. package/dist/{chunk-7RZHSBNX.cjs → chunk-AOOHJLXS.cjs} +90 -90
  16. package/dist/{chunk-O3EKOXFZ.cjs → chunk-AYMY2VNB.cjs} +37 -43
  17. package/dist/{chunk-67CZ2Q5K.cjs → chunk-BSPIGZCC.cjs} +36 -36
  18. package/dist/{chunk-FW7RKWPY.cjs → chunk-D6GEMVHD.cjs} +3 -3
  19. package/dist/{chunk-KEV6F3QN.cjs → chunk-DPNFI5XM.cjs} +100 -100
  20. package/dist/{chunk-6V2M2X3M.cjs → chunk-DTZ6KASI.cjs} +6 -6
  21. package/dist/{chunk-SSKMGH5O.cjs → chunk-DXVGGWLG.cjs} +10 -10
  22. package/dist/{chunk-IO6NN3SL.cjs → chunk-EOUEUYCQ.cjs} +54 -54
  23. package/dist/{chunk-5RMBLOJ5.cjs → chunk-ESGE7CUX.cjs} +14 -14
  24. package/dist/{chunk-ETZFBB7O.cjs → chunk-EXQSIX2I.cjs} +4 -4
  25. package/dist/{chunk-IC4IJJB2.cjs → chunk-F33EAPD2.cjs} +124 -124
  26. package/dist/{chunk-COWMXUHN.cjs → chunk-GK577ZLJ.cjs} +6 -14
  27. package/dist/{chunk-E4MFQKPC.cjs → chunk-GZYRDLJW.cjs} +103 -103
  28. package/dist/{chunk-LFEURIZN.cjs → chunk-HML3JUXF.cjs} +324 -322
  29. package/dist/{chunk-BNHTBLAG.cjs → chunk-J3CFRGZ2.cjs} +17 -17
  30. package/dist/{chunk-USPUZO53.cjs → chunk-KZAQPRTA.cjs} +9 -11
  31. package/dist/{chunk-HTYJUMFB.cjs → chunk-LSLRJJFP.cjs} +2 -2
  32. package/dist/{chunk-TBGQMHCG.cjs → chunk-MINFN3IG.cjs} +8 -8
  33. package/dist/{chunk-KHOB3TES.cjs → chunk-MX52LZ6M.cjs} +6 -6
  34. package/dist/{chunk-OH5TXFRR.cjs → chunk-O4CPT3RK.cjs} +7 -7
  35. package/dist/{chunk-HF3V6WBJ.cjs → chunk-OTHQ2KQW.cjs} +3 -3
  36. package/dist/{chunk-IUDBG3HJ.cjs → chunk-PCQ2HKU3.cjs} +5 -5
  37. package/dist/{chunk-BNG6JOGZ.cjs → chunk-QPHXYE5P.cjs} +27 -27
  38. package/dist/{chunk-UO2EJGRJ.cjs → chunk-QZXCUY36.cjs} +53 -53
  39. package/dist/{chunk-COJG2ATY.cjs → chunk-RIJU4HZ2.cjs} +51 -55
  40. package/dist/{chunk-KKFDRCQF.cjs → chunk-RY7INTYU.cjs} +14 -1
  41. package/dist/{chunk-GI3MMBP3.cjs → chunk-SQ7YHWEP.cjs} +228 -15
  42. package/dist/{chunk-U767P4JU.cjs → chunk-STV6VJ3U.cjs} +21 -21
  43. package/dist/chunk-T54I5ZZY.cjs +62 -0
  44. package/dist/{chunk-UV45EPXN.cjs → chunk-TW5Y4D5I.cjs} +7 -7
  45. package/dist/{chunk-FX35L4Y6.cjs → chunk-XCQ5I27Z.cjs} +3 -3
  46. package/dist/{chunk-AZEO7HBB.cjs → chunk-Y44EF4JW.cjs} +2 -2
  47. package/dist/{chunk-W7OFAROY.cjs → chunk-YSXVRTGT.cjs} +9 -12
  48. package/dist/{chunk-GI6ECCWB.cjs → chunk-ZUGJLCYP.cjs} +1272 -856
  49. package/dist/{chunk-KNN2GCMW.cjs → chunk-ZYAVIRQV.cjs} +25 -25
  50. package/dist/{cloud-tenants-QUL2XPAS.cjs → cloud-tenants-2XFIDDGU.cjs} +28 -29
  51. package/dist/components/case-studies/index.cjs +44 -45
  52. package/dist/components/chat/chat-message-row.d.ts +1 -1
  53. package/dist/components/chat/chat-message-row.d.ts.map +1 -1
  54. package/dist/components/chat/chat-message-row.js +4 -4
  55. package/dist/components/chat/entity-cards/use-cover-image-fallback.d.ts +7 -13
  56. package/dist/components/chat/entity-cards/use-cover-image-fallback.d.ts.map +1 -1
  57. package/dist/components/chat/entity-cards/use-cover-image-fallback.js +2 -8
  58. package/dist/components/chat/hooks/use-chat-attachment-image-gallery.d.ts.map +1 -1
  59. package/dist/components/chat/hooks/use-chat-attachment-image-gallery.js +8 -4
  60. package/dist/components/chat/index.cjs +22 -23
  61. package/dist/components/contact/index.cjs +29 -30
  62. package/dist/components/docs/index.cjs +32 -33
  63. package/dist/components/embeds/index.cjs +29 -30
  64. package/dist/components/faq/index.cjs +30 -31
  65. package/dist/components/features/cloud-tenants/index.d.ts +7 -5
  66. package/dist/components/features/cloud-tenants/index.d.ts.map +1 -1
  67. package/dist/components/features/cloud-tenants/index.js +8 -1
  68. package/dist/components/features/cloud-tenants/single-customer-tenants-table-view.d.ts +26 -0
  69. package/dist/components/features/cloud-tenants/single-customer-tenants-table-view.d.ts.map +1 -0
  70. package/dist/components/features/cloud-tenants/single-customer-tenants-table-view.js +176 -0
  71. package/dist/components/features/cloud-tenants/tenant-access-cell.d.ts +4 -2
  72. package/dist/components/features/cloud-tenants/tenant-access-cell.d.ts.map +1 -1
  73. package/dist/components/features/cloud-tenants/tenant-access-cell.js +3 -2
  74. package/dist/components/features/cloud-tenants/tenant-customer-cell.d.ts +12 -5
  75. package/dist/components/features/cloud-tenants/tenant-customer-cell.d.ts.map +1 -1
  76. package/dist/components/features/cloud-tenants/tenant-customer-cell.js +38 -7
  77. package/dist/components/features/cloud-tenants/tenant-licenses-cell.d.ts +7 -0
  78. package/dist/components/features/cloud-tenants/tenant-licenses-cell.d.ts.map +1 -0
  79. package/dist/components/features/cloud-tenants/tenant-licenses-cell.js +17 -0
  80. package/dist/components/features/cloud-tenants/tenant-presentation.d.ts +19 -0
  81. package/dist/components/features/cloud-tenants/tenant-presentation.d.ts.map +1 -1
  82. package/dist/components/features/cloud-tenants/tenant-presentation.js +24 -3
  83. package/dist/components/features/cloud-tenants/tenant-row.d.ts +35 -8
  84. package/dist/components/features/cloud-tenants/tenant-row.d.ts.map +1 -1
  85. package/dist/components/features/cloud-tenants/tenants-table-columns.d.ts +9 -3
  86. package/dist/components/features/cloud-tenants/tenants-table-columns.d.ts.map +1 -1
  87. package/dist/components/features/cloud-tenants/tenants-table-columns.js +5 -3
  88. package/dist/components/features/cloud-tenants/tenants-table-view.d.ts +27 -6
  89. package/dist/components/features/cloud-tenants/tenants-table-view.d.ts.map +1 -1
  90. package/dist/components/features/cloud-tenants/tenants-table-view.js +75 -17
  91. package/dist/components/features/devices/device-directory.d.ts +18 -0
  92. package/dist/components/features/devices/device-directory.d.ts.map +1 -0
  93. package/dist/components/features/devices/device-directory.js +35 -0
  94. package/dist/components/features/devices/devices-filter-toolbar.d.ts +3 -1
  95. package/dist/components/features/devices/devices-filter-toolbar.d.ts.map +1 -1
  96. package/dist/components/features/devices/devices-filter-toolbar.js +2 -1
  97. package/dist/components/features/devices/devices-panel-view.d.ts +3 -1
  98. package/dist/components/features/devices/devices-panel-view.d.ts.map +1 -1
  99. package/dist/components/features/devices/devices-panel-view.js +11 -2
  100. package/dist/components/features/devices/devices-table-columns.d.ts +17 -3
  101. package/dist/components/features/devices/devices-table-columns.d.ts.map +1 -1
  102. package/dist/components/features/devices/devices-table-columns.js +80 -10
  103. package/dist/components/features/devices/index.d.ts +1 -0
  104. package/dist/components/features/devices/index.d.ts.map +1 -1
  105. package/dist/components/features/devices/index.js +8 -0
  106. package/dist/components/features/devices/types.d.ts +14 -0
  107. package/dist/components/features/devices/types.d.ts.map +1 -1
  108. package/dist/components/features/devices/use-tag-filter-modal.d.ts +1 -0
  109. package/dist/components/features/devices/use-tag-filter-modal.d.ts.map +1 -1
  110. package/dist/components/features/devices/use-tag-filter-modal.js +13 -8
  111. package/dist/components/features/index.cjs +42 -29
  112. package/dist/components/help-center-pages/index.cjs +134 -135
  113. package/dist/components/index.cjs +126 -113
  114. package/dist/components/meeting-scheduler/index.cjs +102 -103
  115. package/dist/components/navigation/app-layout.js +2 -2
  116. package/dist/components/navigation/index.cjs +31 -32
  117. package/dist/components/onboarding-guides/index.cjs +31 -32
  118. package/dist/components/product-demo/index.cjs +39 -40
  119. package/dist/components/related-content/index.cjs +16 -17
  120. package/dist/components/tickets/index.cjs +35 -36
  121. package/dist/components/ui/date-picker.d.ts +2 -0
  122. package/dist/components/ui/date-picker.d.ts.map +1 -1
  123. package/dist/components/ui/date-picker.js +19 -6
  124. package/dist/components/ui/entity-image.d.ts +1 -2
  125. package/dist/components/ui/entity-image.d.ts.map +1 -1
  126. package/dist/components/ui/entity-image.js +4 -8
  127. package/dist/components/ui/index.cjs +28 -29
  128. package/dist/components/ui/markdown/base-components.d.ts +0 -13
  129. package/dist/components/ui/markdown/base-components.d.ts.map +1 -1
  130. package/dist/components/ui/markdown/base-components.js +7 -7
  131. package/dist/components/ui/square-avatar.d.ts.map +1 -1
  132. package/dist/components/ui/square-avatar.js +3 -8
  133. package/dist/{devices-LNB4CYPP.cjs → devices-O3DYGIZB.cjs} +29 -30
  134. package/dist/embed-shims/index.cjs +3 -2
  135. package/dist/embed-shims/next-image.cjs +3 -2
  136. package/dist/embed-shims/next-image.d.ts +2 -0
  137. package/dist/embed-shims/next-image.d.ts.map +1 -1
  138. package/dist/embed-shims/next-image.js +14 -4
  139. package/dist/{embeddable-chat-SJEEJI4N.cjs → embeddable-chat-QD7NFD2H.cjs} +100 -101
  140. package/dist/hooks/index.cjs +27 -16
  141. package/dist/hooks/index.d.ts +1 -0
  142. package/dist/hooks/index.d.ts.map +1 -1
  143. package/dist/hooks/index.js +1 -0
  144. package/dist/hooks/ui/use-content-breakpoint.d.ts +8 -0
  145. package/dist/hooks/ui/use-content-breakpoint.d.ts.map +1 -1
  146. package/dist/hooks/ui/use-content-breakpoint.js +17 -3
  147. package/dist/hooks/ui/use-media-query.d.ts +1 -0
  148. package/dist/hooks/ui/use-media-query.d.ts.map +1 -1
  149. package/dist/hooks/ui/use-media-query.js +3 -1
  150. package/dist/hooks/use-authed-asset-src.d.ts +77 -2
  151. package/dist/hooks/use-authed-asset-src.d.ts.map +1 -1
  152. package/dist/hooks/use-authed-asset-src.js +185 -73
  153. package/dist/hooks/use-authed-image-src.d.ts +11 -4
  154. package/dist/hooks/use-authed-image-src.d.ts.map +1 -1
  155. package/dist/hooks/use-authed-image-src.js +6 -2
  156. package/dist/hooks/use-image-fallback.d.ts +16 -0
  157. package/dist/hooks/use-image-fallback.d.ts.map +1 -0
  158. package/dist/hooks/use-image-fallback.js +14 -0
  159. package/dist/index.cjs +58 -36
  160. package/dist/{knowledge-UTWKB6XG.cjs → knowledge-K7AFNZNO.cjs} +29 -30
  161. package/dist/{logs-PMXIWMBQ.cjs → logs-MZ3BR2FR.cjs} +35 -36
  162. package/dist/{policies-6DCMFDL7.cjs → policies-XVKQ2W7S.cjs} +32 -33
  163. package/dist/{remote-session-SG44CNOK.cjs → remote-session-VOZJXDM4.cjs} +13 -14
  164. package/dist/{scripts-2G7LXW7Z.cjs → scripts-IBPMBS6G.cjs} +35 -36
  165. package/dist/{software-update-MYLKHDHC.cjs → software-update-PXTANMAO.cjs} +32 -33
  166. package/dist/{tickets-board-SQY2Y6QV.cjs → tickets-board-POYZS7BW.cjs} +16 -17
  167. package/dist/utils/app-origins.d.ts +3 -6
  168. package/dist/utils/app-origins.d.ts.map +1 -1
  169. package/dist/utils/app-origins.js +8 -1
  170. package/dist/utils/embed-authed-fetch.d.ts +46 -26
  171. package/dist/utils/embed-authed-fetch.d.ts.map +1 -1
  172. package/dist/utils/embed-authed-fetch.js +24 -8
  173. package/dist/utils/index.cjs +4 -1
  174. package/dist/utils/presentation-for.d.ts +6 -0
  175. package/dist/utils/presentation-for.d.ts.map +1 -0
  176. package/dist/utils/presentation-for.js +7 -0
  177. package/dist/{video-file-player-XMOB234V.cjs → video-file-player-RIOT24NT.cjs} +3 -4
  178. package/package.json +1 -1
  179. package/src/components/chat/chat-message-row.tsx +8 -7
  180. package/src/components/chat/entity-cards/use-cover-image-fallback.ts +8 -28
  181. package/src/components/chat/hooks/use-chat-attachment-image-gallery.tsx +19 -8
  182. package/src/components/features/cloud-tenants/index.ts +8 -3
  183. package/src/components/features/cloud-tenants/single-customer-tenants-table-view.tsx +234 -0
  184. package/src/components/features/cloud-tenants/tenant-access-cell.tsx +12 -5
  185. package/src/components/features/cloud-tenants/tenant-customer-cell.tsx +48 -12
  186. package/src/components/features/cloud-tenants/tenant-licenses-cell.tsx +28 -0
  187. package/src/components/features/cloud-tenants/tenant-presentation.ts +46 -4
  188. package/src/components/features/cloud-tenants/tenant-row.ts +38 -8
  189. package/src/components/features/cloud-tenants/tenants-table-columns.ts +8 -5
  190. package/src/components/features/cloud-tenants/tenants-table-view.tsx +123 -28
  191. package/src/components/features/devices/device-directory.ts +55 -0
  192. package/src/components/features/devices/devices-filter-toolbar.tsx +4 -1
  193. package/src/components/features/devices/devices-panel-view.tsx +12 -2
  194. package/src/components/features/devices/devices-table-columns.tsx +123 -8
  195. package/src/components/features/devices/index.ts +7 -0
  196. package/src/components/features/devices/types.ts +14 -0
  197. package/src/components/features/devices/use-tag-filter-modal.ts +32 -14
  198. package/src/components/navigation/app-layout.tsx +4 -4
  199. package/src/components/ui/date-picker.tsx +21 -3
  200. package/src/components/ui/entity-image.tsx +4 -12
  201. package/src/components/ui/markdown/base-components.tsx +15 -20
  202. package/src/components/ui/square-avatar.tsx +5 -8
  203. package/src/embed-shims/next-image.tsx +34 -3
  204. package/src/hooks/index.ts +1 -0
  205. package/src/hooks/ui/use-content-breakpoint.ts +21 -2
  206. package/src/hooks/ui/use-media-query.ts +1 -0
  207. package/src/hooks/use-authed-asset-src.ts +323 -107
  208. package/src/hooks/use-authed-image-src.ts +15 -5
  209. package/src/hooks/use-image-fallback.ts +31 -0
  210. package/src/utils/app-origins.ts +12 -7
  211. package/src/utils/embed-authed-fetch.ts +71 -32
  212. package/src/utils/presentation-for.ts +10 -0
  213. package/dist/chunk-UAI4VMEF.cjs +0 -46
  214. package/dist/chunk-YSDB6HGQ.cjs +0 -102
@@ -1,5 +1,9 @@
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
+ // src/hooks/ui/use-isomorphic-layout-effect.ts
4
+ var _react = require('react');
5
+ var useIsomorphicLayoutEffect = typeof window !== "undefined" ? _react.useLayoutEffect : _react.useEffect;
6
+
3
7
  // src/utils/app-config.ts
4
8
  function getAppType() {
5
9
  try {
@@ -195,6 +199,12 @@ function readAppOrigins() {
195
199
  return snapshot;
196
200
  }
197
201
  var subscribeAppOrigins = subscribeRegisteredAdapter;
202
+ function isOnPage(target, page) {
203
+ return target.protocol === page.protocol && target.host === page.host;
204
+ }
205
+ function isPageOriginUrl(target, origins = readAppOrigins()) {
206
+ return isOnPage(target, new URL(_nullishCoalesce(origins.pageUrl, () => ( SERVER_PAGE_URL))));
207
+ }
198
208
  function resolveAppOriginUrl(url, origins = readAppOrigins()) {
199
209
  let page;
200
210
  let target;
@@ -204,7 +214,7 @@ function resolveAppOriginUrl(url, origins = readAppOrigins()) {
204
214
  } catch (e4) {
205
215
  return null;
206
216
  }
207
- if (target.protocol === page.protocol && target.host === page.host) return target;
217
+ if (isOnPage(target, page)) return target;
208
218
  if (target.protocol !== "http:" && target.protocol !== "https:") return null;
209
219
  return origins.allowedOrigins.includes(target.origin) ? target : null;
210
220
  }
@@ -239,12 +249,20 @@ function subscribeEmbedCredentialChange(listener) {
239
249
  return _nullishCoalesce(_optionalChain([getRegisteredAuthAdapter, 'call', _13 => _13(), 'optionalAccess', _14 => _14.subscribe, 'optionalCall', _15 => _15(listener)]), () => ( (() => {
240
250
  })));
241
251
  }
242
- function needsBearerAssetFetch(url) {
243
- if (typeof window === "undefined") return false;
252
+ function assetLoadMode(url) {
253
+ if (typeof window === "undefined") return "native";
244
254
  const adapter2 = getRegisteredAuthAdapter();
245
- if (!adapter2 || _optionalChain([adapter2, 'access', _16 => _16.getHeaders, 'optionalCall', _17 => _17(), 'access', _18 => _18.Authorization]) === void 0) return false;
246
- const target = resolveAppOriginUrl(url);
247
- return target !== null && (target.protocol === "http:" || target.protocol === "https:");
255
+ if (!adapter2) return "native";
256
+ const origins = readAppOrigins();
257
+ const target = resolveAppOriginUrl(url, origins);
258
+ if (!target || target.protocol !== "http:" && target.protocol !== "https:") return "native";
259
+ if (!adapter2.hasCredential) return _optionalChain([adapter2, 'access', _16 => _16.getHeaders, 'optionalCall', _17 => _17(), 'access', _18 => _18.Authorization]) !== void 0 ? "bearer" : "native";
260
+ if (adapter2.hasCredential()) return "bearer";
261
+ return isPageOriginUrl(target, origins) ? "native" : "awaiting-credential";
262
+ }
263
+ function resolveAssetUrl(url) {
264
+ const resolve = _optionalChain([getRegisteredAuthAdapter, 'call', _19 => _19(), 'optionalAccess', _20 => _20.resolveAssetUrl]);
265
+ return resolve ? resolve(url) : url;
248
266
  }
249
267
  function embedAuthedFetch(url, init = {}) {
250
268
  assertSameOrigin(url);
@@ -276,7 +294,7 @@ function setInFlightRefresh(refresh) {
276
294
  }
277
295
  function dedupedRefresh() {
278
296
  const adapter2 = getRegisteredAuthAdapter();
279
- const refresh = _optionalChain([adapter2, 'optionalAccess', _19 => _19.refresh, 'optionalAccess', _20 => _20.bind, 'call', _21 => _21(adapter2)]);
297
+ const refresh = _optionalChain([adapter2, 'optionalAccess', _21 => _21.refresh, 'optionalAccess', _22 => _22.bind, 'call', _23 => _23(adapter2)]);
280
298
  if (!refresh) return Promise.resolve(false);
281
299
  let inFlightRefresh = getInFlightRefresh();
282
300
  if (!inFlightRefresh) {
@@ -287,16 +305,20 @@ function dedupedRefresh() {
287
305
  }
288
306
  return inFlightRefresh;
289
307
  }
308
+ var answersAfterRefresh = /* @__PURE__ */ new WeakSet();
309
+ function answeredAfterRefresh(response) {
310
+ return answersAfterRefresh.has(response);
311
+ }
290
312
  async function fetchWithRefresh(url, init, baseHeaders, isRetry) {
291
313
  const adapter2 = getRegisteredAuthAdapter();
292
- await _optionalChain([adapter2, 'optionalAccess', _22 => _22.beforeRequest, 'optionalCall', _23 => _23()]);
314
+ await _optionalChain([adapter2, 'optionalAccess', _24 => _24.beforeRequest, 'optionalCall', _25 => _25()]);
293
315
  const { url: authedUrl, headers } = applyProxyAuth(url, { ...baseHeaders });
294
- if (_optionalChain([adapter2, 'optionalAccess', _24 => _24.getHeaders])) {
316
+ if (_optionalChain([adapter2, 'optionalAccess', _26 => _26.getHeaders])) {
295
317
  for (const [k, v] of Object.entries(adapter2.getHeaders())) {
296
318
  if (v !== void 0) headers[k] = v;
297
319
  }
298
320
  }
299
- const credentials = _nullishCoalesce(_nullishCoalesce(_optionalChain([adapter2, 'optionalAccess', _25 => _25.credentials]), () => ( init.credentials)), () => ( "same-origin"));
321
+ const credentials = _nullishCoalesce(_nullishCoalesce(_optionalChain([adapter2, 'optionalAccess', _27 => _27.credentials]), () => ( init.credentials)), () => ( "same-origin"));
300
322
  const response = await fetch(authedUrl, {
301
323
  ...init,
302
324
  headers,
@@ -307,11 +329,13 @@ async function fetchWithRefresh(url, init, baseHeaders, isRetry) {
307
329
  // `SameSite=None` must be configured server-side for that to work).
308
330
  credentials
309
331
  });
310
- await _optionalChain([adapter2, 'optionalAccess', _26 => _26.onResponse, 'optionalCall', _27 => _27(response)]);
311
- if (response.status === 401 && !isRetry && _optionalChain([adapter2, 'optionalAccess', _28 => _28.refresh])) {
332
+ await _optionalChain([adapter2, 'optionalAccess', _28 => _28.onResponse, 'optionalCall', _29 => _29(response)]);
333
+ if (response.status === 401 && !isRetry && _optionalChain([adapter2, 'optionalAccess', _30 => _30.refresh])) {
312
334
  const refreshed = await dedupedRefresh();
313
335
  if (refreshed) {
314
- return fetchWithRefresh(url, init, baseHeaders, true);
336
+ const retried = await fetchWithRefresh(url, init, baseHeaders, true);
337
+ answersAfterRefresh.add(retried);
338
+ return retried;
315
339
  }
316
340
  }
317
341
  return response;
@@ -332,7 +356,7 @@ function assertSameOrigin(url) {
332
356
  );
333
357
  }
334
358
  if (target.origin !== pageOrigin) {
335
- if (_optionalChain([getRegisteredAuthAdapter, 'call', _29 => _29(), 'optionalAccess', _30 => _30.allowedOrigins, 'optionalAccess', _31 => _31.includes, 'call', _32 => _32(target.origin)])) {
359
+ if (_optionalChain([getRegisteredAuthAdapter, 'call', _31 => _31(), 'optionalAccess', _32 => _32.allowedOrigins, 'optionalAccess', _33 => _33.includes, 'call', _34 => _34(target.origin)])) {
336
360
  return;
337
361
  }
338
362
  if (process.env.NODE_ENV !== "production") {
@@ -347,6 +371,195 @@ function assertSameOrigin(url) {
347
371
  }
348
372
  }
349
373
 
374
+ // src/hooks/use-authed-asset-src.ts
375
+
376
+ var RELEASE_DELAY_MS = 6e4;
377
+ var IDLE = { status: "idle" };
378
+ var AssetResponseError = class extends Error {
379
+ constructor(response) {
380
+ super(`asset fetch failed: ${response.status}`);
381
+ this.status = response.status;
382
+ this.afterRefresh = answeredAfterRefresh(response);
383
+ }
384
+ };
385
+ var entries = /* @__PURE__ */ new Map();
386
+ var listeners2 = /* @__PURE__ */ new Set();
387
+ var cacheGeneration = 0;
388
+ var notifyScheduled = false;
389
+ var detachSources = null;
390
+ function notify() {
391
+ if (notifyScheduled) return;
392
+ notifyScheduled = true;
393
+ queueMicrotask(() => {
394
+ notifyScheduled = false;
395
+ for (const listener of [...listeners2]) listener();
396
+ });
397
+ }
398
+ function settle(url, entry, generation, state) {
399
+ const current = entries.get(url);
400
+ if (generation !== cacheGeneration || current !== entry) return false;
401
+ current.state = state;
402
+ notify();
403
+ return true;
404
+ }
405
+ function due(state, trigger) {
406
+ if (state.status === "idle") return true;
407
+ if (state.status !== "failed") return false;
408
+ switch (trigger) {
409
+ case "mount":
410
+ return true;
411
+ case "credential":
412
+ return state.retryOn !== "remount";
413
+ case "online":
414
+ return state.retryOn === "credential-or-online";
415
+ default:
416
+ return false;
417
+ }
418
+ }
419
+ function retryOnFor(error) {
420
+ if (error instanceof TypeError) return "credential-or-online";
421
+ if (error instanceof AssetResponseError && error.status === 401 && !error.afterRefresh) return "credential";
422
+ return "remount";
423
+ }
424
+ function kick(url, trigger) {
425
+ const entry = entries.get(url);
426
+ if (!entry || !due(entry.state, trigger) || assetLoadMode(url) !== "bearer") return;
427
+ const generation = cacheGeneration;
428
+ settle(url, entry, generation, { status: "loading", afterFailure: entry.state.status === "failed" });
429
+ Promise.resolve().then(() => embedAuthedFetch(url, { headers: { Accept: entry.accept } })).then(async (response) => {
430
+ if (!response.ok || /^\s*text\/html\b/i.test(_nullishCoalesce(response.headers.get("Content-Type"), () => ( "")))) {
431
+ throw new AssetResponseError(response);
432
+ }
433
+ return URL.createObjectURL(await response.blob());
434
+ }).then(
435
+ (blobUrl) => {
436
+ if (!settle(url, entry, generation, { status: "ready", blobUrl })) URL.revokeObjectURL(blobUrl);
437
+ },
438
+ (error) => {
439
+ settle(url, entry, generation, { status: "failed", retryOn: retryOnFor(error) });
440
+ }
441
+ );
442
+ }
443
+ function sweep(trigger) {
444
+ for (const [url, entry] of entries) if (entry.refs > 0) kick(url, trigger);
445
+ notify();
446
+ }
447
+ function onCredentialChange() {
448
+ sweep("credential");
449
+ }
450
+ function onOnline() {
451
+ sweep("online");
452
+ }
453
+ function attachSources() {
454
+ let detachCredential = subscribeEmbedCredentialChange(onCredentialChange);
455
+ const detachAdapter = subscribeRegisteredAdapter(() => {
456
+ detachCredential();
457
+ detachCredential = subscribeEmbedCredentialChange(onCredentialChange);
458
+ onCredentialChange();
459
+ });
460
+ window.addEventListener("online", onOnline);
461
+ return () => {
462
+ detachCredential();
463
+ detachAdapter();
464
+ window.removeEventListener("online", onOnline);
465
+ };
466
+ }
467
+ function subscribeNothing() {
468
+ return () => {
469
+ };
470
+ }
471
+ function subscribe(listener) {
472
+ listeners2.add(listener);
473
+ _nullishCoalesce(detachSources, () => ( (detachSources = attachSources())));
474
+ return () => {
475
+ listeners2.delete(listener);
476
+ if (listeners2.size === 0 && detachSources) {
477
+ detachSources();
478
+ detachSources = null;
479
+ }
480
+ };
481
+ }
482
+ function acquire(url, accept) {
483
+ let entry = entries.get(url);
484
+ if (!entry) {
485
+ entry = { state: IDLE, accept, refs: 0, releaseTimer: void 0 };
486
+ entries.set(url, entry);
487
+ }
488
+ clearTimeout(entry.releaseTimer);
489
+ entry.releaseTimer = void 0;
490
+ entry.refs++;
491
+ kick(url, entry.refs === 1 ? "mount" : "join");
492
+ }
493
+ function release(url) {
494
+ const entry = entries.get(url);
495
+ if (!entry) return;
496
+ entry.refs = Math.max(0, entry.refs - 1);
497
+ if (entry.refs > 0) return;
498
+ clearTimeout(entry.releaseTimer);
499
+ entry.releaseTimer = setTimeout(() => {
500
+ if (entries.get(url) !== entry || entry.refs > 0) return;
501
+ if (entry.state.status === "ready") URL.revokeObjectURL(entry.state.blobUrl);
502
+ entries.delete(url);
503
+ }, RELEASE_DELAY_MS);
504
+ }
505
+ function clearAuthedAssetCache() {
506
+ cacheGeneration++;
507
+ for (const [url, entry] of entries) {
508
+ if (entry.state.status === "ready") URL.revokeObjectURL(entry.state.blobUrl);
509
+ clearTimeout(entry.releaseTimer);
510
+ entry.releaseTimer = void 0;
511
+ if (entry.refs > 0) entry.state = IDLE;
512
+ else entries.delete(url);
513
+ }
514
+ notify();
515
+ }
516
+ var NO_ASSET = Object.freeze({ src: void 0, url: void 0, status: "native" });
517
+ function readAsset(src) {
518
+ if (!src) return NO_ASSET;
519
+ const url = resolveAssetUrl(src);
520
+ const mode = assetLoadMode(url);
521
+ if (mode === "native") return { src: url, url, status: "native" };
522
+ const state = mode === "bearer" ? _optionalChain([entries, 'access', _35 => _35.get, 'call', _36 => _36(url), 'optionalAccess', _37 => _37.state]) : void 0;
523
+ if (_optionalChain([state, 'optionalAccess', _38 => _38.status]) === "ready") return { src: state.blobUrl, url, status: "ready" };
524
+ if (_optionalChain([state, 'optionalAccess', _39 => _39.status]) === "failed" || _optionalChain([state, 'optionalAccess', _40 => _40.status]) === "loading" && state.afterFailure) {
525
+ return { src: void 0, url, status: "failed" };
526
+ }
527
+ return { src: void 0, url, status: "pending" };
528
+ }
529
+ function encode(asset) {
530
+ return JSON.stringify([asset.status, _nullishCoalesce(asset.url, () => ( null)), _nullishCoalesce(asset.src, () => ( null))]);
531
+ }
532
+ function decode(snapshot2) {
533
+ const [status, url, src] = JSON.parse(snapshot2);
534
+ return { status, url: _nullishCoalesce(url, () => ( void 0)), src: _nullishCoalesce(src, () => ( void 0)) };
535
+ }
536
+ function useAuthedAsset(src, accept = "*/*") {
537
+ const snapshot2 = _react.useSyncExternalStore.call(void 0,
538
+ src ? subscribe : subscribeNothing,
539
+ () => encode(readAsset(src)),
540
+ // The server has no adapter: it draws the URL as given, and the client takes over after hydration.
541
+ () => encode(src ? { src, url: src, status: "native" } : NO_ASSET)
542
+ );
543
+ const asset = decode(snapshot2);
544
+ const tracked = asset.status === "native" ? void 0 : asset.url;
545
+ useIsomorphicLayoutEffect(() => {
546
+ if (!tracked) return void 0;
547
+ acquire(tracked, accept);
548
+ return () => release(tracked);
549
+ }, [tracked, accept]);
550
+ const waiting = tracked !== void 0 && asset.status === "pending";
551
+ _react.useEffect.call(void 0, () => {
552
+ if (waiting) kick(tracked, "join");
553
+ });
554
+ return asset;
555
+ }
556
+ function useAuthedAssetSrc(src, accept = "*/*") {
557
+ return useAuthedAsset(src, accept).src;
558
+ }
559
+
560
+
561
+
562
+
350
563
 
351
564
 
352
565
 
@@ -366,4 +579,4 @@ function assertSameOrigin(url) {
366
579
 
367
580
 
368
581
 
369
- exports.createLocalStorageAdapter = createLocalStorageAdapter; exports.SERVER_APP_ORIGINS = SERVER_APP_ORIGINS; exports.readAppOrigins = readAppOrigins; exports.subscribeAppOrigins = subscribeAppOrigins; exports.isAppOriginUrl = isAppOriginUrl; exports.absoluteHttpUrl = absoluteHttpUrl; exports.getAppType = getAppType; exports.EMBED_PROXY_OPTIONAL_HEADERS = EMBED_PROXY_OPTIONAL_HEADERS; exports.getEmbedProxyAuth = getEmbedProxyAuth; exports.getPersistedProxyEmail = getPersistedProxyEmail; exports.setEmbedProxyAuth = setEmbedProxyAuth; exports.clearEmbedProxyAuth = clearEmbedProxyAuth; exports.applyProxyAuth = applyProxyAuth; exports.setEmbedAuthAdapter = setEmbedAuthAdapter; exports.hasEmbedAuthAdapter = hasEmbedAuthAdapter; exports.subscribeEmbedCredentialChange = subscribeEmbedCredentialChange; exports.needsBearerAssetFetch = needsBearerAssetFetch; exports.embedAuthedFetch = embedAuthedFetch;
582
+ exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect; exports.SERVER_APP_ORIGINS = SERVER_APP_ORIGINS; exports.readAppOrigins = readAppOrigins; exports.subscribeAppOrigins = subscribeAppOrigins; exports.isAppOriginUrl = isAppOriginUrl; exports.absoluteHttpUrl = absoluteHttpUrl; exports.getAppType = getAppType; exports.createLocalStorageAdapter = createLocalStorageAdapter; exports.EMBED_PROXY_OPTIONAL_HEADERS = EMBED_PROXY_OPTIONAL_HEADERS; exports.getEmbedProxyAuth = getEmbedProxyAuth; exports.getPersistedProxyEmail = getPersistedProxyEmail; exports.setEmbedProxyAuth = setEmbedProxyAuth; exports.clearEmbedProxyAuth = clearEmbedProxyAuth; exports.applyProxyAuth = applyProxyAuth; exports.setEmbedAuthAdapter = setEmbedAuthAdapter; exports.hasEmbedAuthAdapter = hasEmbedAuthAdapter; exports.subscribeEmbedCredentialChange = subscribeEmbedCredentialChange; exports.embedAuthedFetch = embedAuthedFetch; exports.clearAuthedAssetCache = clearAuthedAssetCache; exports.useAuthedAsset = useAuthedAsset; exports.useAuthedAssetSrc = useAuthedAssetSrc;
@@ -30,7 +30,7 @@ var _chunk7AAW6L5Ucjs = require('./chunk-7AAW6L5U.cjs');
30
30
  var _chunk7WT2C5YYcjs = require('./chunk-7WT2C5YY.cjs');
31
31
 
32
32
 
33
- var _chunkIGVAPIEWcjs = require('./chunk-IGVAPIEW.cjs');
33
+ var _chunk6C4OR4MZcjs = require('./chunk-6C4OR4MZ.cjs');
34
34
 
35
35
 
36
36
  var _chunkSKI6NKOEcjs = require('./chunk-SKI6NKOE.cjs');
@@ -39,7 +39,7 @@ var _chunkSKI6NKOEcjs = require('./chunk-SKI6NKOE.cjs');
39
39
 
40
40
 
41
41
 
42
- var _chunkW7OFAROYcjs = require('./chunk-W7OFAROY.cjs');
42
+ var _chunkYSXVRTGTcjs = require('./chunk-YSXVRTGT.cjs');
43
43
 
44
44
 
45
45
 
@@ -47,17 +47,17 @@ var _chunkW7OFAROYcjs = require('./chunk-W7OFAROY.cjs');
47
47
 
48
48
 
49
49
 
50
- var _chunkSSKMGH5Ocjs = require('./chunk-SSKMGH5O.cjs');
50
+ var _chunkDXVGGWLGcjs = require('./chunk-DXVGGWLG.cjs');
51
51
 
52
52
 
53
53
  var _chunkRUHKTWGBcjs = require('./chunk-RUHKTWGB.cjs');
54
54
 
55
55
 
56
56
 
57
- var _chunkKKFDRCQFcjs = require('./chunk-KKFDRCQF.cjs');
57
+ var _chunkRY7INTYUcjs = require('./chunk-RY7INTYU.cjs');
58
58
 
59
59
 
60
- var _chunkGG466XFQcjs = require('./chunk-GG466XFQ.cjs');
60
+ var _chunk6DMH4GXNcjs = require('./chunk-6DMH4GXN.cjs');
61
61
 
62
62
 
63
63
  var _chunkVCFQHPOOcjs = require('./chunk-VCFQHPOO.cjs');
@@ -94,12 +94,12 @@ function formatTicketRelativeTime(iso) {
94
94
  if (diffMin < 60) return `${diffMin} min ago`;
95
95
  const diffHours = Math.floor(diffMin / 60);
96
96
  if (diffHours < 24) return diffHours === 1 ? "1 hour ago" : `${diffHours} hours ago`;
97
- return _chunkW7OFAROYcjs.formatDateWithTimezone.call(void 0, date, _chunkW7OFAROYcjs.VIEWER_TIMEZONE, "numeric", { viewerLocale: true });
97
+ return _chunkYSXVRTGTcjs.formatDateWithTimezone.call(void 0, date, _chunkYSXVRTGTcjs.VIEWER_TIMEZONE, "numeric", { viewerLocale: true });
98
98
  }
99
99
  function formatTicketFullTimestamp(iso) {
100
- return _chunkW7OFAROYcjs.formatDateWithTimezone.call(void 0,
100
+ return _chunkYSXVRTGTcjs.formatDateWithTimezone.call(void 0,
101
101
  iso,
102
- _chunkW7OFAROYcjs.VIEWER_TIMEZONE,
102
+ _chunkYSXVRTGTcjs.VIEWER_TIMEZONE,
103
103
  { year: "numeric", month: "2-digit", day: "2-digit", hour: "numeric", minute: "2-digit" },
104
104
  { viewerLocale: true }
105
105
  );
@@ -128,7 +128,7 @@ function formatRelativeTimeFrom(timestamp, now) {
128
128
  const weeks = Math.floor(diffInDays / 7);
129
129
  return `${weeks}w ago`;
130
130
  }
131
- return _chunkW7OFAROYcjs.formatDateWithTimezone.call(void 0, targetTime, null, {
131
+ return _chunkYSXVRTGTcjs.formatDateWithTimezone.call(void 0, targetTime, null, {
132
132
  month: "short",
133
133
  day: "numeric",
134
134
  year: targetTime.getUTCFullYear() !== now.getUTCFullYear() ? "numeric" : void 0
@@ -140,7 +140,7 @@ function formatAbsoluteDate(timestamp, options = {}) {
140
140
  console.warn("\u26A0\uFE0F Invalid timestamp in formatAbsoluteDate:", timestamp);
141
141
  return "Invalid date";
142
142
  }
143
- return _chunkW7OFAROYcjs.formatDateWithTimezone.call(void 0, targetTime, _nullishCoalesce(options.timeZone, () => ( null)), {
143
+ return _chunkYSXVRTGTcjs.formatDateWithTimezone.call(void 0, targetTime, _nullishCoalesce(options.timeZone, () => ( null)), {
144
144
  year: "numeric",
145
145
  month: "short",
146
146
  day: "numeric",
@@ -153,7 +153,7 @@ function formatDateTime(timestamp, options = {}) {
153
153
  console.warn("\u26A0\uFE0F Invalid timestamp in formatDateTime:", timestamp);
154
154
  return "Invalid date";
155
155
  }
156
- return _chunkW7OFAROYcjs.formatDateWithTimezone.call(void 0, targetTime, _nullishCoalesce(options.timeZone, () => ( null)), {
156
+ return _chunkYSXVRTGTcjs.formatDateWithTimezone.call(void 0, targetTime, _nullishCoalesce(options.timeZone, () => ( null)), {
157
157
  ...ZONED_DATE_FIELDS_MEDIUM_DATETIME,
158
158
  ...options
159
159
  });
@@ -312,13 +312,13 @@ function TicketStatusTag({
312
312
  const config = getTicketStatusConfig(status);
313
313
  const customStyle = color ? {
314
314
  "--tag-bg": color,
315
- "--tag-bg-hover": _chunkSSKMGH5Ocjs.deriveHoverColor.call(void 0, color),
316
- "--tag-bg-active": _chunkSSKMGH5Ocjs.deriveActiveColor.call(void 0, color),
317
- color: _chunkSSKMGH5Ocjs.getReadableTextColor.call(void 0, color)
315
+ "--tag-bg-hover": _chunkDXVGGWLGcjs.deriveHoverColor.call(void 0, color),
316
+ "--tag-bg-active": _chunkDXVGGWLGcjs.deriveActiveColor.call(void 0, color),
317
+ color: _chunkDXVGGWLGcjs.getReadableTextColor.call(void 0, color)
318
318
  } : void 0;
319
319
  const customColorClasses = color ? "bg-[var(--tag-bg)] hover:bg-[var(--tag-bg-hover)] active:bg-[var(--tag-bg-active)]" : void 0;
320
320
  const tag = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
321
- _chunkW7OFAROYcjs.Tag,
321
+ _chunkYSXVRTGTcjs.Tag,
322
322
  {
323
323
  loading,
324
324
  label: _nullishCoalesce(label, () => ( config.label)),
@@ -371,7 +371,7 @@ function TicketStatusTag({
371
371
  className: _chunk63A4GZMBcjs.cn.call(void 0,
372
372
  // The tag's variant styling, split into a label section and a separated chevron section (the common
373
373
  // dropdown-button seam). Custom color: bg/hover/active from the CSS vars set above.
374
- _chunkW7OFAROYcjs.tagVariants.call(void 0, { variant: _nullishCoalesce(variant, () => ( config.variant)) }),
374
+ _chunkYSXVRTGTcjs.tagVariants.call(void 0, { variant: _nullishCoalesce(variant, () => ( config.variant)) }),
375
375
  "items-stretch justify-start gap-0 overflow-hidden p-0",
376
376
  customColorClasses
377
377
  ),
@@ -1019,7 +1019,7 @@ function ToolCallRow({
1019
1019
  const hasExpandableBody = args.length > 0 || reviewRows || typeof result === "string" && result.length > 0;
1020
1020
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col items-start border-b border-ods-border bg-ods-card last:border-b-0", children: [
1021
1021
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkFCZAUK4Dcjs.Button, { variant: "row", type: "button", onClick: onToggle, "aria-expanded": expanded, className: "rounded-none", children: [
1022
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-5 w-5 shrink-0 items-center justify-center text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIGVAPIEWcjs.ToolIcon, { toolType, size: 16 }) }),
1022
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-5 w-5 shrink-0 items-center justify-center text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6C4OR4MZcjs.ToolIcon, { toolType, size: 16 }) }),
1023
1023
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1024
1024
  "div",
1025
1025
  {
@@ -1269,13 +1269,13 @@ ApprovalBatchMessage.displayName = "ApprovalBatchMessage";
1269
1269
  // src/components/agent-mark.tsx
1270
1270
 
1271
1271
 
1272
- function AgentMark({ agent, className = "", color = _chunkSSKMGH5Ocjs.AGENT_GLYPH_COLOR }) {
1273
- const identity = _chunkSSKMGH5Ocjs.useAgentIdentityIcon.call(void 0, agent);
1272
+ function AgentMark({ agent, className = "", color = _chunkDXVGGWLGcjs.AGENT_GLYPH_COLOR }) {
1273
+ const identity = _chunkDXVGGWLGcjs.useAgentIdentityIcon.call(void 0, agent);
1274
1274
  if (_optionalChain([identity, 'optionalAccess', _16 => _16.url])) {
1275
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", className: _chunk63A4GZMBcjs.cn.call(void 0, "relative inline-block overflow-hidden rounded-full", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGG466XFQcjs.next_image_default, { src: identity.url, alt: "", fill: true, sizes: _chunkKKFDRCQFcjs.fixedImageSlot.call(void 0, "mark"), className: _chunkSSKMGH5Ocjs.AGENT_PICTURE_CLASS }) });
1275
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", className: _chunk63A4GZMBcjs.cn.call(void 0, "relative inline-block overflow-hidden rounded-full", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6DMH4GXNcjs.next_image_default, { src: identity.url, alt: "", fill: true, sizes: _chunkRY7INTYUcjs.fixedImageSlot.call(void 0, "mark"), className: _chunkDXVGGWLGcjs.AGENT_PICTURE_CLASS }) });
1276
1276
  }
1277
1277
  if (_optionalChain([identity, 'optionalAccess', _17 => _17.name])) {
1278
- return _react.createElement.call(void 0, _chunkKKFDRCQFcjs.resolveIcon.call(void 0, identity.name), {
1278
+ return _react.createElement.call(void 0, _chunkRY7INTYUcjs.resolveIcon.call(void 0, identity.name), {
1279
1279
  className,
1280
1280
  "aria-hidden": true,
1281
1281
  color,
@@ -0,0 +1,62 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+
3
+
4
+
5
+
6
+
7
+
8
+ var _chunkGK577ZLJcjs = require('./chunk-GK577ZLJ.cjs');
9
+
10
+ // src/hooks/ui/use-content-breakpoint.ts
11
+ var _react = require('react');
12
+ var CONTENT_BREAKPOINTS = {
13
+ md: _chunkGK577ZLJcjs.LAYOUT_STEPS.md.content,
14
+ lg: _chunkGK577ZLJcjs.LAYOUT_STEPS.lg.content,
15
+ xl: _chunkGK577ZLJcjs.LAYOUT_STEPS.xl.content
16
+ };
17
+ function contentStepFor(width) {
18
+ return [CONTENT_BREAKPOINTS.md, CONTENT_BREAKPOINTS.lg, CONTENT_BREAKPOINTS.xl].filter((step) => width >= step).length;
19
+ }
20
+ var ContentAreaWidthContext = _react.createContext.call(void 0, null);
21
+ function ViewportBreakpoints({ children }) {
22
+ return _react.createElement.call(void 0, ContentAreaWidthContext.Provider, { value: null }, children);
23
+ }
24
+ function contentBreakpointFor(width) {
25
+ if (width >= CONTENT_BREAKPOINTS.lg) return "desktop";
26
+ if (width >= CONTENT_BREAKPOINTS.md) return "tablet";
27
+ return "mobile";
28
+ }
29
+ function useContentBreakpoint() {
30
+ const width = _react.useContext.call(void 0, ContentAreaWidthContext);
31
+ const mdUp = _chunkGK577ZLJcjs.useMdUp.call(void 0, );
32
+ const lgUp = _chunkGK577ZLJcjs.useLgUp.call(void 0, );
33
+ if (width !== null) return contentBreakpointFor(width);
34
+ if (mdUp === void 0) return void 0;
35
+ if (lgUp) return "desktop";
36
+ return mdUp ? "tablet" : "mobile";
37
+ }
38
+ function useContentMdUp() {
39
+ const breakpoint = useContentBreakpoint();
40
+ return breakpoint === void 0 ? void 0 : breakpoint !== "mobile";
41
+ }
42
+ function useContentLgUp() {
43
+ const breakpoint = useContentBreakpoint();
44
+ return breakpoint === void 0 ? void 0 : breakpoint === "desktop";
45
+ }
46
+ function useContentXlUp() {
47
+ const width = _react.useContext.call(void 0, ContentAreaWidthContext);
48
+ const viewportXlUp = _chunkGK577ZLJcjs.useMediaQuery.call(void 0, _chunkGK577ZLJcjs.breakpoints.xl);
49
+ return width === null ? viewportXlUp : width >= CONTENT_BREAKPOINTS.xl;
50
+ }
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+ exports.CONTENT_BREAKPOINTS = CONTENT_BREAKPOINTS; exports.contentStepFor = contentStepFor; exports.ContentAreaWidthContext = ContentAreaWidthContext; exports.ViewportBreakpoints = ViewportBreakpoints; exports.contentBreakpointFor = contentBreakpointFor; exports.useContentBreakpoint = useContentBreakpoint; exports.useContentMdUp = useContentMdUp; exports.useContentLgUp = useContentLgUp; exports.useContentXlUp = useContentXlUp;
@@ -1,14 +1,14 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }"use client";
2
2
 
3
3
 
4
- var _chunkNMWLXHFHcjs = require('./chunk-NMWLXHFH.cjs');
4
+ var _chunk3GJ75OULcjs = require('./chunk-3GJ75OUL.cjs');
5
5
 
6
6
 
7
7
 
8
- var _chunkW7OFAROYcjs = require('./chunk-W7OFAROY.cjs');
8
+ var _chunkYSXVRTGTcjs = require('./chunk-YSXVRTGT.cjs');
9
9
 
10
10
 
11
- var _chunkGG466XFQcjs = require('./chunk-GG466XFQ.cjs');
11
+ var _chunk6DMH4GXNcjs = require('./chunk-6DMH4GXN.cjs');
12
12
 
13
13
 
14
14
 
@@ -38,7 +38,7 @@ var NAME_CLASS = "text-ods-text-primary text-h5";
38
38
  var JOB_TITLE_CLASS = "mt-0.5 font-body text-ods-text-secondary";
39
39
  var BIO_CLASS = "mt-2 font-body leading-relaxed text-ods-text-secondary";
40
40
  function formatDate(value) {
41
- return _chunkW7OFAROYcjs.formatDateWithTimezone.call(void 0, value, null, "long");
41
+ return _chunkYSXVRTGTcjs.formatDateWithTimezone.call(void 0, value, null, "long");
42
42
  }
43
43
  function ArticleAuthorByline({
44
44
  author,
@@ -52,18 +52,18 @@ function ArticleAuthorByline({
52
52
  proxyImageUrl,
53
53
  className
54
54
  }) {
55
- const proxiedAvatar = _chunkNMWLXHFHcjs.useProxiedImageUrl.call(void 0, avatar, { proxyImageUrl });
55
+ const proxiedAvatar = _chunk3GJ75OULcjs.useProxiedImageUrl.call(void 0, avatar, { proxyImageUrl });
56
56
  const loading = _chunk63A4GZMBcjs.useLoadingScope.call(void 0, );
57
57
  if (loading && !author) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ArticleAuthorBylineSkeleton, { size, className });
58
58
  if (!author) return null;
59
59
  const avatarSizeClass = _chunkPMUCEUFQcjs.AVATAR_SIZE[BYLINE_AVATAR_SIZE[size]];
60
60
  const avatarIconClass = size === "lg" ? "w-8 h-8" : "w-7 h-7";
61
61
  const avatarDim = _chunkPMUCEUFQcjs.AVATAR_SIZE_PX[BYLINE_AVATAR_SIZE[size]];
62
- const formattedBio = _chunkW7OFAROYcjs.formatBioText.call(void 0, _nullishCoalesce(bio, () => ( null)));
62
+ const formattedBio = _chunkYSXVRTGTcjs.formatBioText.call(void 0, _nullishCoalesce(bio, () => ( null)));
63
63
  const dateLabel = publishedAt ? formatDate(publishedAt) : "";
64
64
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk63A4GZMBcjs.cn.call(void 0, BYLINE_FRAME_CLASS, className), children: [
65
65
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-shrink-0", children: avatar ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
66
- _chunkGG466XFQcjs.next_image_default,
66
+ _chunk6DMH4GXNcjs.next_image_default,
67
67
  {
68
68
  src: proxiedAvatar || avatar,
69
69
  alt: author,
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkGI3MMBP3cjs = require('./chunk-GI3MMBP3.cjs');
5
+ var _chunkSQ7YHWEPcjs = require('./chunk-SQ7YHWEP.cjs');
6
6
 
7
7
  // src/utils/common.ts
8
8
  var _clsx = require('clsx');
@@ -69,9 +69,9 @@ var _reactquery = require('@tanstack/react-query');
69
69
 
70
70
  // src/utils/embed-content-fetch.ts
71
71
  var contentFetch = (input, init) => {
72
- if (!_chunkGI3MMBP3cjs.hasEmbedAuthAdapter.call(void 0, )) return fetch(input, init);
72
+ if (!_chunkSQ7YHWEPcjs.hasEmbedAuthAdapter.call(void 0, )) return fetch(input, init);
73
73
  const url = typeof input === "string" ? input : input instanceof URL ? input.href : input.url;
74
- return _chunkGI3MMBP3cjs.embedAuthedFetch.call(void 0, url, init);
74
+ return _chunkSQ7YHWEPcjs.embedAuthedFetch.call(void 0, url, init);
75
75
  };
76
76
 
77
77
  // src/hooks/use-agent-identities.ts
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
2
 
3
3
 
4
- var _chunk6GWRPW6Bcjs = require('./chunk-6GWRPW6B.cjs');
4
+ var _chunk5NK3FUHYcjs = require('./chunk-5NK3FUHY.cjs');
5
5
 
6
6
 
7
7
 
@@ -118,7 +118,7 @@ function PersistentPaginationWrapper({
118
118
  },
119
119
  "aria-hidden": isPaginationDisabled,
120
120
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
121
- _chunk6GWRPW6Bcjs.UnifiedPagination,
121
+ _chunk5NK3FUHYcjs.UnifiedPagination,
122
122
  {
123
123
  currentPage: displayCurrentPage,
124
124
  totalPages: displayTotalPages,